summaryrefslogtreecommitdiff
path: root/TAO/tests/IDL_Test/interface.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tests/IDL_Test/interface.idl')
-rw-r--r--TAO/tests/IDL_Test/interface.idl193
1 files changed, 193 insertions, 0 deletions
diff --git a/TAO/tests/IDL_Test/interface.idl b/TAO/tests/IDL_Test/interface.idl
new file mode 100644
index 00000000000..966a1fd80b9
--- /dev/null
+++ b/TAO/tests/IDL_Test/interface.idl
@@ -0,0 +1,193 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/IDL_Test
+//
+// = FILENAME
+// interface.idl
+//
+// = DESCRIPTION
+// This file contains examples of IDL code that has
+// caused problems in the past for the TAO IDL
+// compiler. This test is to make sure the problems
+// stay fixed.
+//
+// = AUTHORS
+// Jeff Parsons <parsons@cs.wustl.edu> and TAO users.
+//
+// ============================================================================
+
+
+
+// Used to be a problem in the get() and set()
+// generated code.
+
+interface Base
+{
+ attribute long value;
+};
+
+interface Derived : Base
+{
+};
+
+// The fact that the interface begins with 'foo' was causing
+// problems. The IDL compiler thought the interface was in
+// foo's scope.
+module foo_mod
+{
+ struct date
+ {
+ short month;
+ };
+};
+
+interface foostep
+{
+ foo_mod::date getDate ();
+};
+
+// Only operations or attributes should cause a clash
+// in this type of situation.
+interface mother
+{
+ struct member
+ {
+ long val;
+ };
+};
+
+interface father
+{
+ struct member
+ {
+ short ident;
+ };
+};
+
+interface child : mother, father
+{
+};
+
+interface try
+{
+};
+
+// Definition below in file.
+interface later;
+
+typedef boolean Bool;
+
+interface later_user
+{
+ later op (in later inarg,
+ inout later inoutarg,
+ out later outarg);
+
+
+ // Not a clash with the C++ keyword because they are case sensitive,
+ // but the Arg_Traits<> specialization parameter (ACE_InputCDR::to_boolean)
+ // needs the unaliased type name to work.
+ void op2 (in Bool inarg2);
+};
+
+struct later_holder
+{
+ later member;
+};
+
+interface later {};
+
+// Previously, we could have found v if it
+// was inherited into Client, but not in
+// the case below, where it is inherited into
+// somewhere other than the scope where the
+// lookup starts.
+
+interface Begin
+{
+ typedef long Value;
+};
+
+interface Middle : Begin
+{
+};
+
+interface End : Middle
+{
+};
+
+interface Client
+{
+ attribute End::Value v;
+};
+
+// Tests arg_traits visitor for unaliased bounded (w)string
+// attributes.
+interface AttributeTester
+{
+ attribute string a_su;
+ attribute string<1> a_sb;
+};
+
+// All of the 'recursion' below is legal.
+module ParamMod
+{
+ interface ParameterTester
+ {
+ exception object_excep_type
+ {
+ ParameterTester objref;
+ };
+
+ typedef sequence<ParameterTester> object_seq_type;
+
+ typedef ParameterTester object_array_type[5];
+
+ struct object_struct_type
+ {
+ octet o1;
+ ParameterTester p1;
+ long l1;
+ };
+
+ union object_union_type switch (long)
+ {
+ case 0: string str;
+ case 1: ParameterTester pt;
+ };
+
+ object_seq_type parameter_tester_op (
+ in object_struct_type inarg,
+ inout object_array_type inoutarg,
+ out object_union_type outarg
+ )
+ raises (object_excep_type);
+ };
+};
+
+local interface testlocal
+{
+};
+
+interface A {
+ union U switch(boolean)
+ {
+ case TRUE: A aa;
+ };
+};
+
+module M
+{
+ interface A;
+};
+
+module M
+{
+ interface A;
+
+ interface A {};
+};
+