summaryrefslogtreecommitdiff
path: root/TAO/tests/IDL_Test/array.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tests/IDL_Test/array.idl')
-rw-r--r--TAO/tests/IDL_Test/array.idl168
1 files changed, 168 insertions, 0 deletions
diff --git a/TAO/tests/IDL_Test/array.idl b/TAO/tests/IDL_Test/array.idl
new file mode 100644
index 00000000000..f39886a1279
--- /dev/null
+++ b/TAO/tests/IDL_Test/array.idl
@@ -0,0 +1,168 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/IDL_Test
+//
+// = FILENAME
+// array.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.
+//
+// ============================================================================
+
+// Multidimensional arrays - constant vigilance.
+typedef short TwoDArray[64][63];
+
+typedef short ThreeDArray[64][63][62];
+
+typedef short FourDArray[64][63][62][61];
+
+// This problem is a combination of two others
+// that have long been fixed, but you never know...
+
+typedef long inside_array[5];
+
+struct wrap
+ {
+ inside_array member;
+ };
+
+typedef wrap outside_array[10];
+
+
+// Once a problem with expressions in the brackets,
+// as well as the typedef'd/anonymous thing.
+
+interface tdef
+{
+ const short byteslen = 12;
+ typedef octet Bytes[byteslen + 1];
+
+ struct bytes_or_longs
+ {
+ Bytes the_bytes; // typedef'd
+ long Longs[byteslen]; // anonymous
+ };
+};
+
+// To test that all the octet arrays build and link as
+// unique types.
+module ABCModule
+{
+ struct RmtPhysicalInfo
+ {
+ octet rmtNodeId[22];
+ octet rmtDetails[22];
+ };
+
+ struct bbbBubBubBubBaby
+ {
+ octet rmtNodeId[22];
+ octet rmtDetails[22];
+ };
+};
+
+typedef octet oa1[22];
+typedef octet oa2[22];
+
+// Test generation of Arg_Traits specialization for identical
+// arrays.
+interface array_args
+{
+ void all_arrays (in oa1 arg1,
+ in oa2 arg2);
+};
+
+// This should generate unique _var and _forany types, but
+// also generate TAO_String_Manager as the element type for both.
+module string_array
+{
+ typedef string ArrayOfString[15];
+ typedef string MyString;
+ typedef MyString ArrayOfMyString[15];
+};
+
+// Checks code generation for arrays and typedefs of arrays
+// when they are not declared globally or inside a module.
+interface testdata
+{
+ typedef char Arraychar[2];
+ typedef Arraychar ArrayDeChar;
+
+ struct struct2
+ {
+ Arraychar field_1;
+ ArrayDeChar field_2;
+ };
+
+ typedef sequence<Arraychar> ArraycharList;
+ typedef sequence<Arraychar,10> BdArraycharList;
+
+ typedef sequence<ArrayDeChar> ArrayDeCharList;
+ typedef sequence<ArrayDeChar,10> BdArrayDeCharList;
+};
+
+// Tests for explicit conversion of slice pointer to the
+// corresponding forany class before using CDR or Any
+// operators. This is required because myvec2_slice and
+// myvec3_slice are the same type, so implicit conversion
+// from myvec2_slice (in the case below) could go to
+// myvec2_forany or myvec3_forany.
+module arraytest
+{
+ typedef string myvec2[2];
+ typedef string myvec3[3];
+
+ interface MyTest
+ {
+ void test_method (out myvec2 mystring);
+ };
+};
+
+// Caught the has_constructor() flag not being passed from the
+// element type to the array in the AST.
+module bug_2126
+{
+ union FirstUnion switch (boolean)
+ {
+ case TRUE: long first_union_foo;
+ case FALSE: long first_union_bar;
+ };
+
+ typedef FirstUnion FirstUnionArray[2];
+
+ struct MyStruct
+ {
+ FirstUnionArray my_struct_foo;
+ };
+
+ union SecondUnion switch (boolean)
+ {
+ case TRUE: MyStruct second_union_struct_member;
+ case FALSE: long wibble;
+ };
+
+ typedef FirstUnion BdFirstUnionArray[2];
+
+ struct BdMyStruct
+ {
+ BdFirstUnionArray my_struct_foo;
+ };
+
+ union BdSecondUnion switch (boolean)
+ {
+ case TRUE: BdMyStruct second_union_struct_member;
+ case FALSE: long wibble;
+ };
+};
+
+