/* Testcase to test %pythonprepend and %pythonappend %pythoncode %pythonbegin */ %module python_append %pythoncode %{ mypath = os.path.dirname("/a/b/c/d.txt") funcpath = None staticfuncpath = None def grabpath(): return funcpath def grabstaticpath(): return staticfuncpath def clearstaticpath(): global staticfuncpath staticfuncpath = None %} %pythonappend Test::funk %{ funcpath = os.path.dirname(funcpath) %} %pythonprepend Test::funk %{ global funcpath funcpath = mypath %} %pythonappend Test::static_func %{ staticfuncpath = os.path.basename(staticfuncpath) pass %} %pythonprepend Test::static_func { global staticfuncpath staticfuncpath = mypath pass } %pythonbegin %{ import os.path %} %inline %{ class Test { public: static void static_func() {}; void funk() {}; }; %} // Github issue #1674 %extend ForSlots { %pythoncode %{ __slots__ = ["this"] %} } // While __slots__ does not contain 'ValidVariable' in the list, it is still possible // to set 'ValidVariable'. A little odd, but the whole attribute setting is bypassed // for setting C/C++ member variables. // Not sure how to test the equivalent for -builtin. %inline %{ struct ForSlots { int ValidVariable; ForSlots() : ValidVariable(99) {} }; %} %inline %{ #ifdef SWIGPYTHON_BUILTIN bool is_python_builtin() { return true; } #else bool is_python_builtin() { return false; } #endif %}