added the ruby runtime case and more comments.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5584 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
8cc5b25f18
commit
575a54adfd
3 changed files with 52 additions and 3 deletions
|
|
@ -1,9 +1,11 @@
|
|||
import virtual_poly
|
||||
|
||||
|
||||
d = virtual_poly.NDouble(3.5)
|
||||
i = virtual_poly.NInt(2)
|
||||
|
||||
#
|
||||
# the copy methods return the right polymorphic types
|
||||
#
|
||||
dc = d.copy()
|
||||
ic = i.copy()
|
||||
|
||||
|
|
@ -14,6 +16,14 @@ if i.get() != ic.get():
|
|||
raise RuntimeError
|
||||
|
||||
|
||||
ddc = virtual_poly.NDouble_dynamic_cast(dc)
|
||||
#
|
||||
# here this dynamic_cast is not needed at all,
|
||||
# but works fine anyway ('nnumber()' returns a NNumber).
|
||||
#
|
||||
ddc = virtual_poly.NDouble_dynamic_cast(dc.nnumber())
|
||||
if d.get() != ddc.get():
|
||||
raise RuntimeError
|
||||
|
||||
dic = virtual_poly.NInt_dynamic_cast(ic.nnumber())
|
||||
if i.get() != dic.get():
|
||||
raise RuntimeError
|
||||
|
|
|
|||
22
SWIG/Examples/test-suite/ruby/virtual_poly_runme.rb
Normal file
22
SWIG/Examples/test-suite/ruby/virtual_poly_runme.rb
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
require 'virtual_poly'
|
||||
|
||||
d = Virtual_poly::NDouble.new(3.5)
|
||||
i = Virtual_poly::NInt.new(2)
|
||||
|
||||
#
|
||||
# polymorphic return type working
|
||||
#
|
||||
dc = d.copy
|
||||
ic = i.copy
|
||||
|
||||
raise RuntimeError if d.get != dc.get
|
||||
raise RuntimeError if i.get != ic.get
|
||||
|
||||
#
|
||||
# dynamic cast working ('nnumber' returns a NNumber)
|
||||
#
|
||||
ddc = Virtual_poly.NDouble_dynamic_cast(dc.nnumber)
|
||||
raise RuntimeError if d.get != ddc.get
|
||||
|
||||
dic = Virtual_poly.NInt_dynamic_cast(ic.nnumber)
|
||||
raise RuntimeError if i.get != dic.get
|
||||
|
|
@ -1,4 +1,15 @@
|
|||
%module virtual_poly
|
||||
%module(directors="1") virtual_poly
|
||||
|
||||
//
|
||||
// Check this example with directors wherever is possible.
|
||||
// It seems to be a good test since it breaks ruby at least.
|
||||
// python works fine with and without directors
|
||||
// In theory, Java should starts working with directors,
|
||||
// but this is not tested yet (my Java installation is broken).
|
||||
//
|
||||
//%feature("director");
|
||||
|
||||
%newobject *::copy();
|
||||
|
||||
|
||||
%inline %{
|
||||
|
|
@ -6,6 +17,12 @@
|
|||
{
|
||||
virtual ~NNumber() {};
|
||||
virtual NNumber* copy() const = 0;
|
||||
|
||||
NNumber* nnumber()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue