Fix Python low-level static member setters.
The low-level API for setting static member variables stopped working when the fastunpack option was turned on by default. The PyMethodDef setup requires METH_O, not METH_VARARGS with fastunpack.
This commit is contained in:
parent
2bb5eeef91
commit
826f1448b8
2 changed files with 26 additions and 1 deletions
|
|
@ -45,3 +45,28 @@ if not cvar.StaticBase_statty == 22: raise RuntimeError("cvar statty not 22")
|
|||
if not StaticBase.grab_statty_base() == 22: raise RuntimeError("cvar statty not 22")
|
||||
if not cvar.StaticDerived_statty == 222: raise RuntimeError("cvar statty not 222")
|
||||
if not StaticDerived.grab_statty_derived() == 222: raise RuntimeError("cvar statty not 222")
|
||||
|
||||
# Restore
|
||||
cvar.StaticMemberTest_static_int = 99
|
||||
cvar.StaticBase_statty = 11
|
||||
cvar.StaticDerived_statty = 111
|
||||
|
||||
# Low-level layer testing
|
||||
if not is_python_builtin():
|
||||
from cpp_static import _cpp_static
|
||||
if not _cpp_static.StaticMemberTest_static_int_get() == 99: raise RuntimeError("low-level static_int not 99")
|
||||
if not StaticMemberTest.grab_int() == 99: raise RuntimeError("low-level static_int not 99")
|
||||
_cpp_static.StaticMemberTest_static_int_set(10)
|
||||
if not _cpp_static.StaticMemberTest_static_int_get() == 10: raise RuntimeError("low-level static_int not 10")
|
||||
if not StaticMemberTest.grab_int() == 10: raise RuntimeError("low-level static_int not 10")
|
||||
|
||||
if not _cpp_static.StaticBase_statty_get() == 11: raise RuntimeError("low-level statty not 11")
|
||||
if not StaticBase.grab_statty_base() == 11: raise RuntimeError("low-level statty not 11")
|
||||
if not _cpp_static.StaticDerived_statty_get() == 111: raise RuntimeError("low-level statty not 111")
|
||||
if not StaticDerived.grab_statty_derived() == 111: raise RuntimeError("low-level statty not 111")
|
||||
_cpp_static.StaticBase_statty_set(22)
|
||||
_cpp_static.StaticDerived_statty_set(222)
|
||||
if not _cpp_static.StaticBase_statty_get() == 22: raise RuntimeError("low-level statty not 22")
|
||||
if not StaticBase.grab_statty_base() == 22: raise RuntimeError("low-level statty not 22")
|
||||
if not _cpp_static.StaticDerived_statty_get() == 222: raise RuntimeError("low-level statty not 222")
|
||||
if not StaticDerived.grab_statty_derived() == 222: raise RuntimeError("low-level statty not 222")
|
||||
|
|
|
|||
|
|
@ -2426,7 +2426,7 @@ public:
|
|||
void add_method(String *name, String *function, int kw, Node *n = 0, int funpack = 0, int num_required = -1, int num_arguments = -1) {
|
||||
String * meth_str = NewString("");
|
||||
if (!kw) {
|
||||
if (n && funpack) {
|
||||
if (funpack) {
|
||||
if (num_required == 0 && num_arguments == 0) {
|
||||
Printf(meth_str, "\t { \"%s\", %s, METH_NOARGS, ", name, function);
|
||||
} else if (num_required == 1 && num_arguments == 1) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue