Multi-phase init for more modules

This commit is contained in:
Kovid Goyal 2020-10-24 14:13:54 +05:30
parent ecc02cfb5a
commit 384e5744de
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 42 additions and 50 deletions

View File

@ -93,24 +93,18 @@ static PyMethodDef methods[] = {
{NULL} /* Sentinel */
};
static struct PyModuleDef module = {
/* m_base */ PyModuleDef_HEAD_INIT,
/* m_name */ "hyphen",
/* m_doc */ doc,
/* m_size */ -1,
/* m_methods */ methods,
/* m_slots */ 0,
/* m_traverse */ 0,
/* m_clear */ 0,
/* m_free */ 0,
static int
exec_module(PyObject *module) { return 0; }
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
static struct PyModuleDef module_def = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "hyphen",
.m_doc = doc,
.m_methods = methods,
.m_slots = slots,
};
CALIBRE_MODINIT_FUNC PyInit_hyphen(void) {
PyObject* m = PyModule_Create(&module);
if (m == NULL) {
return NULL;
}
return m;
}
CALIBRE_MODINIT_FUNC PyInit_hyphen(void) { return PyModuleDef_Init(&module_def); }
// }}}

View File

@ -506,13 +506,13 @@ exec_module(PyObject *m) {
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
static struct PyModuleDef module_def = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "winsapi",
.m_doc = "SAPI wrapper",
.m_methods = winsapi_methods,
.m_slots = slots,
};
static struct PyModuleDef module_def = {0};
CALIBRE_MODINIT_FUNC PyInit_winsapi(void) {return PyModuleDef_Init(&module_def); }
CALIBRE_MODINIT_FUNC PyInit_winsapi(void) {
module_def.m_base = PyModuleDef_HEAD_INIT;
module_def.m_name = "winsapi";
module_def.m_doc = "SAPI wrapper";
module_def.m_methods = winsapi_methods;
module_def.m_slots = slots;
return PyModuleDef_Init(&module_def);
}

View File

@ -1395,13 +1395,13 @@ exec_module(PyObject *m) {
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
static struct PyModuleDef module_def = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "winutil",
.m_doc = winutil_doc,
.m_methods = winutil_methods,
.m_slots = slots,
};
static struct PyModuleDef module_def = {0};
CALIBRE_MODINIT_FUNC PyInit_winutil(void) {return PyModuleDef_Init(&module_def); }
CALIBRE_MODINIT_FUNC PyInit_winutil(void) {
module_def.m_base = PyModuleDef_HEAD_INIT;
module_def.m_name = "winutil";
module_def.m_doc = winutil_doc;
module_def.m_methods = winutil_methods;
module_def.m_slots = slots;
return PyModuleDef_Init(&module_def);
}

View File

@ -81,19 +81,17 @@ static PyMethodDef unicode_names_methods[] = {
{NULL, NULL, 0, NULL} /* Sentinel */
};
static struct PyModuleDef unicode_names_module = {
/* m_base */ PyModuleDef_HEAD_INIT,
/* m_name */ "unicode_names",
/* m_doc */ "A library to assist with selecting special characters",
/* m_size */ -1,
/* m_methods */ unicode_names_methods,
/* m_slots */ 0,
/* m_traverse */ 0,
/* m_clear */ 0,
/* m_free */ 0,
static int
exec_module(PyObject *module) { return 0; }
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
static struct PyModuleDef module_def = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "unicode_names",
.m_doc = "A library to assist with selecting special characters",
.m_methods = unicode_names_methods,
.m_slots = slots,
};
CALIBRE_MODINIT_FUNC PyInit_unicode_names(void) {
// Create the module
return PyModule_Create(&unicode_names_module);
}
CALIBRE_MODINIT_FUNC PyInit_unicode_names(void) { return PyModuleDef_Init(&module_def); }