Initial commit of Octave module.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10290 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
50b1578e19
commit
393391965c
275 changed files with 14004 additions and 5 deletions
98
Examples/test-suite/octave/director_classic_runme.m
Normal file
98
Examples/test-suite/octave/director_classic_runme.m
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
director_classic
|
||||
|
||||
TargetLangPerson=@() subclass(Person(),'id',@(self) "TargetLangPerson");
|
||||
TargetLangChild=@() subclass(Child(),'id',@(self) "TargetLangChild");
|
||||
TargetLangGrandChild=@() subclass(GrandChild(),'id',@(self) "TargetLangGrandChild");
|
||||
|
||||
# Semis - don't override id() in target language
|
||||
TargetLangSemiPerson=@() subclass(Person());
|
||||
TargetLangSemiChild=@() subclass(Child());
|
||||
TargetLangSemiGrandChild=@() subclass(GrandChild());
|
||||
|
||||
# Orphans - don't override id() in C++
|
||||
TargetLangOrphanPerson=@() subclass(OrphanPerson(),'id',@(self) "TargetLangOrphanPerson");
|
||||
TargetLangOrphanChild=@() subclass(OrphanChild(),'id',@(self) "TargetLangOrphanChild");
|
||||
|
||||
|
||||
function check(person,expected)
|
||||
global Caller;
|
||||
|
||||
# Normal target language polymorphic call
|
||||
ret = person.id();
|
||||
if (ret != expected)
|
||||
raise ("Failed. Received: " + ret + " Expected: " + expected);
|
||||
endif
|
||||
|
||||
# Polymorphic call from C++
|
||||
caller = Caller();
|
||||
caller.setCallback(person);
|
||||
ret = caller.call();
|
||||
if (ret != expected)
|
||||
error ("Failed. Received: " + ret + " Expected: " + expected);
|
||||
endif
|
||||
|
||||
# Polymorphic call of object created in target language and passed to C++ and back again
|
||||
baseclass = caller.baseClass();
|
||||
ret = baseclass.id();
|
||||
if (ret != expected)
|
||||
error ("Failed. Received: " + ret + " Expected: " + expected);
|
||||
endif
|
||||
|
||||
caller.resetCallback();
|
||||
end
|
||||
|
||||
|
||||
person = Person();
|
||||
check(person, "Person");
|
||||
clear person;
|
||||
|
||||
person = Child();
|
||||
check(person, "Child");
|
||||
clear person;
|
||||
|
||||
person = GrandChild();
|
||||
check(person, "GrandChild");
|
||||
clear person;
|
||||
|
||||
person = TargetLangPerson();
|
||||
check(person, "TargetLangPerson");
|
||||
clear person;
|
||||
|
||||
person = TargetLangChild();
|
||||
check(person, "TargetLangChild");
|
||||
clear person;
|
||||
|
||||
person = TargetLangGrandChild();
|
||||
check(person, "TargetLangGrandChild");
|
||||
clear person;
|
||||
|
||||
# Semis - don't override id() in target language
|
||||
person = TargetLangSemiPerson();
|
||||
check(person, "Person");
|
||||
clear person;
|
||||
|
||||
person = TargetLangSemiChild();
|
||||
check(person, "Child");
|
||||
clear person;
|
||||
|
||||
person = TargetLangSemiGrandChild();
|
||||
check(person, "GrandChild");
|
||||
clear person;
|
||||
|
||||
# Orphans - don't override id() in C++
|
||||
person = OrphanPerson();
|
||||
check(person, "Person");
|
||||
clear person;
|
||||
|
||||
person = OrphanChild();
|
||||
check(person, "Child");
|
||||
clear person;
|
||||
|
||||
person = TargetLangOrphanPerson();
|
||||
check(person, "TargetLangOrphanPerson");
|
||||
clear person;
|
||||
|
||||
person = TargetLangOrphanChild();
|
||||
check(person, "TargetLangOrphanChild");
|
||||
clear person;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue