PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/test-suite/java/director_classic_runme.java

#
Java | 318 lines | 270 code | 34 blank | 14 comment | 7 complexity | ba007906c6422f5106af19b2d2d57366 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. import director_classic.*;
  2. public class director_classic_runme {
  3. static {
  4. try {
  5. System.loadLibrary("director_classic");
  6. } catch (UnsatisfiedLinkError e) {
  7. System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
  8. System.exit(1);
  9. }
  10. }
  11. public static void main(String argv[])
  12. {
  13. {
  14. Person person = new Person();
  15. check(person, "Person");
  16. person.delete();
  17. }
  18. {
  19. Person person = new Child();
  20. check(person, "Child");
  21. person.delete();
  22. }
  23. {
  24. Person person = new GrandChild();
  25. check(person, "GrandChild");
  26. person.delete();
  27. }
  28. {
  29. Person person = new TargetLangPerson();
  30. check(person, "TargetLangPerson");
  31. person.delete();
  32. }
  33. {
  34. Person person = new TargetLangChild();
  35. check(person, "TargetLangChild");
  36. person.delete();
  37. }
  38. {
  39. Person person = new TargetLangGrandChild();
  40. check(person, "TargetLangGrandChild");
  41. person.delete();
  42. }
  43. // Semis - don't override id() in target language
  44. {
  45. Person person = new TargetLangSemiPerson();
  46. check(person, "Person");
  47. person.delete();
  48. }
  49. {
  50. Person person = new TargetLangSemiChild();
  51. check(person, "Child");
  52. person.delete();
  53. }
  54. {
  55. Person person = new TargetLangSemiGrandChild();
  56. check(person, "GrandChild");
  57. person.delete();
  58. }
  59. // Orphans - don't override id() in C++
  60. {
  61. Person person = new OrphanPerson();
  62. check(person, "Person");
  63. person.delete();
  64. }
  65. {
  66. Person person = new OrphanChild();
  67. check(person, "Child");
  68. person.delete();
  69. }
  70. {
  71. Person person = new TargetLangOrphanPerson();
  72. check(person, "TargetLangOrphanPerson");
  73. person.delete();
  74. }
  75. {
  76. Person person = new TargetLangOrphanChild();
  77. check(person, "TargetLangOrphanChild");
  78. person.delete();
  79. }
  80. // Duals - id() makes an upcall to the base id()
  81. {
  82. Person person = new TargetLangDualPerson();
  83. check(person, "TargetLangDualPerson + Person");
  84. person.delete();
  85. }
  86. {
  87. Person person = new TargetLangDualChild();
  88. check(person, "TargetLangDualChild + Child");
  89. person.delete();
  90. }
  91. {
  92. Person person = new TargetLangDualGrandChild();
  93. check(person, "TargetLangDualGrandChild + GrandChild");
  94. person.delete();
  95. }
  96. // Mix Orphans and Duals
  97. {
  98. Person person = new TargetLangDualOrphanPerson();
  99. check(person, "TargetLangDualOrphanPerson + Person");
  100. person.delete();
  101. }
  102. {
  103. Person person = new TargetLangDualOrphanChild();
  104. check(person, "TargetLangDualOrphanChild + Child");
  105. person.delete();
  106. }
  107. }
  108. static void check(Person person, String expected) {
  109. String ret;
  110. // Normal target language polymorphic call
  111. ret = person.id();
  112. if (debug)
  113. System.out.println(ret);
  114. if (!ret.equals(expected))
  115. throw new RuntimeException("Failed. Received: " + ret + " Expected: " + expected);
  116. // Polymorphic call from C++
  117. Caller caller = new Caller();
  118. caller.setCallback(person);
  119. ret = caller.call();
  120. if (debug)
  121. System.out.println(ret);
  122. if (!ret.equals(expected))
  123. throw new RuntimeException("Failed. Received: " + ret + " Expected: " + expected);
  124. // Polymorphic call of object created in target language and passed to C++ and back again
  125. Person baseclass = caller.baseClass();
  126. ret = baseclass.id();
  127. if (debug)
  128. System.out.println(ret);
  129. if (!ret.equals(expected))
  130. throw new RuntimeException("Failed. Received: " + ret + " Expected: " + expected);
  131. caller.resetCallback();
  132. if (debug)
  133. System.out.println("----------------------------------------");
  134. }
  135. static boolean debug = false;
  136. }
  137. class TargetLangPerson extends Person
  138. {
  139. public TargetLangPerson()
  140. {
  141. super();
  142. }
  143. public String id()
  144. {
  145. String identifier = "TargetLangPerson";
  146. return identifier;
  147. }
  148. }
  149. class TargetLangChild extends Child
  150. {
  151. public TargetLangChild()
  152. {
  153. super();
  154. }
  155. public String id()
  156. {
  157. String identifier = "TargetLangChild";
  158. return identifier;
  159. }
  160. }
  161. class TargetLangGrandChild extends GrandChild
  162. {
  163. public TargetLangGrandChild()
  164. {
  165. super();
  166. }
  167. public String id()
  168. {
  169. String identifier = "TargetLangGrandChild";
  170. return identifier;
  171. }
  172. }
  173. // Semis - don't override id() in target language
  174. class TargetLangSemiPerson extends Person
  175. {
  176. public TargetLangSemiPerson()
  177. {
  178. super();
  179. }
  180. // No id() override
  181. }
  182. class TargetLangSemiChild extends Child
  183. {
  184. public TargetLangSemiChild()
  185. {
  186. super();
  187. }
  188. // No id() override
  189. }
  190. class TargetLangSemiGrandChild extends GrandChild
  191. {
  192. public TargetLangSemiGrandChild()
  193. {
  194. super();
  195. }
  196. // No id() override
  197. }
  198. // Orphans - don't override id() in C++
  199. class TargetLangOrphanPerson extends OrphanPerson
  200. {
  201. public TargetLangOrphanPerson()
  202. {
  203. super();
  204. }
  205. public String id()
  206. {
  207. String identifier = "TargetLangOrphanPerson";
  208. return identifier;
  209. }
  210. }
  211. class TargetLangOrphanChild extends OrphanChild
  212. {
  213. public TargetLangOrphanChild()
  214. {
  215. super();
  216. }
  217. public String id()
  218. {
  219. String identifier = "TargetLangOrphanChild";
  220. return identifier;
  221. }
  222. }
  223. // Duals - id() makes an upcall to the base id()
  224. class TargetLangDualPerson extends Person
  225. {
  226. public TargetLangDualPerson()
  227. {
  228. super();
  229. }
  230. public String id()
  231. {
  232. String identifier = "TargetLangDualPerson + " + super.id();
  233. return identifier;
  234. }
  235. }
  236. class TargetLangDualChild extends Child
  237. {
  238. public TargetLangDualChild()
  239. {
  240. super();
  241. }
  242. public String id()
  243. {
  244. String identifier = "TargetLangDualChild + " + super.id();
  245. return identifier;
  246. }
  247. }
  248. class TargetLangDualGrandChild extends GrandChild
  249. {
  250. public TargetLangDualGrandChild()
  251. {
  252. super();
  253. }
  254. public String id()
  255. {
  256. String identifier = "TargetLangDualGrandChild + " + super.id();
  257. return identifier;
  258. }
  259. }
  260. // Mix Orphans and Duals
  261. class TargetLangDualOrphanPerson extends OrphanPerson
  262. {
  263. public TargetLangDualOrphanPerson()
  264. {
  265. super();
  266. }
  267. public String id()
  268. {
  269. String identifier = "TargetLangDualOrphanPerson + " + super.id();
  270. return identifier;
  271. }
  272. }
  273. class TargetLangDualOrphanChild extends OrphanChild
  274. {
  275. public TargetLangDualOrphanChild()
  276. {
  277. super();
  278. }
  279. public String id()
  280. {
  281. String identifier = "TargetLangDualOrphanChild + " + super.id();
  282. return identifier;
  283. }
  284. }