More flexible python builtin slots
The closure names used for builtin slots are mangled with their functype so
that overloaded C++ method names can be used for multiple slots.
For example:
%feature("python:slot", "mp_subscript", functype="binaryfunc") SimpleArray::__getitem__;
%feature("python:slot", "sq_item", functype="ssizeargfunc") SimpleArray::__getitem__(Py_ssize_t n);
will generate closures:
SWIGPY_SSIZEARGFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___ssizeargfunc_closure */
SWIGPY_BINARYFUNC_CLOSURE(_wrap_SimpleArray___getitem__) /* defines _wrap_SimpleArray___getitem___binaryfunc_closure */
This commit is contained in:
parent
5b8e8fa107
commit
848628ae91
5 changed files with 140 additions and 24 deletions
|
|
@ -79,3 +79,16 @@ if is_python_builtin():
|
|||
if MyClass.less_than_counts != 6:
|
||||
raise RuntimeError("python:compare feature not working")
|
||||
|
||||
sa = SimpleArray(5)
|
||||
elements = [x for x in sa]
|
||||
if elements != [0, 10, 20, 30, 40]:
|
||||
raise RuntimeError("Iteration not working")
|
||||
if len(sa) != 5:
|
||||
raise RuntimeError("len not working")
|
||||
for i in range(5):
|
||||
if sa[i] != i*10:
|
||||
raise RuntimeError("indexing not working")
|
||||
subslice = sa[1:3]
|
||||
elements = [x for x in subslice]
|
||||
if elements != [10, 20]:
|
||||
raise RuntimeError("slice not working")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue