Python 3: Fix module init

This commit is contained in:
Houzéfa Abbasbhay 2014-12-01 12:54:01 +01:00 committed by Benjamin Dauvergne
parent e4ebeefab3
commit a4b1749c3c
1 changed files with 24 additions and 4 deletions

View File

@ -1,12 +1,30 @@
PyMODINIT_FUNC
init_lasso(void)
// Module init has changed quite a bit between Python 2 & 3.
// Defines taken from <http://python3porting.com/cextensions.html>.
#if PY_MAJOR_VERSION >= 3
#define MOD_ERROR_VAL NULL
#define MOD_SUCCESS_VAL(val) val
#define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void)
#define MOD_DEF(ob, name, doc, methods) \
static struct PyModuleDef moduledef = { \
PyModuleDef_HEAD_INIT, name, doc, -1, methods, }; \
ob = PyModule_Create(&moduledef);
#else
#define MOD_ERROR_VAL
#define MOD_SUCCESS_VAL(val)
#define MOD_INIT(name) void init##name(void)
#define MOD_DEF(ob, name, doc, methods) \
ob = Py_InitModule3(name, methods, doc);
#endif
MOD_INIT(_lasso)
{
PyObject *m, *d;
if (PyType_Ready(&PyGObjectPtrType) < 0)
return;
return MOD_ERROR_VAL;
m = Py_InitModule3("_lasso", lasso_methods, "_lasso wrapper module");
MOD_DEF(m, "_lasso", "_lasso wrapper module", lasso_methods);
d = PyModule_GetDict(m);
register_constants(d);
@ -17,5 +35,7 @@ init_lasso(void)
lasso_init();
lasso_log_set_handler(G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION | G_LOG_LEVEL_MASK,
lasso_python_log, NULL);
return MOD_SUCCESS_VAL(m);
}