diff options
Diffstat (limited to 'TAO/tests/IDL_Test/array.idl')
-rw-r--r-- | TAO/tests/IDL_Test/array.idl | 168 |
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; + }; +}; + + |