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
|
import virtual_poly
|
||||||
|
|
||||||
|
|
||||||
d = virtual_poly.NDouble(3.5)
|
d = virtual_poly.NDouble(3.5)
|
||||||
i = virtual_poly.NInt(2)
|
i = virtual_poly.NInt(2)
|
||||||
|
|
||||||
|
#
|
||||||
|
# the copy methods return the right polymorphic types
|
||||||
|
#
|
||||||
dc = d.copy()
|
dc = d.copy()
|
||||||
ic = i.copy()
|
ic = i.copy()
|
||||||
|
|
||||||
|
|
@ -14,6 +16,14 @@ if i.get() != ic.get():
|
||||||
raise RuntimeError
|
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():
|
if d.get() != ddc.get():
|
||||||
raise RuntimeError
|
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 %{
|
%inline %{
|
||||||
|
|
@ -6,6 +17,12 @@
|
||||||
{
|
{
|
||||||
virtual ~NNumber() {};
|
virtual ~NNumber() {};
|
||||||
virtual NNumber* copy() const = 0;
|
virtual NNumber* copy() const = 0;
|
||||||
|
|
||||||
|
NNumber* nnumber()
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue