PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Examples/test-suite/octave/director_classic_runme.m

#
MATLAB | 98 lines | 78 code | 20 blank | 0 comment | 3 complexity | 168e96aff7298695046a230adc01e911 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. director_classic
  2. TargetLangPerson=@() subclass(Person(),'id',@(self) "TargetLangPerson");
  3. TargetLangChild=@() subclass(Child(),'id',@(self) "TargetLangChild");
  4. TargetLangGrandChild=@() subclass(GrandChild(),'id',@(self) "TargetLangGrandChild");
  5. # Semis - don't override id() in target language
  6. TargetLangSemiPerson=@() subclass(Person());
  7. TargetLangSemiChild=@() subclass(Child());
  8. TargetLangSemiGrandChild=@() subclass(GrandChild());
  9. # Orphans - don't override id() in C++
  10. TargetLangOrphanPerson=@() subclass(OrphanPerson(),'id',@(self) "TargetLangOrphanPerson");
  11. TargetLangOrphanChild=@() subclass(OrphanChild(),'id',@(self) "TargetLangOrphanChild");
  12. function check(person,expected)
  13. global Caller;
  14. # Normal target language polymorphic call
  15. ret = person.id();
  16. if (ret != expected)
  17. raise ("Failed. Received: " + ret + " Expected: " + expected);
  18. endif
  19. # Polymorphic call from C++
  20. caller = Caller();
  21. caller.setCallback(person);
  22. ret = caller.call();
  23. if (ret != expected)
  24. error ("Failed. Received: " + ret + " Expected: " + expected);
  25. endif
  26. # Polymorphic call of object created in target language and passed to C++ and back again
  27. baseclass = caller.baseClass();
  28. ret = baseclass.id();
  29. if (ret != expected)
  30. error ("Failed. Received: " + ret + " Expected: " + expected);
  31. endif
  32. caller.resetCallback();
  33. end
  34. person = Person();
  35. check(person, "Person");
  36. clear person;
  37. person = Child();
  38. check(person, "Child");
  39. clear person;
  40. person = GrandChild();
  41. check(person, "GrandChild");
  42. clear person;
  43. person = TargetLangPerson();
  44. check(person, "TargetLangPerson");
  45. clear person;
  46. person = TargetLangChild();
  47. check(person, "TargetLangChild");
  48. clear person;
  49. person = TargetLangGrandChild();
  50. check(person, "TargetLangGrandChild");
  51. clear person;
  52. # Semis - don't override id() in target language
  53. person = TargetLangSemiPerson();
  54. check(person, "Person");
  55. clear person;
  56. person = TargetLangSemiChild();
  57. check(person, "Child");
  58. clear person;
  59. person = TargetLangSemiGrandChild();
  60. check(person, "GrandChild");
  61. clear person;
  62. # Orphans - don't override id() in C++
  63. person = OrphanPerson();
  64. check(person, "Person");
  65. clear person;
  66. person = OrphanChild();
  67. check(person, "Child");
  68. clear person;
  69. person = TargetLangOrphanPerson();
  70. check(person, "TargetLangOrphanPerson");
  71. clear person;
  72. person = TargetLangOrphanChild();
  73. check(person, "TargetLangOrphanChild");
  74. clear person;