aaronp-zomg 1.0.2.20080827232412

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. data/History.txt +25 -0
  2. data/Manifest.txt +238 -0
  3. data/README.txt +59 -0
  4. data/Rakefile +43 -0
  5. data/bin/omfg +56 -0
  6. data/lib/scanner.rex +169 -0
  7. data/lib/yacc.y +861 -0
  8. data/lib/zomg.rb +22 -0
  9. data/lib/zomg/idl.rb +14 -0
  10. data/lib/zomg/idl/nodes/attribute.rb +15 -0
  11. data/lib/zomg/idl/nodes/binary.rb +19 -0
  12. data/lib/zomg/idl/nodes/constant.rb +15 -0
  13. data/lib/zomg/idl/nodes/interface.rb +13 -0
  14. data/lib/zomg/idl/nodes/interface_header.rb +14 -0
  15. data/lib/zomg/idl/nodes/member.rb +14 -0
  16. data/lib/zomg/idl/nodes/node.rb +54 -0
  17. data/lib/zomg/idl/nodes/operation.rb +17 -0
  18. data/lib/zomg/idl/nodes/parameter.rb +18 -0
  19. data/lib/zomg/idl/nodes/typedef.rb +13 -0
  20. data/lib/zomg/idl/nodes/union.rb +14 -0
  21. data/lib/zomg/idl/parser.rb +54 -0
  22. data/lib/zomg/idl/visitable.rb +15 -0
  23. data/lib/zomg/idl/visitors/duhr.rb +24 -0
  24. data/lib/zomg/idl/visitors/ruby_sexp.rb +204 -0
  25. data/lib/zomg/idl/visitors/sexp.rb +274 -0
  26. data/lib/zomg/version.rb +3 -0
  27. data/test/assets/array/array1.idl +60 -0
  28. data/test/assets/array/array2.idl +38 -0
  29. data/test/assets/array/array3.idl +8 -0
  30. data/test/assets/array/array4.idl +7 -0
  31. data/test/assets/array/array5.idl +80 -0
  32. data/test/assets/attribute/grid_0attribs_2methods.idl +16 -0
  33. data/test/assets/attribute/grid_1ROattribs_1attribs_0methods.idl +19 -0
  34. data/test/assets/attribute/grid_1ROattribs_1attribs_1methods.idl +19 -0
  35. data/test/assets/attribute/grid_1ROattribs_1attribs_2methods.idl +17 -0
  36. data/test/assets/attribute/grid_1ROattribs_1methods.idl +16 -0
  37. data/test/assets/attribute/grid_1ROattribs_2methods.idl +16 -0
  38. data/test/assets/attribute/grid_1attribs_1methods.idl +17 -0
  39. data/test/assets/attribute/grid_1attribs_2methods.idl +17 -0
  40. data/test/assets/attribute/grid_2ROattribs_0methods.idl +16 -0
  41. data/test/assets/attribute/grid_2ROattribs_1methods.idl +16 -0
  42. data/test/assets/attribute/grid_2ROattribs_2methods.idl +16 -0
  43. data/test/assets/attribute/grid_2attribs_0methods.idl +19 -0
  44. data/test/assets/attribute/grid_2attribs_1methods.idl +19 -0
  45. data/test/assets/attribute/grid_2attribs_2methods.idl +19 -0
  46. data/test/assets/comment/c_style_comments.idl +63 -0
  47. data/test/assets/comment/comment1.idl +57 -0
  48. data/test/assets/comment/cpp_style_comments.idl +168 -0
  49. data/test/assets/comment/shortform.idl +0 -0
  50. data/test/assets/complex/TestCodeSets.idl +10 -0
  51. data/test/assets/complex/TestIntfContext.idl +13 -0
  52. data/test/assets/complex/TestIntfLongLong.idl +51 -0
  53. data/test/assets/complex/TestIntfWChar.idl +52 -0
  54. data/test/assets/complex/any1.idl +22 -0
  55. data/test/assets/complex/complex1.idl +495 -0
  56. data/test/assets/complex/complex2.idl +730 -0
  57. data/test/assets/complex/complex3.idl +181 -0
  58. data/test/assets/complex/complex4.idl +181 -0
  59. data/test/assets/complex/interop_wchar.idl +60 -0
  60. data/test/assets/constant/constant1.idl +37 -0
  61. data/test/assets/constant/constant2.idl +29 -0
  62. data/test/assets/constant/constant3.idl +50 -0
  63. data/test/assets/constant/constant4.idl +21 -0
  64. data/test/assets/constant/constant5.idl +65 -0
  65. data/test/assets/constant/constant6.idl +144 -0
  66. data/test/assets/constant/constant7.idl +30 -0
  67. data/test/assets/enum/enum1.idl +13 -0
  68. data/test/assets/exception/TestIntfExceptions.idl +69 -0
  69. data/test/assets/exception/TestIntfExceptionsExt_2_0.idl +34 -0
  70. data/test/assets/exception/TestIntfExceptionsExt_2_3.idl +24 -0
  71. data/test/assets/exception/ex1.idl +6 -0
  72. data/test/assets/exception/ex2.idl +18 -0
  73. data/test/assets/exception/ex3.idl +10 -0
  74. data/test/assets/exception/ex4.idl +20 -0
  75. data/test/assets/exception/sc.idl +0 -0
  76. data/test/assets/exception/simple1.idl +18 -0
  77. data/test/assets/exception/simple2.idl +25 -0
  78. data/test/assets/factory/factory1.idl +77 -0
  79. data/test/assets/factory/objref.idl +25 -0
  80. data/test/assets/forward/forward.idl +15 -0
  81. data/test/assets/forward/forward1.idl +13 -0
  82. data/test/assets/forward/fwd_incl1.idl +6 -0
  83. data/test/assets/forward/fwd_incl2.idl +7 -0
  84. data/test/assets/include/a.idl +23 -0
  85. data/test/assets/include/b.idl +16 -0
  86. data/test/assets/include/employee.idl +12 -0
  87. data/test/assets/include/include1.idl +10 -0
  88. data/test/assets/include/include2.idl +5 -0
  89. data/test/assets/include/manager.idl +10 -0
  90. data/test/assets/include/pragma.idl +41 -0
  91. data/test/assets/include/rookie.idl +13 -0
  92. data/test/assets/include/rookiemanager.idl +15 -0
  93. data/test/assets/include/sample.idl +58 -0
  94. data/test/assets/include/sample_incl.idl +406 -0
  95. data/test/assets/inherit/IDL1.idl +18 -0
  96. data/test/assets/inherit/IDL2.idl +18 -0
  97. data/test/assets/inherit/IDL3.idl +18 -0
  98. data/test/assets/inherit/IDL4.idl +17 -0
  99. data/test/assets/inherit/diamond_inheritance.idl +31 -0
  100. data/test/assets/inherit/inherit.idl +27 -0
  101. data/test/assets/limit/longidentifiers.idl +25 -0
  102. data/test/assets/limit/namelens.idl +26 -0
  103. data/test/assets/limit/tpztest.idl +21 -0
  104. data/test/assets/module/module1.idl +29 -0
  105. data/test/assets/module/module2.idl +34 -0
  106. data/test/assets/module/module3.idl +20 -0
  107. data/test/assets/module/module4.idl +15 -0
  108. data/test/assets/nested/nested1.idl +5 -0
  109. data/test/assets/nested/nested2.idl +11 -0
  110. data/test/assets/operations/Benchmark.idl +331 -0
  111. data/test/assets/operations/CCS.idl +82 -0
  112. data/test/assets/operations/TestIntf.idl +40 -0
  113. data/test/assets/operations/TestIntfBasic.idl +653 -0
  114. data/test/assets/operations/atomic.idl +40 -0
  115. data/test/assets/operations/dif2.idl +48 -0
  116. data/test/assets/operations/interface1.idl +16 -0
  117. data/test/assets/operations/parameters.idl +111 -0
  118. data/test/assets/operations/perf.idl +84 -0
  119. data/test/assets/operations/timer.idl +104 -0
  120. data/test/assets/preprocess/base_for_diamond_inheritance_with_macros.idl +17 -0
  121. data/test/assets/preprocess/basic_macro_marshalling.idl +54 -0
  122. data/test/assets/preprocess/diamond_inheritance_with_macros.idl +74 -0
  123. data/test/assets/preprocess/macro1.idl +52 -0
  124. data/test/assets/preprocess/preprocess1.idl +246 -0
  125. data/test/assets/preprocess/preprocess2.idl +3 -0
  126. data/test/assets/recursion/loop.idl +28 -0
  127. data/test/assets/recursion/recursion1.idl +47 -0
  128. data/test/assets/recursion/recursion2.idl +74 -0
  129. data/test/assets/scenarios/filestat.idl +69 -0
  130. data/test/assets/scenarios/gateway.idl +176 -0
  131. data/test/assets/scenarios/library.idl +20 -0
  132. data/test/assets/scenarios/phone.idl +24 -0
  133. data/test/assets/scenarios/ticketservice.idl +118 -0
  134. data/test/assets/scope/scope01.idl +58 -0
  135. data/test/assets/scope/scope02.idl +25 -0
  136. data/test/assets/scope/scope03.idl +22 -0
  137. data/test/assets/scope/scope04.idl +27 -0
  138. data/test/assets/scope/scope05.idl +30 -0
  139. data/test/assets/scope/scope06.idl +51 -0
  140. data/test/assets/scope/scope07.idl +20 -0
  141. data/test/assets/scope/scope08.idl +88 -0
  142. data/test/assets/scope/scope09.idl +21 -0
  143. data/test/assets/scope/scope10.idl +95 -0
  144. data/test/assets/scope/scope11.idl +62 -0
  145. data/test/assets/scope/scope12.idl +117 -0
  146. data/test/assets/scope/scope13.idl +117 -0
  147. data/test/assets/scope/scope14.idl +117 -0
  148. data/test/assets/scope/scope15.idl +117 -0
  149. data/test/assets/scope/scope16.idl +117 -0
  150. data/test/assets/scope/scope17.idl +117 -0
  151. data/test/assets/scope/scope18.idl +117 -0
  152. data/test/assets/scope/scope19.idl +117 -0
  153. data/test/assets/scope/scope20.idl +215 -0
  154. data/test/assets/scope/scope21.idl +215 -0
  155. data/test/assets/scope/scope22.idl +205 -0
  156. data/test/assets/scope/scope23.idl +261 -0
  157. data/test/assets/scope/scope24.idl +376 -0
  158. data/test/assets/scope/scope25.idl +266 -0
  159. data/test/assets/scope/scope26.idl +180 -0
  160. data/test/assets/scope/scope27.idl +184 -0
  161. data/test/assets/scope/scope28.idl +182 -0
  162. data/test/assets/scope/scope29.idl +182 -0
  163. data/test/assets/scope/scope30.idl +40 -0
  164. data/test/assets/scope/scope31.idl +33 -0
  165. data/test/assets/scope/scope32.idl +37 -0
  166. data/test/assets/scope/scope33.idl +50 -0
  167. data/test/assets/scope/scope34.idl +97 -0
  168. data/test/assets/scope/scope35.idl +72 -0
  169. data/test/assets/scope/scope36.idl +167 -0
  170. data/test/assets/scope/scope37.idl +57 -0
  171. data/test/assets/scope/scope38.idl +38 -0
  172. data/test/assets/scope/scope39.idl +38 -0
  173. data/test/assets/scope/scope40.idl +38 -0
  174. data/test/assets/scope/scope41.idl +24 -0
  175. data/test/assets/scope/scope42.idl +64 -0
  176. data/test/assets/scope/scope43.idl +66 -0
  177. data/test/assets/scope/scope44.idl +52 -0
  178. data/test/assets/sequence/sequence1.idl +24 -0
  179. data/test/assets/sequence/sequence2.idl +9 -0
  180. data/test/assets/simple/basictypes1.idl +80 -0
  181. data/test/assets/simple/basictypes2.idl +197 -0
  182. data/test/assets/simple/basictypes3.idl +23 -0
  183. data/test/assets/simple/basictypes4.idl +73 -0
  184. data/test/assets/simple/basictypes5.idl +29 -0
  185. data/test/assets/simple/basictypes6.idl +63 -0
  186. data/test/assets/simple/simple1.idl +45 -0
  187. data/test/assets/simple/simple2.idl +61 -0
  188. data/test/assets/simple/simple3.idl +36 -0
  189. data/test/assets/string/string1.idl +11 -0
  190. data/test/assets/string/string2.idl +29 -0
  191. data/test/assets/struct/struct1.idl +20 -0
  192. data/test/assets/struct/struct2.idl +21 -0
  193. data/test/assets/struct/struct3.idl +42 -0
  194. data/test/assets/struct/struct4.idl +57 -0
  195. data/test/assets/struct/struct5.idl +71 -0
  196. data/test/assets/typecode/orb.idl +0 -0
  197. data/test/assets/typecode/pseudo.idl +25 -0
  198. data/test/assets/typedef/shorthand_typedef_struct_insideIF.idl +17 -0
  199. data/test/assets/typedef/shorthand_typedef_struct_insideIF_noMO.idl +16 -0
  200. data/test/assets/typedef/shorthand_typedef_struct_insideMO.idl +17 -0
  201. data/test/assets/typedef/shorthand_typedef_struct_outsideMO.idl +17 -0
  202. data/test/assets/typedef/typedef1.idl +8 -0
  203. data/test/assets/typedef/typedef2.idl +22 -0
  204. data/test/assets/typedef/typedef_struct_insideIF.idl +18 -0
  205. data/test/assets/typedef/typedef_struct_insideMO.idl +18 -0
  206. data/test/assets/typedef/typedef_struct_outsideMO.idl +18 -0
  207. data/test/assets/union/union1.idl +31 -0
  208. data/test/assets/union/union2.idl +22 -0
  209. data/test/assets/union/union3.idl +26 -0
  210. data/test/conversions/test_attribute.rb +46 -0
  211. data/test/conversions/test_enum.rb +25 -0
  212. data/test/conversions/test_exception.rb +24 -0
  213. data/test/conversions/test_forward_declaration.rb +22 -0
  214. data/test/conversions/test_interface.rb +30 -0
  215. data/test/conversions/test_module.rb +24 -0
  216. data/test/conversions/test_struct.rb +25 -0
  217. data/test/conversions/test_typedef.rb +22 -0
  218. data/test/conversions/test_union.rb +27 -0
  219. data/test/conversions/test_value_box_dcl.rb +22 -0
  220. data/test/helper.rb +23 -0
  221. data/test/simple/test_basictypes1.rb +87 -0
  222. data/test/simple/test_basictypes2.rb +18 -0
  223. data/test/simple/test_basictypes3.rb +32 -0
  224. data/test/simple/test_basictypes4.rb +25 -0
  225. data/test/simple/test_basictypes5.rb +17 -0
  226. data/test/simple/test_basictypes6.rb +19 -0
  227. data/test/simple/test_simple1.rb +40 -0
  228. data/test/simple/test_simple2.rb +48 -0
  229. data/test/simple/test_simple3.rb +20 -0
  230. data/test/test_array.rb +22 -0
  231. data/test/test_assets.rb +33 -0
  232. data/test/test_complex.rb +17 -0
  233. data/test/test_node.rb +16 -0
  234. data/test/test_parser.rb +17 -0
  235. data/test/test_scanner.rb +234 -0
  236. metadata +334 -0
@@ -0,0 +1,74 @@
1
+ // TEST: #ifndef
2
+ //
3
+ #ifndef IDL2REPO_BUGS_IDL
4
+
5
+ // TEST: #define
6
+ //
7
+ #define IDL2REPO_BUGS_IDL
8
+
9
+ // TEST: #include
10
+ //
11
+ #include "base_for_diamond_inheritance_with_macros.idl"
12
+
13
+ // TEST: C-style comments
14
+ //
15
+
16
+ // TEST: #if
17
+ //
18
+
19
+ #if !defined(MACRO1)
20
+ #define MACRO1 interface
21
+ #endif
22
+
23
+ #if defined(MACRO1)
24
+ #define MACRO2 MainGrid
25
+ #endif
26
+
27
+ MACRO1 MACRO2
28
+ {
29
+ void getofMainGrid(in short n);
30
+ long setofMainGrid(inout short n);
31
+
32
+ readonly attribute short length; // length of the gridmain
33
+ attribute short breadth; // breadth of the gridmain
34
+
35
+ exception exMG { string reason; };
36
+ };
37
+
38
+
39
+ interface BaseGrid : MainGrid {
40
+ void getofBaseGrid(in short n);
41
+ long setofBaseGrid(in short n);
42
+
43
+ readonly attribute short roAtrBG ; // length of the gridmain
44
+ attribute short atrBG; // breadth of the gridmain
45
+
46
+ exception exBG { string reason; };
47
+ };
48
+
49
+
50
+ interface GridBase : MainGrid {
51
+
52
+ void getofGridBase(in short n);
53
+ long setofGridBase(in short n);
54
+
55
+ readonly attribute short roAtrGB ; // length of the gridmain
56
+ attribute short atrGB; // breadth of the gridmain
57
+
58
+ exception exGB { string reason; };
59
+ };
60
+
61
+ interface Grid : BaseGrid, GridBase {
62
+ readonly attribute short height; // height of the grid
63
+ readonly attribute short width; // width of the grid
64
+
65
+ // IDL operations
66
+
67
+ // set the element [n,m] of the grid, to value:
68
+ void set(in short n, in short m, in long value);
69
+
70
+ // return element [n,m] of the grid:
71
+ long get(in short n, in short m);
72
+ };
73
+
74
+ #endif
@@ -0,0 +1,52 @@
1
+
2
+ typedef float Apple;
3
+ typedef double Carrots;
4
+ typedef long BlackCherry;
5
+ typedef short Rhubarb;
6
+
7
+
8
+ #if !defined(MACRO1)
9
+ #define MACRO1 ABC D EF S A
10
+ #endif
11
+
12
+ #if defined(MACRO1)
13
+ #undef MACRO1
14
+ #define MACRO1 Apple
15
+ #endif
16
+
17
+ #ifndef MACRO1
18
+ #error MACRO1 not defined
19
+ #else
20
+ #define MACRO2 interface \
21
+ idlServer
22
+ #endif
23
+
24
+
25
+ #ifdef MACRO2
26
+ #define MACRO3 in
27
+ #endif
28
+
29
+ #if 0
30
+ This code will not be compiled
31
+ #elif 1
32
+
33
+
34
+ MACRO2 {
35
+
36
+ typedef unsigned long Pumpkin;
37
+ typedef unsigned short WaterMelon;
38
+ typedef char Dates;
39
+ typedef boolean Lychees;
40
+
41
+
42
+
43
+
44
+ MACRO1 GardenPeas(
45
+ MACRO3 ::Apple p1,
46
+ out ::BlackCherry p2,
47
+
48
+ #endif
49
+
50
+ inout ::idlServer::Dates p3
51
+ );
52
+ };
@@ -0,0 +1,246 @@
1
+ /*
2
+ ******************************************************************************
3
+ *
4
+ * Tests all possible preprocessor types
5
+ *
6
+ ******************************************************************************
7
+ * file name: umachine.idl
8
+ * encoding: US-ASCII
9
+ * tab size: 8 (not used)
10
+ * indentation:4
11
+ *
12
+ * This file defines basic types and constants for utf.idl to be
13
+ * platform-independent. umachine.idl and utf.idl are included into
14
+ * utypes.idl to provide all the general definitions for ICU.
15
+ * All of these definitions used to be in utypes.idl before
16
+ * the UTF-handling macros made this unmaintainable.
17
+ */
18
+
19
+ #ifndef __PREPROCESS1_IDL__
20
+ #define __PREPROCESS1_IDL__
21
+
22
+
23
+ /*==========================================================================*/
24
+ /* Include platform-dependent definitions */
25
+ /* which are contained in the platform-specific file platform.idl */
26
+ /*==========================================================================*/
27
+
28
+ #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
29
+ # include "preprocess2.idl"
30
+ #elif defined(__OS400__)
31
+ # include "preprocess2.idl"
32
+ #elif defined(__MWERKS__)
33
+ # include "preprocess2.idl"
34
+ #else
35
+ # include "preprocess2.idl"
36
+ #endif
37
+
38
+ /*==========================================================================*/
39
+ /* XP_CPLUSPLUS is a cross-platform symbol which should be defined when */
40
+ /* using C++. It should not be defined when compiling under C. */
41
+ /*==========================================================================*/
42
+
43
+ #ifdef __cplusplus
44
+ # ifndef XP_CPLUSPLUS
45
+ # define XP_CPLUSPLUS
46
+ # endif
47
+ #else
48
+ # undef XP_CPLUSPLUS
49
+ #endif
50
+
51
+ /*==========================================================================*/
52
+ /* For C wrappers, we use the symbol U_STABLE. */
53
+ /* This works properly if the includer is C or C++. */
54
+ /* Functions are declared U_STABLE return-type U_EXPORT2 function-name()... */
55
+ /*==========================================================================*/
56
+
57
+ #ifdef XP_CPLUSPLUS
58
+ # define U_CFUNC extern "C"
59
+ # define U_CDECL_BEGIN extern "C" {
60
+ # define U_CDECL_END }
61
+ #else
62
+ # define U_CFUNC extern
63
+ # define U_CDECL_BEGIN
64
+ # define U_CDECL_END
65
+ #endif
66
+
67
+ /* Define namespace symbols if the compiler supports it. */
68
+ #if U_HAVE_NAMESPACE
69
+ # define U_NAMESPACE_BEGIN namespace U_ICU_NAMESPACE {
70
+ # define U_NAMESPACE_END }
71
+ # define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE;
72
+ # define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
73
+ #else
74
+ # define U_NAMESPACE_BEGIN
75
+ # define U_NAMESPACE_END
76
+ # define U_NAMESPACE_USE
77
+ # define U_NAMESPACE_QUALIFIER
78
+ #endif
79
+
80
+ #define U_CAPI U_CFUNC U_EXPORT
81
+ #define U_STABLE U_CAPI
82
+ #define U_DRAFT U_CAPI
83
+ #define U_DEPRECATED U_CAPI
84
+ #define U_OBSOLETE U_CAPI
85
+ #define U_INTERNAL U_CAPI
86
+
87
+ /*==========================================================================*/
88
+ /* limits for int32_t etc., like in POSIX inttypes.idl */
89
+ /*==========================================================================*/
90
+
91
+ #ifndef INT8_MIN
92
+
93
+ # define INT8_MIN ((int8_t)(-128))
94
+ #endif
95
+ #ifndef INT16_MIN
96
+
97
+ # define INT16_MIN ((int16_t)(-32767-1))
98
+ #endif
99
+ #ifndef INT32_MIN
100
+
101
+ # define INT32_MIN ((int32_t)(-2147483647-1))
102
+ #endif
103
+
104
+ #ifndef INT8_MAX
105
+
106
+ # define INT8_MAX ((int8_t)(127))
107
+ #endif
108
+ #ifndef INT16_MAX
109
+
110
+ # define INT16_MAX ((int16_t)(32767))
111
+ #endif
112
+ #ifndef INT32_MAX
113
+
114
+ # define INT32_MAX ((int32_t)(2147483647))
115
+ #endif
116
+
117
+ #ifndef UINT8_MAX
118
+
119
+ # define UINT8_MAX ((uint8_t)(255U))
120
+ #endif
121
+ #ifndef UINT16_MAX
122
+
123
+ # define UINT16_MAX ((uint16_t)(65535U))
124
+ #endif
125
+ #ifndef UINT32_MAX
126
+
127
+ # define UINT32_MAX ((uint32_t)(4294967295U))
128
+ #endif
129
+
130
+ #if defined(U_INT64_T_UNAVAILABLE)
131
+ # error int64_t is required for decimal format and rule-based number format.
132
+ #else
133
+ # ifndef INT64_C
134
+
135
+ # define INT64_C(c) c ## LL
136
+ # endif
137
+ # ifndef UINT64_C
138
+
139
+ # define UINT64_C(c) c ## ULL
140
+ # endif
141
+ # ifndef U_INT64_MIN
142
+
143
+ # define U_INT64_MIN ((int64_t)(INT64_C(-9223372036854775807)-1))
144
+ # endif
145
+ # ifndef U_INT64_MAX
146
+
147
+ # define U_INT64_MAX ((int64_t)(INT64_C(9223372036854775807)))
148
+ # endif
149
+ # ifndef U_UINT64_MAX
150
+
151
+ # define U_UINT64_MAX ((uint64_t)(UINT64_C(18446744073709551615)))
152
+ # endif
153
+ #endif
154
+
155
+ /*==========================================================================*/
156
+ /* Boolean data type */
157
+ /*==========================================================================*/
158
+
159
+ typedef int8_t UBool;
160
+
161
+ #ifndef TRUE
162
+
163
+ # define TRUE 1
164
+ #endif
165
+ #ifndef FALSE
166
+
167
+ # define FALSE 0
168
+ #endif
169
+
170
+
171
+ /*==========================================================================*/
172
+ /* Unicode data types */
173
+ /*==========================================================================*/
174
+
175
+ /* wchar_t-related definitions -------------------------------------------- */
176
+
177
+ #ifndef U_HAVE_WCHAR_H
178
+ # define U_HAVE_WCHAR_H 1
179
+ #endif
180
+
181
+ #if U_SIZEOF_WCHAR_T==0
182
+ # undef U_SIZEOF_WCHAR_T
183
+ # define U_SIZEOF_WCHAR_T 4
184
+ #endif
185
+
186
+ /*
187
+ * \def U_WCHAR_IS_UTF16
188
+ * Defined if wchar_t uses UTF-16.
189
+ *
190
+ * @stable ICU 2.0
191
+ */
192
+ /*
193
+ * \def U_WCHAR_IS_UTF32
194
+ * Defined if wchar_t uses UTF-32.
195
+ *
196
+ * @stable ICU 2.0
197
+ */
198
+ #if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32)
199
+ # ifdef __STDC_ISO_10646__
200
+ # if (U_SIZEOF_WCHAR_T==2)
201
+ # define U_WCHAR_IS_UTF16
202
+ # elif (U_SIZEOF_WCHAR_T==4)
203
+ # define U_WCHAR_IS_UTF32
204
+ # endif
205
+ # elif defined __UCS2__
206
+ # if (__OS390__ || __OS400__) && (U_SIZEOF_WCHAR_T==2)
207
+ # define U_WCHAR_IS_UTF16
208
+ # endif
209
+ # elif defined __UCS4__
210
+ # if (U_SIZEOF_WCHAR_T==4)
211
+ # define U_WCHAR_IS_UTF32
212
+ # endif
213
+ # elif defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
214
+ # define U_WCHAR_IS_UTF16
215
+ # endif
216
+ #endif
217
+
218
+ /* UChar and UChar32 definitions -------------------------------------------- */
219
+
220
+ #define U_SIZEOF_UCHAR 2
221
+
222
+ /* Define UChar to be compatible with wchar_t if possible. */
223
+ #if U_SIZEOF_WCHAR_T==2
224
+ typedef wchar_t UChar;
225
+ #else
226
+ typedef uint16_t UChar;
227
+ #endif
228
+
229
+ typedef int32_t UChar32;
230
+
231
+ /*==========================================================================*/
232
+ /* U_INLINE and U_ALIGN_CODE Set default values if these are not already */
233
+ /* defined. Definitions normally are in */
234
+ /* platform.idl or the corresponding file for */
235
+ /* the OS in use. */
236
+ /*==========================================================================*/
237
+
238
+ #ifndef U_ALIGN_CODE
239
+ # define U_ALIGN_CODE(n)
240
+ #endif
241
+
242
+ #ifndef U_INLINE
243
+ # define U_INLINE
244
+ #endif
245
+
246
+ #endif
@@ -0,0 +1,3 @@
1
+ typedef short int8_t;
2
+ typedef unsigned short uint16_t;
3
+ typedef long int32_t;
@@ -0,0 +1,28 @@
1
+ module foo {
2
+ struct a {
3
+ long b;
4
+ };
5
+ module bar {
6
+ struct a {
7
+ long b;
8
+ };
9
+ };
10
+ };
11
+
12
+ module bar {
13
+ struct a {
14
+ long b;
15
+ };
16
+ };
17
+
18
+ module foo {
19
+ struct b {
20
+ a c; // This refs foo::a
21
+ };
22
+ module bar {
23
+ struct b {
24
+ a q; // This refs foo::bar::a
25
+ };
26
+ };
27
+ };
28
+
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Nested recursive struct and union
3
+ */
4
+
5
+ /* Recursive struct */
6
+ struct S {
7
+ string name;
8
+ sequence<S,1> S1Seq_left;
9
+ sequence<S,1> S1Seq_right;
10
+ };
11
+
12
+ /* Nested recursive struct */
13
+ struct S2 {
14
+ struct S3 {
15
+ sequence<S2> c;
16
+ } s;
17
+ };
18
+
19
+ /* Nested recursive union */
20
+ union UA switch (boolean) {
21
+ case TRUE:
22
+ struct t_st {
23
+ sequence<UA> a;
24
+ } st;
25
+ case FALSE:
26
+ short b;
27
+ };
28
+
29
+ union UB switch (boolean) {
30
+ case TRUE:
31
+ sequence<UB> mub;
32
+ };
33
+
34
+ struct S4 {
35
+ struct S5 {
36
+ struct S6 {
37
+ sequence<S4> s4_obj;
38
+ sequence<S5> s5_obj;
39
+ sequence<S6> ms6;
40
+ } ts6;
41
+ } ts5;
42
+ };
43
+
44
+ interface foo {
45
+ void bar( in S s_obj );
46
+ };
47
+