[pypy-commit] pypy reflex-support: test that global methods can be installed as member functions
wlav
noreply at buildbot.pypy.org
Sat Sep 14 03:47:56 CEST 2013
Author: Wim Lavrijsen <WLavrijsen at lbl.gov>
Branch: reflex-support
Changeset: r66943:70107f8d73a6
Date: 2013-09-13 11:25 -0700
http://bitbucket.org/pypy/pypy/changeset/70107f8d73a6/
Log: test that global methods can be installed as member functions
diff --git a/pypy/module/cppyy/test/example01.cxx b/pypy/module/cppyy/test/example01.cxx
--- a/pypy/module/cppyy/test/example01.cxx
+++ b/pypy/module/cppyy/test/example01.cxx
@@ -156,6 +156,10 @@
return ::globalAddOneToInt(a);
}
+int installableAddOneToInt(example01& e, int a) {
+ return e.staticAddOneToInt(a);
+}
+
int ns_example01::gMyGlobalInt = 99;
diff --git a/pypy/module/cppyy/test/example01.h b/pypy/module/cppyy/test/example01.h
--- a/pypy/module/cppyy/test/example01.h
+++ b/pypy/module/cppyy/test/example01.h
@@ -67,6 +67,8 @@
extern int gMyGlobalInt;
}
+int installableAddOneToInt(example01&, int a);
+
#define itypeValue(itype, tname) \
itype tname##Value(itype arg0, int argn=0, itype arg1=1, itype arg2=2)
diff --git a/pypy/module/cppyy/test/example01.xml b/pypy/module/cppyy/test/example01.xml
--- a/pypy/module/cppyy/test/example01.xml
+++ b/pypy/module/cppyy/test/example01.xml
@@ -8,6 +8,7 @@
<class name="z_" />
<function name="globalAddOneToInt" />
+ <function name="installableAddOneToInt" />
<namespace name="ns_example01" />
<function name="ns_example01::globalAddOneToInt" />
diff --git a/pypy/module/cppyy/test/example01_LinkDef.h b/pypy/module/cppyy/test/example01_LinkDef.h
--- a/pypy/module/cppyy/test/example01_LinkDef.h
+++ b/pypy/module/cppyy/test/example01_LinkDef.h
@@ -12,6 +12,7 @@
#pragma link C++ class z_;
#pragma link C++ function globalAddOneToInt(int);
+#pragma link C++ function installableAddOneToInt(example01&, int);
#pragma link C++ namespace ns_example01;
#pragma link C++ function ns_example01::globalAddOneToInt(int);
diff --git a/pypy/module/cppyy/test/test_pythonify.py b/pypy/module/cppyy/test/test_pythonify.py
--- a/pypy/module/cppyy/test/test_pythonify.py
+++ b/pypy/module/cppyy/test/test_pythonify.py
@@ -327,6 +327,17 @@
e = cppyy.gbl.example01(2)
assert 5 == meth(e, 3)
+ def test01_installable_function(self):
+ """Test installing and calling global C++ function as python method"""
+
+ import cppyy
+
+ cppyy.gbl.example01.fresh = cppyy.gbl.installableAddOneToInt
+
+ e = cppyy.gbl.example01(0)
+ assert 2 == e.fresh(1)
+ assert 3 == e.fresh(2)
+
class AppTestPYTHONIFY_UI:
spaceconfig = dict(usemodules=['cppyy', '_rawffi', '_ffi', 'itertools'])
More information about the pypy-commit
mailing list