add support for multi-inheritance at the python side and performance tunings
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7819 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
253d0dd65a
commit
42277fcfd7
9 changed files with 426 additions and 174 deletions
|
|
@ -38,8 +38,8 @@ b = director_basic.Bar(3)
|
|||
d = director_basic.MyClass()
|
||||
c = PyClass()
|
||||
|
||||
cc = PyClass.get_self(c)
|
||||
dd = PyClass.get_self(d)
|
||||
cc = director_basic.MyClass_get_self(c)
|
||||
dd = director_basic.MyClass_get_self(d)
|
||||
|
||||
bc = cc.cmethod(b)
|
||||
bd = dd.cmethod(b)
|
||||
|
|
@ -51,3 +51,40 @@ if bc.x != 34:
|
|||
if bd.x != 16:
|
||||
raise RuntimeError
|
||||
|
||||
|
||||
|
||||
class PyMulti(director_basic.Foo, director_basic.MyClass):
|
||||
def __init__(self):
|
||||
director_basic.Foo.__init__(self)
|
||||
director_basic.MyClass.__init__(self)
|
||||
pass
|
||||
|
||||
|
||||
def vmethod(self, b):
|
||||
b.x += 31
|
||||
return b
|
||||
|
||||
|
||||
def ping(self):
|
||||
return "PyFoo::ping()"
|
||||
|
||||
a = 0
|
||||
for i in range(0,100):
|
||||
pymult = PyMulti()
|
||||
pymult.pong()
|
||||
del pymult
|
||||
|
||||
|
||||
|
||||
pymult = PyMulti()
|
||||
|
||||
|
||||
|
||||
|
||||
p1 = director_basic.Foo_get_self(pymult)
|
||||
p2 = director_basic.MyClass_get_self(pymult)
|
||||
|
||||
p1.ping()
|
||||
p2.vmethod(bc)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ from director_finalizer import *
|
|||
class MyFoo(Foo):
|
||||
def __del__(self):
|
||||
self.orStatus(2)
|
||||
Foo.__del__(self)
|
||||
try: Foo.__del__(self)
|
||||
except: pass
|
||||
|
||||
|
||||
resetStatus()
|
||||
|
|
|
|||
|
|
@ -4,3 +4,6 @@ a = A()
|
|||
b = B()
|
||||
|
||||
b.acquire(a)
|
||||
|
||||
if a.this.own():
|
||||
raise RuntimeError
|
||||
|
|
|
|||
|
|
@ -1,27 +1,29 @@
|
|||
import _profiletest
|
||||
import profiletest
|
||||
|
||||
a = profiletest.A()
|
||||
b = profiletest.B()
|
||||
fn = b.fn
|
||||
i = 50000
|
||||
while i:
|
||||
a = b.fn(a) #1
|
||||
a = b.fn(a) #2
|
||||
a = b.fn(a) #3
|
||||
a = b.fn(a) #4
|
||||
a = b.fn(a) #5
|
||||
a = b.fn(a) #6
|
||||
a = b.fn(a) #7
|
||||
a = b.fn(a) #8
|
||||
a = b.fn(a) #9
|
||||
a = b.fn(a) #10
|
||||
a = b.fn(a) #1
|
||||
a = b.fn(a) #2
|
||||
a = b.fn(a) #3
|
||||
a = b.fn(a) #4
|
||||
a = b.fn(a) #5
|
||||
a = b.fn(a) #6
|
||||
a = b.fn(a) #7
|
||||
a = b.fn(a) #8
|
||||
a = b.fn(a) #9
|
||||
a = b.fn(a) #20
|
||||
a = fn(a) #1
|
||||
a = fn(a) #2
|
||||
a = fn(a) #3
|
||||
a = fn(a) #4
|
||||
a = fn(a) #5
|
||||
a = fn(a) #6
|
||||
a = fn(a) #7
|
||||
a = fn(a) #8
|
||||
a = fn(a) #9
|
||||
a = fn(a) #10
|
||||
a = fn(a) #1
|
||||
a = fn(a) #2
|
||||
a = fn(a) #3
|
||||
a = fn(a) #4
|
||||
a = fn(a) #5
|
||||
a = fn(a) #6
|
||||
a = fn(a) #7
|
||||
a = fn(a) #8
|
||||
a = fn(a) #9
|
||||
a = fn(a) #20
|
||||
i -= 1
|
||||
|
|
|
|||
54
SWIG/Examples/test-suite/python/profiletestc_runme.py
Normal file
54
SWIG/Examples/test-suite/python/profiletestc_runme.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import _profiletest
|
||||
#import profiletest
|
||||
|
||||
pa = _profiletest.new_A()
|
||||
pb = _profiletest.new_B()
|
||||
fn = _profiletest.B_fn
|
||||
destroy = _profiletest.delete_A
|
||||
i = 50000
|
||||
a = pa
|
||||
while i:
|
||||
a = fn(pb,a) #1
|
||||
destroy(a)
|
||||
a = fn(pb,a) #2
|
||||
destroy(a)
|
||||
a = fn(pb,a) #3
|
||||
destroy(a)
|
||||
a = fn(pb,a) #4
|
||||
destroy(a)
|
||||
a = fn(pb,a) #5
|
||||
destroy(a)
|
||||
a = fn(pb,a) #6
|
||||
destroy(a)
|
||||
a = fn(pb,a) #7
|
||||
destroy(a)
|
||||
a = fn(pb,a) #8
|
||||
destroy(a)
|
||||
a = fn(pb,a) #9
|
||||
destroy(a)
|
||||
a = fn(pb,a) #10
|
||||
destroy(a)
|
||||
a = fn(pb,a) #1
|
||||
destroy(a)
|
||||
a = fn(pb,a) #2
|
||||
destroy(a)
|
||||
a = fn(pb,a) #3
|
||||
destroy(a)
|
||||
a = fn(pb,a) #4
|
||||
destroy(a)
|
||||
a = fn(pb,a) #5
|
||||
destroy(a)
|
||||
a = fn(pb,a) #6
|
||||
destroy(a)
|
||||
a = fn(pb,a) #7
|
||||
destroy(a)
|
||||
a = fn(pb,a) #8
|
||||
destroy(a)
|
||||
a = fn(pb,a) #9
|
||||
destroy(a)
|
||||
a = fn(pb,a) #20
|
||||
destroy(a)
|
||||
i -= 1
|
||||
|
||||
_profiletest.delete_A(pa)
|
||||
_profiletest.delete_B(pb)
|
||||
Loading…
Add table
Add a link
Reference in a new issue