PageRenderTime 49ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Examples/test-suite/enum_thorough.i

#
Swig | 606 lines | 533 code | 73 blank | 0 comment | 0 complexity | 6420ee14f440cafef9250c7943e3c938 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module "enum_thorough"
  2. // Suppress warning messages from the Ruby module for all of the
  3. // following...
  4. #pragma SWIG nowarn=SWIGWARN_PARSE_KEYWORD
  5. %warnfilter(SWIGWARN_RUBY_WRONG_NAME);
  6. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) red;
  7. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) blue;
  8. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) green;
  9. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) SpeedClass::slow;
  10. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) SpeedClass::medium;
  11. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) SpeedClass::fast;
  12. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) SpeedClass::lightning;
  13. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) TemplateClass::einstein;
  14. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) TemplateClass::galileo;
  15. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Name::TClass::faraday;
  16. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Name::TClass::bell;
  17. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) argh;
  18. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) eek;
  19. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::whizz;
  20. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::kerboom;
  21. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::pop;
  22. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::simple1;
  23. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::singlename1;
  24. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) OldNameStruct::doublename1;
  25. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) TreesClass::oak;
  26. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) TreesClass::fir;
  27. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) TreesClass::pine;
  28. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) curly::greasy::HairStruct::blonde;
  29. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) curly::greasy::HairStruct::ginger;
  30. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::one;
  31. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::onetrail;
  32. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::two;
  33. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::twoagain;
  34. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::twotrail;
  35. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Obscure::twotrailagain;
  36. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance1;
  37. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance2;
  38. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) globalinstance3;
  39. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Instances::memberinstance1;
  40. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Instances::memberinstance2;
  41. %warnfilter(SWIGWARN_RUBY_WRONG_NAME) Instances::memberinstance3;
  42. %warnfilter(SWIGWARN_GO_NAME_CONFLICT); /* Ignoring 'one' due to Go name ('ObscureOne') conflict with 'Obscure::One' */
  43. %inline %{
  44. enum { AnonEnum1, AnonEnum2 = 100 };
  45. enum { ReallyAnInteger = 200 };
  46. //enum { AnonEnum3, AnonEnum4 } instance;
  47. namespace AnonSpace {
  48. enum { AnonSpaceEnum1, AnonSpaceEnum2 = 300 };
  49. struct AnonStruct {
  50. enum { AnonStructEnum1, AnonStructEnum2 = 400 };
  51. };
  52. }
  53. enum colour { red=-1, blue, green = 10 };
  54. colour colourTest1(colour e) { return e; }
  55. enum colour colourTest2(enum colour e) { return e; }
  56. const colour colourTest3(const colour e) { return e; }
  57. const enum colour colourTest4(const enum colour e) { return e; }
  58. colour myColour;
  59. struct SpeedClass {
  60. enum speed { slow=10, medium=20, fast=30, lightning };
  61. typedef enum speed speedtd1;
  62. int speedTest0(int s) { return s; }
  63. speed speedTest1(speed s) { return s; }
  64. enum speed speedTest2(enum speed s) { return s; }
  65. const speed speedTest3(const speed s) { return s; }
  66. const enum speed speedTest4(const enum speed s) { return s; }
  67. speedtd1 speedTest5(speedtd1 s) { return s; }
  68. const speedtd1 speedTest6(const speedtd1 s) { return s; }
  69. const speed & speedTest7(const speed &s) { return s; }
  70. const enum speed & speedTest8(const enum speed &s) { return s; }
  71. const colour myColour2;
  72. speedtd1 mySpeedtd1;
  73. SpeedClass() : myColour2(red), mySpeedtd1(slow) { }
  74. private:
  75. SpeedClass& operator=(const SpeedClass&);
  76. };
  77. int speedTest0(int s) { return s; }
  78. SpeedClass::speed speedTest1(SpeedClass::speed s) { return s; }
  79. enum SpeedClass::speed speedTest2(enum SpeedClass::speed s) { return s; }
  80. const SpeedClass::speed speedTest3(const SpeedClass::speed s) { return s; }
  81. const enum SpeedClass::speed speedTest4(const enum SpeedClass::speed s) { return s; }
  82. const SpeedClass::speed & speedTest5(const SpeedClass::speed &s) { return s; }
  83. typedef enum { NamedAnon1, NamedAnon2 } namedanon;
  84. namedanon namedanonTest1(namedanon e) { return e; }
  85. typedef enum twonamestag { TwoNames1, TwoNames2, TwoNames3 = 33 } twonames;
  86. twonames twonamesTest1(twonames e) { return e; }
  87. twonamestag twonamesTest2(twonamestag e) { return e; }
  88. enum twonamestag twonamesTest3(enum twonamestag e) { return e; }
  89. struct TwoNamesStruct {
  90. typedef enum twonamestag { TwoNamesStruct1, TwoNamesStruct2 } twonames;
  91. twonames twonamesTest1(twonames e) { return e; }
  92. twonamestag twonamesTest2(twonamestag e) { return e; }
  93. enum twonamestag twonamesTest3(enum twonamestag e) { return e; }
  94. };
  95. namespace AnonSpace{
  96. typedef enum { NamedAnonSpace1, NamedAnonSpace2 } namedanonspace;
  97. namedanonspace namedanonspaceTest1(namedanonspace e) { return e; }
  98. AnonSpace::namedanonspace namedanonspaceTest2(AnonSpace::namedanonspace e) { return e; }
  99. }
  100. AnonSpace::namedanonspace namedanonspaceTest3(AnonSpace::namedanonspace e) { return e; }
  101. using namespace AnonSpace;
  102. namedanonspace namedanonspaceTest4(namedanonspace e) { return e; }
  103. template<typename T> struct TemplateClass {
  104. enum scientists { einstein, galileo = 10 };
  105. typedef enum scientists scientiststd1;
  106. typedef scientists scientiststd2;
  107. typedef scientiststd1 scientiststd3;
  108. scientists scientistsTest1(scientists e) { return e; }
  109. enum scientists scientistsTest2(enum scientists e) { return e; }
  110. const scientists scientistsTest3(const scientists e) { return e; }
  111. const enum scientists scientistsTest4(const enum scientists e) { return e; }
  112. typename TemplateClass<T>::scientists scientistsTest5(typename TemplateClass<T>::scientists e) { return e; }
  113. const typename TemplateClass<T>::scientists scientistsTest6(const typename TemplateClass<T>::scientists e) { return e; }
  114. enum TemplateClass<T>::scientists scientistsTest7(enum TemplateClass<T>::scientists e) { return e; }
  115. const enum TemplateClass<T>::scientists scientistsTest8(const enum TemplateClass<T>::scientists e) { return e; }
  116. typename TemplateClass::scientists scientistsTest9(typename TemplateClass::scientists e) { return e; }
  117. // enum TemplateClass::scientists scientistsTestA(enum TemplateClass::scientists e) { return e; }
  118. const typename TemplateClass::scientists scientistsTestB(const typename TemplateClass::scientists e) { return e; }
  119. // const enum TemplateClass::scientists scientistsTestC(const enum TemplateClass::scientists e) { return e; }
  120. scientiststd1 scientistsTestD(scientiststd1 e) { return e; }
  121. scientiststd2 scientistsTestE(scientiststd2 e) { return e; }
  122. scientiststd3 scientistsTestF(scientiststd3 e) { return e; }
  123. typename TemplateClass<T>::scientiststd1 scientistsTestG(typename TemplateClass<T>::scientiststd1 e) { return e; }
  124. typename TemplateClass<T>::scientiststd2 scientistsTestH(typename TemplateClass<T>::scientiststd2 e) { return e; }
  125. typename TemplateClass<T>::scientiststd3 scientistsTestI(typename TemplateClass<T>::scientiststd3 e) { return e; }
  126. const scientists & scientistsTestJ(const scientists &e) { return e; }
  127. };
  128. TemplateClass<int>::scientists scientistsTest1(TemplateClass<int>::scientists e) { return e; }
  129. const TemplateClass<int>::scientists scientistsTest2(const TemplateClass<int>::scientists e) { return e; }
  130. enum TemplateClass<int>::scientists scientistsTest3(enum TemplateClass<int>::scientists e) { return e; }
  131. const enum TemplateClass<int>::scientists scientistsTest4(const enum TemplateClass<int>::scientists e) { return e; }
  132. TemplateClass<int>::scientiststd1 scientistsTest5(TemplateClass<int>::scientiststd1 e) { return e; }
  133. TemplateClass<int>::scientiststd2 scientistsTest6(TemplateClass<int>::scientiststd2 e) { return e; }
  134. TemplateClass<int>::scientiststd3 scientistsTest7(TemplateClass<int>::scientiststd3 e) { return e; }
  135. const TemplateClass<int>::scientiststd3 & scientistsTest8(const TemplateClass<int>::scientiststd3 &e) { return e; }
  136. namespace Name {
  137. template<typename T> struct TClass {
  138. enum scientists { faraday, bell = 20 };
  139. typedef enum scientists scientiststd1;
  140. typedef scientists scientiststd2;
  141. typedef scientiststd1 scientiststd3;
  142. scientists scientistsNameTest1(scientists e) { return e; }
  143. enum scientists scientistsNameTest2(enum scientists e) { return e; }
  144. const scientists scientistsNameTest3(const scientists e) { return e; }
  145. const enum scientists scientistsNameTest4(const enum scientists e) { return e; }
  146. typename TClass<T>::scientists scientistsNameTest5(typename TClass<T>::scientists e) { return e; }
  147. const typename TClass<T>::scientists scientistsNameTest6(const typename TClass<T>::scientists e) { return e; }
  148. enum TClass<T>::scientists scientistsNameTest7(enum TClass<T>::scientists e) { return e; }
  149. const enum TClass<T>::scientists scientistsNameTest8(const enum TClass<T>::scientists e) { return e; }
  150. typename TClass::scientists scientistsNameTest9(typename TClass::scientists e) { return e; }
  151. // enum TClass::scientists scientistsNameTestA(enum TClass::scientists e) { return e; }
  152. const typename TClass::scientists scientistsNameTestB(const typename TClass::scientists e) { return e; }
  153. // const enum TClass::scientists scientistsNameTestC(const enum TClass::scientists e) { return e; }
  154. scientiststd1 scientistsNameTestD(scientiststd1 e) { return e; }
  155. scientiststd2 scientistsNameTestE(scientiststd2 e) { return e; }
  156. scientiststd3 scientistsNameTestF(scientiststd3 e) { return e; }
  157. typename TClass<T>::scientiststd1 scientistsNameTestG(typename TClass<T>::scientiststd1 e) { return e; }
  158. typename TClass<T>::scientiststd2 scientistsNameTestH(typename TClass<T>::scientiststd2 e) { return e; }
  159. typename TClass<T>::scientiststd3 scientistsNameTestI(typename TClass<T>::scientiststd3 e) { return e; }
  160. typename Name::TClass<T>::scientists scientistsNameSpaceTest1(typename Name::TClass<T>::scientists e) { return e; }
  161. const typename Name::TClass<T>::scientists scientistsNameSpaceTest2(const typename Name::TClass<T>::scientists e) { return e; }
  162. enum Name::TClass<T>::scientists scientistsNameSpaceTest3(enum Name::TClass<T>::scientists e) { return e; }
  163. const enum Name::TClass<T>::scientists scientistsNameSpaceTest4(const enum Name::TClass<T>::scientists e) { return e; }
  164. typename Name::TClass<T>::scientiststd1 scientistsNameSpaceTest5(typename Name::TClass<T>::scientiststd1 e) { return e; }
  165. typename Name::TClass<T>::scientiststd2 scientistsNameSpaceTest6(typename Name::TClass<T>::scientiststd2 e) { return e; }
  166. typename Name::TClass<T>::scientiststd3 scientistsNameSpaceTest7(typename Name::TClass<T>::scientiststd3 e) { return e; }
  167. // Test TemplateClass::scientists rather then TClass::scientists
  168. ::TemplateClass<int>::scientists scientistsOtherTest1(::TemplateClass<int>::scientists e) { return e; }
  169. const ::TemplateClass<int>::scientists scientistsOtherTest2(const ::TemplateClass<int>::scientists e) { return e; }
  170. enum ::TemplateClass<int>::scientists scientistsOtherTest3(enum ::TemplateClass<int>::scientists e) { return e; }
  171. const enum ::TemplateClass<int>::scientists scientistsOtherTest4(const enum ::TemplateClass<int>::scientists e) { return e; }
  172. ::TemplateClass<int>::scientiststd1 scientistsOtherTest5(::TemplateClass<int>::scientiststd1 e) { return e; }
  173. ::TemplateClass<int>::scientiststd2 scientistsOtherTest6(::TemplateClass<int>::scientiststd2 e) { return e; }
  174. ::TemplateClass<int>::scientiststd3 scientistsOtherTest7(::TemplateClass<int>::scientiststd3 e) { return e; }
  175. };
  176. TClass<int>::scientists scientistsNameTest1(TClass<int>::scientists e) { return e; }
  177. const TClass<int>::scientists scientistsNameTest2(const TClass<int>::scientists e) { return e; }
  178. enum TClass<int>::scientists scientistsNameTest3(enum TClass<int>::scientists e) { return e; }
  179. const enum TClass<int>::scientists scientistsNameTest4(const enum TClass<int>::scientists e) { return e; }
  180. TClass<int>::scientiststd1 scientistsNameTest5(TClass<int>::scientiststd1 e) { return e; }
  181. TClass<int>::scientiststd2 scientistsNameTest6(TClass<int>::scientiststd2 e) { return e; }
  182. TClass<int>::scientiststd3 scientistsNameTest7(TClass<int>::scientiststd3 e) { return e; }
  183. Name::TClass<int>::scientists scientistsNameSpaceTest1(Name::TClass<int>::scientists e) { return e; }
  184. const Name::TClass<int>::scientists scientistsNameSpaceTest2(const Name::TClass<int>::scientists e) { return e; }
  185. enum Name::TClass<int>::scientists scientistsNameSpaceTest3(enum Name::TClass<int>::scientists e) { return e; }
  186. const enum Name::TClass<int>::scientists scientistsNameSpaceTest4(const enum Name::TClass<int>::scientists e) { return e; }
  187. Name::TClass<int>::scientiststd1 scientistsNameSpaceTest5(Name::TClass<int>::scientiststd1 e) { return e; }
  188. Name::TClass<int>::scientiststd2 scientistsNameSpaceTest6(Name::TClass<int>::scientiststd2 e) { return e; }
  189. Name::TClass<int>::scientiststd3 scientistsNameSpaceTest7(Name::TClass<int>::scientiststd3 e) { return e; }
  190. }
  191. Name::TClass<int>::scientists scientistsNameSpaceTest8(Name::TClass<int>::scientists e) { return e; }
  192. const Name::TClass<int>::scientists scientistsNameSpaceTest9(const Name::TClass<int>::scientists e) { return e; }
  193. enum Name::TClass<int>::scientists scientistsNameSpaceTestA(enum Name::TClass<int>::scientists e) { return e; }
  194. const enum Name::TClass<int>::scientists scientistsNameSpaceTestB(const enum Name::TClass<int>::scientists e) { return e; }
  195. Name::TClass<int>::scientiststd1 scientistsNameSpaceTestC(Name::TClass<int>::scientiststd1 e) { return e; }
  196. Name::TClass<int>::scientiststd2 scientistsNameSpaceTestD(Name::TClass<int>::scientiststd2 e) { return e; }
  197. Name::TClass<int>::scientiststd3 scientistsNameSpaceTestE(Name::TClass<int>::scientiststd3 e) { return e; }
  198. using namespace Name;
  199. TClass<int>::scientists scientistsNameSpaceTestF(TClass<int>::scientists e) { return e; }
  200. const TClass<int>::scientists scientistsNameSpaceTestG(const TClass<int>::scientists e) { return e; }
  201. enum TClass<int>::scientists scientistsNameSpaceTestH(enum TClass<int>::scientists e) { return e; }
  202. const enum TClass<int>::scientists scientistsNameSpaceTestI(const enum TClass<int>::scientists e) { return e; }
  203. TClass<int>::scientiststd1 scientistsNameSpaceTestJ(TClass<int>::scientiststd1 e) { return e; }
  204. TClass<int>::scientiststd2 scientistsNameSpaceTestK(TClass<int>::scientiststd2 e) { return e; }
  205. TClass<int>::scientiststd3 scientistsNameSpaceTestL(TClass<int>::scientiststd3 e) { return e; }
  206. %}
  207. %template(TemplateClassInt) TemplateClass<int>;
  208. %template(TClassInt) Name::TClass<int>;
  209. // %rename tests
  210. %rename(NewNameStruct) OldNameStruct;
  211. %rename(newname) old_name;
  212. %rename(doublenamerenamed) doublename;
  213. %rename(simplerenamed) simple;
  214. %rename(singlenamerenamed) singlename;
  215. %rename(bang) OldNameStruct::kerboom;
  216. %inline %{
  217. enum old_name { argh, eek = -1 };
  218. typedef old_name old_nametd;
  219. old_name renameTest1(old_name e) { return e; }
  220. old_nametd renameTest2(old_nametd e) { return e; }
  221. struct OldNameStruct {
  222. enum enumeration {whizz, kerboom, pop};
  223. enumeration renameTest1(enumeration e) { return e; }
  224. OldNameStruct::enumeration renameTest2(OldNameStruct::enumeration e) { return e; }
  225. enum simple {simple1};
  226. typedef enum doublenametag {doublename1} doublename;
  227. typedef enum {singlename1} singlename;
  228. simple renameTest3(simple e) { return e; }
  229. doublename renameTest4(doublename e) { return e; }
  230. doublenametag renameTest5(doublenametag e) { return e; }
  231. singlename renameTest6(singlename e) { return e; }
  232. };
  233. OldNameStruct::enumeration renameTest3(OldNameStruct::enumeration e) { return e; }
  234. OldNameStruct::simple renameTest4(OldNameStruct::simple e) { return e; }
  235. OldNameStruct::doublename renameTest5(OldNameStruct::doublename e) { return e; }
  236. OldNameStruct::doublenametag renameTest6(OldNameStruct::doublenametag e) { return e; }
  237. OldNameStruct::singlename renameTest7(OldNameStruct::singlename e) { return e; }
  238. %}
  239. %inline %{
  240. struct TreesClass {
  241. enum trees {oak, fir, pine };
  242. typedef enum trees treestd1;
  243. typedef trees treestd2;
  244. typedef treestd1 treestd3;
  245. typedef TreesClass::trees treestd4;
  246. typedef treestd1 treestd5;
  247. trees treesTest1(trees e) { return e; }
  248. treestd1 treesTest2(treestd1 e) { return e; }
  249. treestd2 treesTest3(treestd2 e) { return e; }
  250. treestd3 treesTest4(treestd3 e) { return e; }
  251. treestd4 treesTest5(treestd4 e) { return e; }
  252. treestd5 treesTest6(treestd5 e) { return e; }
  253. const trees treesTest7(const trees e) { return e; }
  254. const treestd1 treesTest8(const treestd1 e) { return e; }
  255. const treestd2 treesTest9(const treestd2 e) { return e; }
  256. const treestd3 treesTestA(const treestd3 e) { return e; }
  257. const treestd4 treesTestB(const treestd4 e) { return e; }
  258. const treestd5 treesTestC(const treestd5 e) { return e; }
  259. TreesClass::trees treesTestD(TreesClass::trees e) { return e; }
  260. TreesClass::treestd1 treesTestE(TreesClass::treestd1 e) { return e; }
  261. TreesClass::treestd2 treesTestF(TreesClass::treestd2 e) { return e; }
  262. TreesClass::treestd3 treesTestG(TreesClass::treestd3 e) { return e; }
  263. TreesClass::treestd4 treesTestH(TreesClass::treestd4 e) { return e; }
  264. TreesClass::treestd5 treesTestI(TreesClass::treestd5 e) { return e; }
  265. const TreesClass::trees treesTestJ(const TreesClass::trees e) { return e; }
  266. const TreesClass::treestd1 treesTestK(const TreesClass::treestd1 e) { return e; }
  267. const TreesClass::treestd2 treesTestL(const TreesClass::treestd2 e) { return e; }
  268. const TreesClass::treestd3 treesTestM(const TreesClass::treestd3 e) { return e; }
  269. const TreesClass::treestd4 treesTestN(const TreesClass::treestd4 e) { return e; }
  270. const TreesClass::treestd5 treesTestO(const TreesClass::treestd5 e) { return e; }
  271. };
  272. TreesClass::trees treesTest1(TreesClass::trees e) { return e; }
  273. TreesClass::treestd1 treesTest2(TreesClass::treestd1 e) { return e; }
  274. TreesClass::treestd2 treesTest3(TreesClass::treestd2 e) { return e; }
  275. TreesClass::treestd3 treesTest4(TreesClass::treestd3 e) { return e; }
  276. TreesClass::treestd4 treesTest5(TreesClass::treestd4 e) { return e; }
  277. TreesClass::treestd5 treesTest6(TreesClass::treestd5 e) { return e; }
  278. const TreesClass::trees treesTest7(const TreesClass::trees e) { return e; }
  279. const TreesClass::treestd1 treesTest8(const TreesClass::treestd1 e) { return e; }
  280. const TreesClass::treestd2 treesTest9(const TreesClass::treestd2 e) { return e; }
  281. const TreesClass::treestd3 treesTestA(const TreesClass::treestd3 e) { return e; }
  282. const TreesClass::treestd4 treesTestB(const TreesClass::treestd4 e) { return e; }
  283. const TreesClass::treestd5 treesTestC(const TreesClass::treestd5 e) { return e; }
  284. typedef enum TreesClass::trees treesglobaltd1;
  285. typedef TreesClass::trees treesglobaltd2;
  286. typedef TreesClass::treestd1 treesglobaltd3;
  287. typedef TreesClass::treestd2 treesglobaltd4;
  288. typedef treesglobaltd4 treesglobaltd5;
  289. treesglobaltd1 treesTestD(treesglobaltd1 e) { return e; }
  290. treesglobaltd2 treesTestE(treesglobaltd2 e) { return e; }
  291. treesglobaltd3 treesTestF(treesglobaltd3 e) { return e; }
  292. treesglobaltd4 treesTestG(treesglobaltd4 e) { return e; }
  293. treesglobaltd5 treesTestH(treesglobaltd5 e) { return e; }
  294. const treesglobaltd1 treesTestI(const treesglobaltd1 e) { return e; }
  295. const treesglobaltd2 treesTestJ(const treesglobaltd2 e) { return e; }
  296. const treesglobaltd3 treesTestK(const treesglobaltd3 e) { return e; }
  297. const treesglobaltd4 treesTestL(const treesglobaltd4 e) { return e; }
  298. const treesglobaltd5 treesTestM(const treesglobaltd5 e) { return e; }
  299. typedef const enum TreesClass::trees treesglobaltd6;
  300. typedef const TreesClass::trees treesglobaltd7;
  301. typedef const TreesClass::treestd1 treesglobaltd8;
  302. typedef const TreesClass::treestd2 treesglobaltd9;
  303. typedef const treesglobaltd4 treesglobaltdA;
  304. //treesglobaltd6 treesTestN(treesglobaltd6 e) { return e; } // casting using an int instead of treesglobaltd6
  305. treesglobaltd7 treesTestO(treesglobaltd7 e) { return e; }
  306. treesglobaltd8 treesTestP(treesglobaltd8 e) { return e; }
  307. treesglobaltd9 treesTestQ(treesglobaltd9 e) { return e; }
  308. treesglobaltdA treesTestR(treesglobaltdA e) { return e; }
  309. namespace curly {
  310. namespace greasy {
  311. struct HairStruct {
  312. enum hair { blonde=0xFF0, ginger };
  313. typedef hair hairtd1;
  314. typedef HairStruct::hair hairtd2;
  315. typedef greasy::HairStruct::hair hairtd3;
  316. typedef curly::greasy::HairStruct::hair hairtd4;
  317. typedef ::curly::greasy::HairStruct::hair hairtd5;
  318. typedef hairtd1 hairtd6;
  319. typedef HairStruct::hairtd1 hairtd7;
  320. typedef greasy::HairStruct::hairtd1 hairtd8;
  321. typedef curly::greasy::HairStruct::hairtd1 hairtd9;
  322. typedef ::curly::greasy::HairStruct::hairtd1 hairtdA;
  323. hair hairTest1(hair e) { return e; }
  324. hairtd1 hairTest2(hairtd1 e) { return e; }
  325. hairtd2 hairTest3(hairtd2 e) { return e; }
  326. hairtd3 hairTest4(hairtd3 e) { return e; }
  327. hairtd4 hairTest5(hairtd4 e) { return e; }
  328. hairtd5 hairTest6(hairtd5 e) { return e; }
  329. hairtd6 hairTest7(hairtd6 e) { return e; }
  330. hairtd7 hairTest8(hairtd7 e) { return e; }
  331. hairtd8 hairTest9(hairtd8 e) { return e; }
  332. hairtd9 hairTestA(hairtd9 e) { return e; }
  333. hairtdA hairTestB(hairtdA e) { return e; }
  334. ::colour colourTest1(::colour e) { return e; }
  335. enum colour colourTest2(enum colour e) { return e; }
  336. namedanon namedanonTest1(namedanon e) { return e; }
  337. AnonSpace::namedanonspace namedanonspaceTest1(AnonSpace::namedanonspace e) { return e; }
  338. treesglobaltd1 treesGlobalTest1(treesglobaltd1 e) { return e; }
  339. treesglobaltd2 treesGlobalTest2(treesglobaltd2 e) { return e; }
  340. treesglobaltd3 treesGlobalTest3(treesglobaltd3 e) { return e; }
  341. treesglobaltd4 treesGlobalTest4(treesglobaltd4 e) { return e; }
  342. treesglobaltd5 treesGlobalTest5(treesglobaltd5 e) { return e; }
  343. };
  344. HairStruct::hair hairTest1(HairStruct::hair e) { return e; }
  345. HairStruct::hairtd1 hairTest2(HairStruct::hairtd1 e) { return e; }
  346. HairStruct::hairtd2 hairTest3(HairStruct::hairtd2 e) { return e; }
  347. HairStruct::hairtd3 hairTest4(HairStruct::hairtd3 e) { return e; }
  348. HairStruct::hairtd4 hairTest5(HairStruct::hairtd4 e) { return e; }
  349. HairStruct::hairtd5 hairTest6(HairStruct::hairtd5 e) { return e; }
  350. HairStruct::hairtd6 hairTest7(HairStruct::hairtd6 e) { return e; }
  351. HairStruct::hairtd7 hairTest8(HairStruct::hairtd7 e) { return e; }
  352. HairStruct::hairtd8 hairTest9(HairStruct::hairtd8 e) { return e; }
  353. HairStruct::hairtd9 hairTestA(HairStruct::hairtd9 e) { return e; }
  354. HairStruct::hairtdA hairTestB(HairStruct::hairtdA e) { return e; }
  355. const HairStruct::hair & hairTestC(const HairStruct::hair &e) { return e; }
  356. }
  357. greasy::HairStruct::hair hairTestA1(greasy::HairStruct::hair e) { return e; }
  358. greasy::HairStruct::hairtd1 hairTestA2(greasy::HairStruct::hairtd1 e) { return e; }
  359. greasy::HairStruct::hairtd2 hairTestA3(greasy::HairStruct::hairtd2 e) { return e; }
  360. greasy::HairStruct::hairtd3 hairTestA4(greasy::HairStruct::hairtd3 e) { return e; }
  361. greasy::HairStruct::hairtd4 hairTestA5(greasy::HairStruct::hairtd4 e) { return e; }
  362. greasy::HairStruct::hairtd5 hairTestA6(greasy::HairStruct::hairtd5 e) { return e; }
  363. greasy::HairStruct::hairtd6 hairTestA7(greasy::HairStruct::hairtd6 e) { return e; }
  364. greasy::HairStruct::hairtd7 hairTestA8(greasy::HairStruct::hairtd7 e) { return e; }
  365. greasy::HairStruct::hairtd8 hairTestA9(greasy::HairStruct::hairtd8 e) { return e; }
  366. greasy::HairStruct::hairtd9 hairTestAA(greasy::HairStruct::hairtd9 e) { return e; }
  367. greasy::HairStruct::hairtdA hairTestAB(greasy::HairStruct::hairtdA e) { return e; }
  368. const greasy::HairStruct::hairtdA & hairTestAC(const greasy::HairStruct::hairtdA &e) { return e; }
  369. }
  370. curly::greasy::HairStruct::hair hairTestB1(curly::greasy::HairStruct::hair e) { return e; }
  371. curly::greasy::HairStruct::hairtd1 hairTestB2(curly::greasy::HairStruct::hairtd1 e) { return e; }
  372. curly::greasy::HairStruct::hairtd2 hairTestB3(curly::greasy::HairStruct::hairtd2 e) { return e; }
  373. curly::greasy::HairStruct::hairtd3 hairTestB4(curly::greasy::HairStruct::hairtd3 e) { return e; }
  374. curly::greasy::HairStruct::hairtd4 hairTestB5(curly::greasy::HairStruct::hairtd4 e) { return e; }
  375. curly::greasy::HairStruct::hairtd5 hairTestB6(curly::greasy::HairStruct::hairtd5 e) { return e; }
  376. curly::greasy::HairStruct::hairtd6 hairTestB7(curly::greasy::HairStruct::hairtd6 e) { return e; }
  377. curly::greasy::HairStruct::hairtd7 hairTestB8(curly::greasy::HairStruct::hairtd7 e) { return e; }
  378. curly::greasy::HairStruct::hairtd8 hairTestB9(curly::greasy::HairStruct::hairtd8 e) { return e; }
  379. curly::greasy::HairStruct::hairtd9 hairTestBA(curly::greasy::HairStruct::hairtd9 e) { return e; }
  380. curly::greasy::HairStruct::hairtdA hairTestBB(curly::greasy::HairStruct::hairtdA e) { return e; }
  381. const curly::greasy::HairStruct::hairtdA & hairTestBC(const curly::greasy::HairStruct::hairtdA &e) { return e; }
  382. using curly::greasy::HairStruct;
  383. HairStruct::hair hairTestC1(HairStruct::hair e) { return e; }
  384. HairStruct::hairtd1 hairTestC2(HairStruct::hairtd1 e) { return e; }
  385. HairStruct::hairtd2 hairTestC3(HairStruct::hairtd2 e) { return e; }
  386. HairStruct::hairtd3 hairTestC4(HairStruct::hairtd3 e) { return e; }
  387. HairStruct::hairtd4 hairTestC5(HairStruct::hairtd4 e) { return e; }
  388. HairStruct::hairtd5 hairTestC6(HairStruct::hairtd5 e) { return e; }
  389. HairStruct::hairtd6 hairTestC7(HairStruct::hairtd6 e) { return e; }
  390. HairStruct::hairtd7 hairTestC8(HairStruct::hairtd7 e) { return e; }
  391. HairStruct::hairtd8 hairTestC9(HairStruct::hairtd8 e) { return e; }
  392. HairStruct::hairtd9 hairTestCA(HairStruct::hairtd9 e) { return e; }
  393. HairStruct::hairtdA hairTestCB(HairStruct::hairtdA e) { return e; }
  394. const HairStruct::hairtdA & hairTestCC(const HairStruct::hairtdA &e) { return e; }
  395. namespace curly {
  396. namespace greasy {
  397. struct FirStruct : HairStruct {
  398. hair hairTestFir1(hair e) { return e; }
  399. hairtd1 hairTestFir2(hairtd1 e) { return e; }
  400. hairtd2 hairTestFir3(hairtd2 e) { return e; }
  401. hairtd3 hairTestFir4(hairtd3 e) { return e; }
  402. hairtd4 hairTestFir5(hairtd4 e) { return e; }
  403. hairtd5 hairTestFir6(hairtd5 e) { return e; }
  404. hairtd6 hairTestFir7(hairtd6 e) { return e; }
  405. hairtd7 hairTestFir8(hairtd7 e) { return e; }
  406. hairtd8 hairTestFir9(hairtd8 e) { return e; }
  407. hairtd9 hairTestFirA(hairtd9 e) { return e; }
  408. hairtdA hairTestFirB(hairtdA e) { return e; }
  409. };
  410. }
  411. }
  412. struct Obscure {
  413. enum Zero {};
  414. enum One {one};
  415. enum Two {two, twoagain};
  416. #if defined(SWIG)
  417. // g++-4.3 warns about this
  418. typedef enum Empty {};
  419. #endif
  420. typedef enum {} AlsoEmpty;
  421. };
  422. // Unnamed enum instance
  423. extern "C" {
  424. enum { globalinstance1, globalinstance2, globalinstance3 = 30 } GlobalInstance;
  425. }
  426. struct Instances {
  427. enum { memberinstance1, memberinstance2, memberinstance3 = 300 } MemberInstance;
  428. Instances() : MemberInstance(memberinstance3) {}
  429. };
  430. %}
  431. // Repeated values
  432. #if defined(SWIGJAVA)
  433. %javaconst(1);
  434. // needed for typesafe and proper enums only
  435. %javaconst(0) ignoreA_three;
  436. %javaconst(0) ignoreA_thirteen;
  437. #elif defined(SWIGCSHARP)
  438. // needed for typesafe enums only
  439. #ifdef SWIG_TEST_NOCSCONST
  440. %csconst(0) ignoreA_three;
  441. %csconst(0) ignoreA_thirteen;
  442. #endif
  443. %csconst(1);
  444. #endif
  445. %ignore ignoreA_one;
  446. %ignore ignoreA_two;
  447. %ignore ignoreA_twelve;
  448. %ignore ignoreA_thirty_one;
  449. %ignore ignoreB_ten;
  450. %ignore ignoreB_twenty;
  451. %ignore ignoreB_thirty;
  452. %ignore ignoreB_forty;
  453. %ignore ignoreC_eleven;
  454. %ignore ignoreC_thirty_one;
  455. %ignore ignoreC_forty_one;
  456. %ignore ignoreD_ten;
  457. %ignore ignoreD_twenty;
  458. %ignore ignoreE_twenty;
  459. %inline %{
  460. struct IgnoreTest {
  461. enum IgnoreA { ignoreA_zero, ignoreA_one, ignoreA_two, ignoreA_three, ignoreA_ten=10, ignoreA_eleven, ignoreA_twelve, ignoreA_thirteen, ignoreA_fourteen, ignoreA_twenty=20, ignoreA_thirty=30, ignoreA_thirty_one, ignoreA_thirty_two, ignoreA_thirty_three };
  462. enum IgnoreB { ignoreB_ten=10, ignoreB_eleven, ignoreB_twelve, ignoreB_twenty=20, ignoreB_thirty=30, ignoreB_thirty_one, ignoreB_thirty_two, ignoreB_forty=40, ignoreB_forty_one, ignoreB_forty_two };
  463. enum IgnoreC { ignoreC_ten=10, ignoreC_eleven, ignoreC_twelve, ignoreC_twenty=20, ignoreC_thirty=30, ignoreC_thirty_one, ignoreC_thirty_two, ignoreC_forty=40, ignoreC_forty_one, ignoreC_forty_two };
  464. enum IgnoreD { ignoreD_ten=10, ignoreD_twenty=20, ignoreD_twenty_one, ignoreD_twenty_two };
  465. enum IgnoreE { ignoreE_zero, ignoreE_twenty=20, ignoreE_twenty_one, ignoreE_twenty_two };
  466. };
  467. IgnoreTest::IgnoreA ignoreATest(IgnoreTest::IgnoreA n) { return n; }
  468. IgnoreTest::IgnoreB ignoreBTest(IgnoreTest::IgnoreB n) { return n; }
  469. IgnoreTest::IgnoreC ignoreCTest(IgnoreTest::IgnoreC n) { return n; }
  470. IgnoreTest::IgnoreD ignoreDTest(IgnoreTest::IgnoreD n) { return n; }
  471. IgnoreTest::IgnoreE ignoreETest(IgnoreTest::IgnoreE n) { return n; }
  472. %}
  473. %inline %{
  474. namespace RepeatSpace {
  475. typedef enum
  476. {
  477. one = 1,
  478. initial = one,
  479. two,
  480. three,
  481. llast = three,
  482. end = llast
  483. } repeat;
  484. repeat repeatTest(repeat e) { return e; }
  485. }
  486. %}
  487. %inline %{
  488. namespace DifferentSpace {
  489. enum DifferentTypes {
  490. typeint = 10,
  491. typeboolfalse = false,
  492. typebooltrue = true,
  493. typebooltwo,
  494. typechar = 'C',
  495. typedefaultint
  496. };
  497. DifferentTypes differentTypesTest(DifferentTypes n) { return n; }
  498. enum {
  499. global_typeint = 10,
  500. global_typeboolfalse = false,
  501. global_typebooltrue = true,
  502. global_typebooltwo,
  503. global_typechar = 'C',
  504. global_typedefaultint
  505. };
  506. int globalDifferentTypesTest(int n) { return n; }
  507. }
  508. %}
  509. #if defined(SWIGJAVA)
  510. %javaconst(0);
  511. #elif defined(SWIGCSHARP)
  512. %csconst(0);
  513. #endif
  514. %inline %{
  515. namespace DifferentSpace {
  516. enum DifferentTypesNoConst {
  517. typeint_noconst = 10,
  518. typeboolfalse_noconst = false,
  519. typebooltrue_noconst = true,
  520. typebooltwo_noconst,
  521. typechar_noconst = 'C',
  522. typedefaultint_noconst
  523. };
  524. enum {
  525. global_typeint_noconst = 10,
  526. global_typeboolfalse_noconst = false,
  527. global_typebooltrue_noconst = true,
  528. global_typebooltwo_noconst,
  529. global_typechar_noconst = 'C',
  530. global_typedefaultint_noconst
  531. };
  532. }
  533. %}