PageRenderTime 26ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

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

#
Swig | 212 lines | 170 code | 40 blank | 2 comment | 0 complexity | 88b9fc82a0e76c1070d829816afd5eca MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module nested_class
  2. #pragma SWIG nowarn=SWIGWARN_PARSE_UNNAMED_NESTED_CLASS
  3. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerStruct1;
  4. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerClass1;
  5. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerUnion1;
  6. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerClass2;
  7. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerStruct2;
  8. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerUnion2;
  9. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerClass4Typedef;
  10. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerStruct4Typedef;
  11. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerUnion4Typedef;
  12. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerClass5;
  13. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerStruct5;
  14. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerUnion5;
  15. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerMultiple;
  16. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerMultipleDerived;
  17. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerMultipleAnonTypedef1;
  18. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerMultipleNamedTypedef;
  19. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer::InnerSameName;
  20. %warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Outer2::IgnoreMe;
  21. %inline %{
  22. struct Outer {
  23. typedef int Integer;
  24. ///////////////////////////////////////////
  25. struct InnerStruct1 {
  26. Integer x;
  27. };
  28. class InnerClass1 {
  29. public:
  30. Integer x;
  31. };
  32. union InnerUnion1 {
  33. Integer x;
  34. double y;
  35. };
  36. ///////////////////////////////////////////
  37. #ifdef SWIG
  38. /* some compilers do not accept these */
  39. class {
  40. public:
  41. Integer a;
  42. };
  43. struct {
  44. Integer b;
  45. };
  46. #endif
  47. union {
  48. Integer c;
  49. double d;
  50. };
  51. ///////////////////////////////////////////
  52. class InnerClass2 {
  53. public:
  54. Integer x;
  55. } InnerClass2Instance;
  56. struct InnerStruct2 {
  57. Integer x;
  58. } InnerStruct2Instance;
  59. union InnerUnion2 {
  60. Integer x;
  61. double y;
  62. } InnerUnion2Instance;
  63. ///////////////////////////////////////////
  64. class {
  65. public:
  66. Integer x;
  67. } InnerClass3Instance;
  68. struct {
  69. Integer x;
  70. } InnerStruct3Instance;
  71. union {
  72. Integer x;
  73. double y;
  74. } InnerUnion3Instance;
  75. ///////////////////////////////////////////
  76. typedef class {
  77. public:
  78. Integer x;
  79. } InnerClass4Typedef;
  80. typedef struct {
  81. Integer x;
  82. } InnerStruct4Typedef;
  83. typedef union {
  84. Integer x;
  85. double y;
  86. } InnerUnion4Typedef;
  87. ///////////////////////////////////////////
  88. typedef class InnerClass5 {
  89. public:
  90. Integer x;
  91. } InnerClass5Typedef;
  92. typedef struct InnerStruct5 {
  93. Integer x;
  94. } InnerStruct5Typedef;
  95. typedef union InnerUnion5 {
  96. Integer x;
  97. double y;
  98. } InnerUnion5Typedef;
  99. // bug #909387 - inner declared types are treated as forward declarations
  100. InnerStruct1* makeInnerStruct1() { return 0; }
  101. InnerClass1* makeInnerClass1() { return 0; }
  102. InnerUnion1* makeInnerUnion1() { return 0; }
  103. InnerStruct2* makeInnerStruct2() { return 0; }
  104. InnerClass2* makeInnerClass2() { return 0; }
  105. InnerUnion2* makeInnerUnion2() { return 0; }
  106. InnerStruct4Typedef* makeInnerStruct4Typedef() { return 0; }
  107. InnerClass4Typedef* makeInnerClass4Typedef() { return 0; }
  108. InnerUnion4Typedef* makeInnerUnion4Typedef() { return 0; }
  109. InnerStruct5* makeInnerStruct5() { return 0; }
  110. InnerClass5* makeInnerClass5() { return 0; }
  111. InnerUnion5* makeInnerUnion5() { return 0; }
  112. InnerStruct5Typedef* makeInnerStruct5Typedef() { return 0; }
  113. InnerClass5Typedef* makeInnerClass5Typedef() { return 0; }
  114. InnerUnion5Typedef* makeInnerUnion5Typedef() { return 0; }
  115. ///////////////////////////////////////////
  116. struct InnerMultiple {
  117. Integer x;
  118. } MultipleInstance1, MultipleInstance2, *MultipleInstance3, MultipleInstance4[2];
  119. struct InnerMultipleDerived : public InnerMultiple {
  120. Integer xx;
  121. } MultipleDerivedInstance1, MultipleDerivedInstance2, *MultipleDerivedInstance3, MultipleDerivedInstance4[2];
  122. struct {
  123. Integer x;
  124. } MultipleInstanceAnon1, MultipleInstanceAnon2, *MultipleInstanceAnon3, MultipleInstanceAnon4[2];
  125. struct : public InnerMultiple {
  126. Integer xx;
  127. } MultipleInstanceAnonDerived1, MultipleInstanceAnonDerived2, *MultipleInstanceAnonDerived3, MultipleInstanceAnonDerived4[2];
  128. #ifdef SWIG
  129. /* some compilers do not accept these */
  130. struct : public InnerMultiple {
  131. Integer xx;
  132. };
  133. class : public InnerMultiple {
  134. public:
  135. Integer yy;
  136. };
  137. #endif
  138. ///////////////////////////////////////////
  139. typedef struct {
  140. Integer x;
  141. } InnerMultipleAnonTypedef1, InnerMultipleAnonTypedef2, *InnerMultipleAnonTypedef3;
  142. InnerMultipleAnonTypedef1* makeInnerMultipleAnonTypedef1() { return 0; }
  143. InnerMultipleAnonTypedef2* makeInnerMultipleAnonTypedef2() { return 0; }
  144. InnerMultipleAnonTypedef3* makeInnerMultipleAnonTypedef3() { return 0; }
  145. typedef struct InnerMultipleNamedTypedef {
  146. Integer x;
  147. } InnerMultipleNamedTypedef1, InnerMultipleNamedTypedef2, *InnerMultipleNamedTypedef3;
  148. InnerMultipleNamedTypedef* makeInnerMultipleNamedTypedef() { return 0; }
  149. InnerMultipleNamedTypedef1* makeInnerMultipleNamedTypedef1() { return 0; }
  150. InnerMultipleNamedTypedef2* makeInnerMultipleNamedTypedef2() { return 0; }
  151. InnerMultipleNamedTypedef3* makeInnerMultipleNamedTypedef3() { return 0; }
  152. ///////////////////////////////////////////
  153. typedef struct InnerSameName {
  154. Integer x;
  155. } InnerSameName;
  156. InnerSameName* makeInnerSameName() { return 0; }
  157. };
  158. %}
  159. // Ignore nested struct instance
  160. %ignore Outer2::IgnoreMeInstance;
  161. %{
  162. struct Outer2 {
  163. struct IgnoreMe {
  164. int xx;
  165. };
  166. };
  167. %}
  168. struct Outer2 {
  169. struct IgnoreMe {
  170. int xx;
  171. } IgnoreMeInstance;
  172. };