zomg 1.0.0

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 (238) hide show
  1. data/History.txt +6 -0
  2. data/Manifest.txt +237 -0
  3. data/README.txt +59 -0
  4. data/Rakefile +34 -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/lexer.rb +2151 -0
  11. data/lib/zomg/idl/nodes/attribute.rb +15 -0
  12. data/lib/zomg/idl/nodes/binary.rb +19 -0
  13. data/lib/zomg/idl/nodes/constant.rb +15 -0
  14. data/lib/zomg/idl/nodes/interface.rb +13 -0
  15. data/lib/zomg/idl/nodes/interface_header.rb +14 -0
  16. data/lib/zomg/idl/nodes/member.rb +14 -0
  17. data/lib/zomg/idl/nodes/node.rb +52 -0
  18. data/lib/zomg/idl/nodes/operation.rb +17 -0
  19. data/lib/zomg/idl/nodes/parameter.rb +18 -0
  20. data/lib/zomg/idl/nodes/typedef.rb +13 -0
  21. data/lib/zomg/idl/nodes/union.rb +14 -0
  22. data/lib/zomg/idl/parser.rb +54 -0
  23. data/lib/zomg/idl/scanner.rb +367 -0
  24. data/lib/zomg/idl/visitable.rb +15 -0
  25. data/lib/zomg/idl/visitors/duhr.rb +24 -0
  26. data/lib/zomg/idl/visitors/ruby_sexp.rb +173 -0
  27. data/lib/zomg/idl/visitors/sexp.rb +274 -0
  28. data/lib/zomg/version.rb +3 -0
  29. data/test/assets/array/array1.idl +60 -0
  30. data/test/assets/array/array2.idl +38 -0
  31. data/test/assets/array/array3.idl +8 -0
  32. data/test/assets/array/array4.idl +7 -0
  33. data/test/assets/array/array5.idl +80 -0
  34. data/test/assets/attribute/grid_0attribs_2methods.idl +16 -0
  35. data/test/assets/attribute/grid_1ROattribs_1attribs_0methods.idl +19 -0
  36. data/test/assets/attribute/grid_1ROattribs_1attribs_1methods.idl +19 -0
  37. data/test/assets/attribute/grid_1ROattribs_1attribs_2methods.idl +17 -0
  38. data/test/assets/attribute/grid_1ROattribs_1methods.idl +16 -0
  39. data/test/assets/attribute/grid_1ROattribs_2methods.idl +16 -0
  40. data/test/assets/attribute/grid_1attribs_1methods.idl +17 -0
  41. data/test/assets/attribute/grid_1attribs_2methods.idl +17 -0
  42. data/test/assets/attribute/grid_2ROattribs_0methods.idl +16 -0
  43. data/test/assets/attribute/grid_2ROattribs_1methods.idl +16 -0
  44. data/test/assets/attribute/grid_2ROattribs_2methods.idl +16 -0
  45. data/test/assets/attribute/grid_2attribs_0methods.idl +19 -0
  46. data/test/assets/attribute/grid_2attribs_1methods.idl +19 -0
  47. data/test/assets/attribute/grid_2attribs_2methods.idl +19 -0
  48. data/test/assets/comment/c_style_comments.idl +63 -0
  49. data/test/assets/comment/comment1.idl +57 -0
  50. data/test/assets/comment/cpp_style_comments.idl +168 -0
  51. data/test/assets/comment/shortform.idl +0 -0
  52. data/test/assets/complex/TestCodeSets.idl +10 -0
  53. data/test/assets/complex/TestIntfContext.idl +13 -0
  54. data/test/assets/complex/TestIntfLongLong.idl +51 -0
  55. data/test/assets/complex/TestIntfWChar.idl +52 -0
  56. data/test/assets/complex/any1.idl +22 -0
  57. data/test/assets/complex/complex1.idl +495 -0
  58. data/test/assets/complex/complex2.idl +730 -0
  59. data/test/assets/complex/complex3.idl +181 -0
  60. data/test/assets/complex/complex4.idl +181 -0
  61. data/test/assets/complex/interop_wchar.idl +60 -0
  62. data/test/assets/constant/constant1.idl +37 -0
  63. data/test/assets/constant/constant2.idl +29 -0
  64. data/test/assets/constant/constant3.idl +50 -0
  65. data/test/assets/constant/constant4.idl +21 -0
  66. data/test/assets/constant/constant5.idl +65 -0
  67. data/test/assets/constant/constant6.idl +144 -0
  68. data/test/assets/constant/constant7.idl +30 -0
  69. data/test/assets/enum/enum1.idl +13 -0
  70. data/test/assets/exception/TestIntfExceptions.idl +69 -0
  71. data/test/assets/exception/TestIntfExceptionsExt_2_0.idl +34 -0
  72. data/test/assets/exception/TestIntfExceptionsExt_2_3.idl +24 -0
  73. data/test/assets/exception/ex1.idl +6 -0
  74. data/test/assets/exception/ex2.idl +18 -0
  75. data/test/assets/exception/ex3.idl +10 -0
  76. data/test/assets/exception/ex4.idl +20 -0
  77. data/test/assets/exception/sc.idl +0 -0
  78. data/test/assets/exception/simple1.idl +18 -0
  79. data/test/assets/exception/simple2.idl +25 -0
  80. data/test/assets/factory/factory1.idl +77 -0
  81. data/test/assets/factory/objref.idl +25 -0
  82. data/test/assets/forward/forward.idl +15 -0
  83. data/test/assets/forward/forward1.idl +13 -0
  84. data/test/assets/forward/fwd_incl1.idl +6 -0
  85. data/test/assets/forward/fwd_incl2.idl +7 -0
  86. data/test/assets/include/a.idl +23 -0
  87. data/test/assets/include/b.idl +16 -0
  88. data/test/assets/include/employee.idl +12 -0
  89. data/test/assets/include/include1.idl +10 -0
  90. data/test/assets/include/include2.idl +5 -0
  91. data/test/assets/include/manager.idl +10 -0
  92. data/test/assets/include/pragma.idl +41 -0
  93. data/test/assets/include/rookie.idl +13 -0
  94. data/test/assets/include/rookiemanager.idl +15 -0
  95. data/test/assets/include/sample.idl +58 -0
  96. data/test/assets/include/sample_incl.idl +406 -0
  97. data/test/assets/inherit/IDL1.idl +18 -0
  98. data/test/assets/inherit/IDL2.idl +18 -0
  99. data/test/assets/inherit/IDL3.idl +18 -0
  100. data/test/assets/inherit/IDL4.idl +17 -0
  101. data/test/assets/inherit/diamond_inheritance.idl +31 -0
  102. data/test/assets/inherit/inherit.idl +27 -0
  103. data/test/assets/limit/longidentifiers.idl +25 -0
  104. data/test/assets/limit/namelens.idl +26 -0
  105. data/test/assets/limit/tpztest.idl +21 -0
  106. data/test/assets/module/module1.idl +29 -0
  107. data/test/assets/module/module2.idl +34 -0
  108. data/test/assets/module/module3.idl +20 -0
  109. data/test/assets/module/module4.idl +15 -0
  110. data/test/assets/nested/nested1.idl +5 -0
  111. data/test/assets/nested/nested2.idl +11 -0
  112. data/test/assets/operations/Benchmark.idl +331 -0
  113. data/test/assets/operations/CCS.idl +82 -0
  114. data/test/assets/operations/TestIntf.idl +40 -0
  115. data/test/assets/operations/TestIntfBasic.idl +653 -0
  116. data/test/assets/operations/atomic.idl +40 -0
  117. data/test/assets/operations/dif2.idl +48 -0
  118. data/test/assets/operations/interface1.idl +16 -0
  119. data/test/assets/operations/parameters.idl +111 -0
  120. data/test/assets/operations/perf.idl +84 -0
  121. data/test/assets/operations/timer.idl +104 -0
  122. data/test/assets/preprocess/base_for_diamond_inheritance_with_macros.idl +17 -0
  123. data/test/assets/preprocess/basic_macro_marshalling.idl +54 -0
  124. data/test/assets/preprocess/diamond_inheritance_with_macros.idl +74 -0
  125. data/test/assets/preprocess/macro1.idl +52 -0
  126. data/test/assets/preprocess/preprocess1.idl +246 -0
  127. data/test/assets/preprocess/preprocess2.idl +3 -0
  128. data/test/assets/recursion/loop.idl +28 -0
  129. data/test/assets/recursion/recursion1.idl +47 -0
  130. data/test/assets/recursion/recursion2.idl +74 -0
  131. data/test/assets/scenarios/filestat.idl +69 -0
  132. data/test/assets/scenarios/gateway.idl +176 -0
  133. data/test/assets/scenarios/library.idl +20 -0
  134. data/test/assets/scenarios/phone.idl +24 -0
  135. data/test/assets/scenarios/ticketservice.idl +118 -0
  136. data/test/assets/scope/scope01.idl +58 -0
  137. data/test/assets/scope/scope02.idl +25 -0
  138. data/test/assets/scope/scope03.idl +22 -0
  139. data/test/assets/scope/scope04.idl +27 -0
  140. data/test/assets/scope/scope05.idl +30 -0
  141. data/test/assets/scope/scope06.idl +51 -0
  142. data/test/assets/scope/scope07.idl +20 -0
  143. data/test/assets/scope/scope08.idl +88 -0
  144. data/test/assets/scope/scope09.idl +21 -0
  145. data/test/assets/scope/scope10.idl +95 -0
  146. data/test/assets/scope/scope11.idl +62 -0
  147. data/test/assets/scope/scope12.idl +117 -0
  148. data/test/assets/scope/scope13.idl +117 -0
  149. data/test/assets/scope/scope14.idl +117 -0
  150. data/test/assets/scope/scope15.idl +117 -0
  151. data/test/assets/scope/scope16.idl +117 -0
  152. data/test/assets/scope/scope17.idl +117 -0
  153. data/test/assets/scope/scope18.idl +117 -0
  154. data/test/assets/scope/scope19.idl +117 -0
  155. data/test/assets/scope/scope20.idl +215 -0
  156. data/test/assets/scope/scope21.idl +215 -0
  157. data/test/assets/scope/scope22.idl +205 -0
  158. data/test/assets/scope/scope23.idl +261 -0
  159. data/test/assets/scope/scope24.idl +376 -0
  160. data/test/assets/scope/scope25.idl +266 -0
  161. data/test/assets/scope/scope26.idl +180 -0
  162. data/test/assets/scope/scope27.idl +184 -0
  163. data/test/assets/scope/scope28.idl +182 -0
  164. data/test/assets/scope/scope29.idl +182 -0
  165. data/test/assets/scope/scope30.idl +40 -0
  166. data/test/assets/scope/scope31.idl +33 -0
  167. data/test/assets/scope/scope32.idl +37 -0
  168. data/test/assets/scope/scope33.idl +50 -0
  169. data/test/assets/scope/scope34.idl +97 -0
  170. data/test/assets/scope/scope35.idl +72 -0
  171. data/test/assets/scope/scope36.idl +167 -0
  172. data/test/assets/scope/scope37.idl +57 -0
  173. data/test/assets/scope/scope38.idl +38 -0
  174. data/test/assets/scope/scope39.idl +38 -0
  175. data/test/assets/scope/scope40.idl +38 -0
  176. data/test/assets/scope/scope41.idl +24 -0
  177. data/test/assets/scope/scope42.idl +64 -0
  178. data/test/assets/scope/scope43.idl +66 -0
  179. data/test/assets/scope/scope44.idl +52 -0
  180. data/test/assets/sequence/sequence1.idl +24 -0
  181. data/test/assets/sequence/sequence2.idl +9 -0
  182. data/test/assets/simple/basictypes1.idl +80 -0
  183. data/test/assets/simple/basictypes2.idl +197 -0
  184. data/test/assets/simple/basictypes3.idl +23 -0
  185. data/test/assets/simple/basictypes4.idl +73 -0
  186. data/test/assets/simple/basictypes5.idl +29 -0
  187. data/test/assets/simple/basictypes6.idl +63 -0
  188. data/test/assets/simple/simple1.idl +45 -0
  189. data/test/assets/simple/simple2.idl +61 -0
  190. data/test/assets/simple/simple3.idl +36 -0
  191. data/test/assets/string/string1.idl +11 -0
  192. data/test/assets/string/string2.idl +29 -0
  193. data/test/assets/struct/struct1.idl +20 -0
  194. data/test/assets/struct/struct2.idl +21 -0
  195. data/test/assets/struct/struct3.idl +42 -0
  196. data/test/assets/struct/struct4.idl +57 -0
  197. data/test/assets/struct/struct5.idl +71 -0
  198. data/test/assets/typecode/orb.idl +0 -0
  199. data/test/assets/typecode/pseudo.idl +25 -0
  200. data/test/assets/typedef/shorthand_typedef_struct_insideIF.idl +17 -0
  201. data/test/assets/typedef/shorthand_typedef_struct_insideIF_noMO.idl +16 -0
  202. data/test/assets/typedef/shorthand_typedef_struct_insideMO.idl +17 -0
  203. data/test/assets/typedef/shorthand_typedef_struct_outsideMO.idl +17 -0
  204. data/test/assets/typedef/typedef1.idl +8 -0
  205. data/test/assets/typedef/typedef2.idl +22 -0
  206. data/test/assets/typedef/typedef_struct_insideIF.idl +18 -0
  207. data/test/assets/typedef/typedef_struct_insideMO.idl +18 -0
  208. data/test/assets/typedef/typedef_struct_outsideMO.idl +18 -0
  209. data/test/assets/union/union1.idl +31 -0
  210. data/test/assets/union/union2.idl +22 -0
  211. data/test/assets/union/union3.idl +26 -0
  212. data/test/conversions/test_attribute.rb +30 -0
  213. data/test/conversions/test_enum.rb +25 -0
  214. data/test/conversions/test_exception.rb +24 -0
  215. data/test/conversions/test_forward_declaration.rb +22 -0
  216. data/test/conversions/test_interface.rb +30 -0
  217. data/test/conversions/test_module.rb +24 -0
  218. data/test/conversions/test_struct.rb +25 -0
  219. data/test/conversions/test_typedef.rb +22 -0
  220. data/test/conversions/test_union.rb +27 -0
  221. data/test/conversions/test_value_box_dcl.rb +22 -0
  222. data/test/helper.rb +23 -0
  223. data/test/simple/test_basictypes1.rb +87 -0
  224. data/test/simple/test_basictypes2.rb +18 -0
  225. data/test/simple/test_basictypes3.rb +32 -0
  226. data/test/simple/test_basictypes4.rb +25 -0
  227. data/test/simple/test_basictypes5.rb +17 -0
  228. data/test/simple/test_basictypes6.rb +19 -0
  229. data/test/simple/test_simple1.rb +40 -0
  230. data/test/simple/test_simple2.rb +48 -0
  231. data/test/simple/test_simple3.rb +20 -0
  232. data/test/test_array.rb +22 -0
  233. data/test/test_assets.rb +33 -0
  234. data/test/test_complex.rb +17 -0
  235. data/test/test_node.rb +15 -0
  236. data/test/test_parser.rb +17 -0
  237. data/test/test_scanner.rb +234 -0
  238. metadata +336 -0
@@ -0,0 +1,57 @@
1
+ struct bar {
2
+ long b1;
3
+ long b2;
4
+ string<20> b3;
5
+ };
6
+
7
+ struct bar2 {
8
+ long b3;
9
+ bar b4;
10
+ };
11
+
12
+ struct bar3 {
13
+ long b1;
14
+ long b2;
15
+ long b3;
16
+ };
17
+
18
+ struct bar4 {
19
+ long b1;
20
+ bar2 b2;
21
+ long b3;
22
+ bar3 b4;
23
+ long b5;
24
+ };
25
+
26
+
27
+ interface foo {
28
+ long op(in bar a, out bar2 b);
29
+ };
30
+ interface foo2 : foo {
31
+ bar op2(in bar2 a);
32
+ long op3(in long a, out char b);
33
+ };
34
+
35
+
36
+ typedef unsigned short Coord;
37
+
38
+ struct CellPos1 {
39
+ Coord row;
40
+ Coord col;
41
+ };
42
+
43
+ struct CellPos2 {
44
+ unsigned short row;
45
+ unsigned short col;
46
+ };
47
+
48
+ struct CellPos3 {
49
+ Coord row;
50
+ Coord col;
51
+ unsigned short col2;
52
+ };
53
+
54
+ interface Cells : foo2 {
55
+ bar4 op4(in bar4 a, inout bar4 b, out bar4 c);
56
+ Coord op5(in CellPos1 a, inout CellPos2 b, out CellPos3 c);
57
+ };
@@ -0,0 +1,71 @@
1
+
2
+
3
+ struct Avocado{
4
+ float and;
5
+ double and_eq;
6
+ unsigned long auto;
7
+ short bitand;
8
+ unsigned short bitor;
9
+ char bool;
10
+ boolean break;
11
+ octet catch;
12
+ float class;
13
+ double compl;
14
+ long const_cast;
15
+ unsigned long continue;
16
+ short delete;
17
+ unsigned short do;
18
+ char dynamic_cast;
19
+ boolean else;
20
+ octet explicit;
21
+ float extern;
22
+ long for;
23
+ unsigned long friend;
24
+ short goto;
25
+ unsigned short if;
26
+ octet int;
27
+ boolean mutable;
28
+ float namespace;
29
+ double new;
30
+ long not;
31
+ unsigned long not_eq;
32
+ short operator;
33
+ unsigned short or;
34
+ char or_eq;
35
+ boolean protected;
36
+ double register;
37
+ long reinterpret_cast;
38
+ unsigned long return;
39
+ short signed;
40
+ unsigned short sizeof;
41
+ char static;
42
+ octet static_cast;
43
+ boolean template;
44
+ float this;
45
+ double throw;
46
+ short typeid;
47
+ unsigned short typename;
48
+ char using;
49
+ octet virtual;
50
+ boolean volatile;
51
+ float wchar_t;
52
+ double while;
53
+ long xor;
54
+ unsigned long xor_eq;
55
+ };
56
+
57
+ interface idlServer {
58
+
59
+ exception AvocadoExcpt{
60
+ ::Avocado ex1;
61
+ };
62
+
63
+ attribute ::Avocado AvocadoAttr;
64
+
65
+ ::Avocado AvocadoOp(
66
+ in ::Avocado p1,
67
+ out ::Avocado p2,
68
+ inout ::Avocado p3
69
+ ) raises (AvocadoExcpt);
70
+ };
71
+
File without changes
@@ -0,0 +1,25 @@
1
+ /**
2
+ * TypeCode and Any as in, inout, out and return
3
+ */
4
+ #include <orb.idl>
5
+
6
+ struct S1 {
7
+ long x;
8
+ char c;
9
+ };
10
+
11
+ struct S2 {
12
+ string str;
13
+ };
14
+
15
+ struct S3 {
16
+ char c;
17
+ any a;
18
+ CORBA::TypeCode tc;
19
+ };
20
+
21
+ interface foo {
22
+ any bar( in any a1, out any a2, inout any a3 );
23
+ CORBA::TypeCode bar1( in CORBA::TypeCode tc1, out CORBA::TypeCode tc2, inout CORBA::TypeCode tc3 );
24
+ };
25
+
@@ -0,0 +1,17 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Shorthand struct is inside an interface and module
3
+ //****************************************************************************
4
+
5
+ module MA
6
+ {
7
+ interface IA
8
+ {
9
+ typedef struct SA
10
+ {
11
+ unsigned short USA;
12
+ string SSA;
13
+ } mySA;
14
+
15
+ SA MethodMAIA(in long LA, out mySA objSA);
16
+ };
17
+ };
@@ -0,0 +1,16 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Shorthand struct is inside an interface with no module
3
+ //****************************************************************************
4
+
5
+ //Tests the idl2repo tool's ability to generate AESchema when a struct
6
+ //is embedded in a interface
7
+ interface IA
8
+ {
9
+ typedef struct SA
10
+ {
11
+ unsigned short USA;
12
+ string SSA;
13
+ } mySA;
14
+
15
+ SA MethodMAIA(in long LA, out mySA objSA);
16
+ };
@@ -0,0 +1,17 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Shorthand struct is inside a module & outside an interface
3
+ //****************************************************************************
4
+
5
+ module MA
6
+ {
7
+ typedef struct SA
8
+ {
9
+ unsigned short USA;
10
+ string SSA;
11
+ } mySA;
12
+
13
+ interface IA
14
+ {
15
+ SA MethodMAIA(in long LA, out mySA objSA);
16
+ };
17
+ };
@@ -0,0 +1,17 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Shorthand struct is outside a module
3
+ //****************************************************************************
4
+
5
+ typedef struct SA
6
+ {
7
+ unsigned short USA;
8
+ string SSA;
9
+ } mySA;
10
+
11
+ module MA
12
+ {
13
+ interface IA
14
+ {
15
+ SA MethodMAIA(in long LA, out mySA objSA);
16
+ };
17
+ };
@@ -0,0 +1,8 @@
1
+ typedef short a;
2
+ typedef char c;
3
+ typedef string<256> d;
4
+ typedef sequence<short> e;
5
+ typedef float f;
6
+ typedef short g[5];
7
+ typedef sequence<short, 5> h;
8
+
@@ -0,0 +1,22 @@
1
+ /**
2
+ * typedef string, struct - long form, in parameters
3
+ */
4
+
5
+ typedef string S1;
6
+
7
+ typedef struct SS_ {
8
+ octet a, b;
9
+ } SS;
10
+
11
+ interface foo {
12
+ typedef long L;
13
+ struct S {
14
+ long a;
15
+ char b;
16
+ };
17
+
18
+ void bar1( in string s );
19
+ void bar2( in L l_obj );
20
+ void bar3( in S s_obj );
21
+ };
22
+
@@ -0,0 +1,18 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Struct is inside an module and interface
3
+ //****************************************************************************
4
+
5
+ module MA
6
+ {
7
+ interface IA
8
+ {
9
+ struct SA
10
+ {
11
+ unsigned short USA;
12
+ string SSA;
13
+ };
14
+ typedef SA mySA;
15
+
16
+ SA MethodMAIA(in long LA, out mySA objSA);
17
+ };
18
+ };
@@ -0,0 +1,18 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Struct is declared inside a module
3
+ //****************************************************************************
4
+
5
+ module MA
6
+ {
7
+ struct SA
8
+ {
9
+ unsigned short USA;
10
+ string SSA;
11
+ };
12
+ typedef SA mySA;
13
+
14
+ interface IA
15
+ {
16
+ SA MethodMAIA(in long LA, out mySA objSA);
17
+ };
18
+ };
@@ -0,0 +1,18 @@
1
+ // Description : Test typedefs of structs
2
+ // Comments : Struct is declared outside a module
3
+ //****************************************************************************
4
+
5
+ struct SA
6
+ {
7
+ unsigned short USA;
8
+ string SSA;
9
+ };
10
+ typedef SA mySA;
11
+
12
+ module MA
13
+ {
14
+ interface IA
15
+ {
16
+ SA MethodMAIA(in long LA, out mySA objSA);
17
+ };
18
+ };
@@ -0,0 +1,31 @@
1
+ union Foo switch (long) {
2
+ case 1: long x;
3
+ case 2: short y;
4
+ default: char z;
5
+ };
6
+
7
+ union Foo2 switch (char) {
8
+ case 'a': long x;
9
+ case 'b': short y;
10
+ case 'c': char z;
11
+ };
12
+
13
+ union Foo3 switch (short) {
14
+ case -1: short a;
15
+ case 50: long b;
16
+ default: char c;
17
+ };
18
+
19
+ union Foo4 switch (long) {
20
+ case 1: string a;
21
+ case 2: sequence<long,10>b;
22
+ default: long c;
23
+ };
24
+
25
+ interface un {
26
+ Foo one(in Foo a, inout Foo b, out Foo c);
27
+ Foo2 two(in Foo2 a, inout Foo2 b, out Foo2 c);
28
+ Foo3 three(in Foo3 a, inout Foo3 b, out Foo3 c);
29
+ Foo4 four(in Foo4 a, inout Foo4 b, out Foo4 c);
30
+ };
31
+
@@ -0,0 +1,22 @@
1
+ enum FooDisc {
2
+ FOO1,
3
+ FOO2,
4
+ FOO3
5
+ };
6
+ union Foo switch (FooDisc) {
7
+ case FOO1: long x;
8
+ case FOO2: string y;
9
+ default: char z;
10
+ };
11
+
12
+
13
+ struct Bar {
14
+ enum BarDisc {
15
+ BAR1,
16
+ BAR2
17
+ } kind;
18
+ union Foo switch (BarDisc) {
19
+ case BAR1: long x;
20
+ case BAR2: long y;
21
+ } addr;
22
+ };
@@ -0,0 +1,26 @@
1
+ struct Bar {
2
+ long b1;
3
+ char b2;
4
+ };
5
+
6
+ union Foo switch (long) {
7
+ case 1: long x;
8
+ case 2: Bar y;
9
+ default: char z;
10
+ };
11
+
12
+
13
+ union Foo2 switch (char) {
14
+ case 'a': long x;
15
+ case 'b': Foo y;
16
+ };
17
+
18
+ interface a {
19
+ struct astruct {
20
+ Foo2 a1;
21
+ Foo a2;
22
+ Bar a3;
23
+ };
24
+ Foo2 opA(in astruct b, inout astruct c, out astruct d);
25
+ };
26
+
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+
3
+ module ZOMG
4
+ module Conversions
5
+ class AttributeTest < ZOMG::Test
6
+ def setup
7
+ @tree = ZOMG::IDL.parse(<<-eoidl)
8
+ interface Foo {
9
+ attribute long awesome;
10
+ };
11
+ eoidl
12
+ end
13
+
14
+ def test_to_ruby_sexp
15
+ sexp = nil
16
+ assert_nothing_raised {
17
+ sexp = @tree.to_ruby_sexp
18
+ }
19
+ assert sexp
20
+ ruby_sexp =
21
+ [:block,
22
+ [:module, :Foo,
23
+ [:scope, [:block,
24
+ [:fcall, :attr_accessor, [:array, [:lit, :awesome]]]
25
+ ]]]]
26
+ assert_equal(ruby_sexp, sexp)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ require 'helper'
2
+
3
+ module ZOMG
4
+ module Conversions
5
+ class EnumTest < ZOMG::Test
6
+ def setup
7
+ @tree = ZOMG::IDL.parse(<<-eoidl)
8
+ enum Foo {
9
+ a,
10
+ b
11
+ };
12
+ eoidl
13
+ end
14
+
15
+ def test_to_ruby_sexp
16
+ sexp = nil
17
+ ruby_sexp = [:block, [:cdecl, :Foo, [:hash, [:lit, :a], [:lit, :a], [:lit, :b], [:lit, :b]]]]
18
+ assert_nothing_raised {
19
+ sexp = @tree.to_ruby_sexp
20
+ }
21
+ assert_equal(ruby_sexp, sexp)
22
+ end
23
+ end
24
+ end
25
+ end