mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
More multi-phase init
This commit is contained in:
parent
da1b470b54
commit
7d7b52f01c
@ -125,44 +125,31 @@ static PyMethodDef libusb_methods[] = {
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
static struct PyModuleDef libusb_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "libusb",
|
||||
/* m_doc */ libusb_doc,
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ libusb_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
};
|
||||
CALIBRE_MODINIT_FUNC PyInit_libusb(void) {
|
||||
PyObject *m;
|
||||
|
||||
static int
|
||||
exec_module(PyObject *m) {
|
||||
// We deliberately use the default context. This is the context used by
|
||||
// libmtp and we want to ensure that the busnum/devnum numbers are the same
|
||||
// here and for libmtp.
|
||||
if(libusb_init(NULL) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
if(libusb_init(NULL) != 0) return -1;
|
||||
|
||||
Error = PyErr_NewException("libusb.Error", NULL, NULL);
|
||||
if (Error == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (Error == NULL) return -1;
|
||||
cache = PyDict_New();
|
||||
if (cache == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
m = PyModule_Create(&libusb_module);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (cache == NULL) return -1;
|
||||
|
||||
PyModule_AddObject(m, "Error", Error);
|
||||
PyModule_AddObject(m, "cache", cache);
|
||||
|
||||
return m;
|
||||
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 = "libusb",
|
||||
.m_doc = libusb_doc,
|
||||
.m_methods = libusb_methods,
|
||||
.m_slots = slots,
|
||||
};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_libusb(void) { return PyModuleDef_Init(&module_def); }
|
||||
|
@ -711,34 +711,13 @@ static PyMethodDef libmtp_methods[] = {
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
||||
static struct PyModuleDef libmtp_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "libmtp",
|
||||
/* m_doc */ libmtp_doc,
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ libmtp_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
};
|
||||
CALIBRE_MODINIT_FUNC PyInit_libmtp(void) {
|
||||
static int
|
||||
exec_module(PyObject *m) {
|
||||
DeviceType.tp_new = PyType_GenericNew;
|
||||
if (PyType_Ready(&DeviceType) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PyObject *m = PyModule_Create(&libmtp_module);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (PyType_Ready(&DeviceType) < 0) return -1;
|
||||
|
||||
MTPError = PyErr_NewException("libmtp.MTPError", NULL, NULL);
|
||||
if (MTPError == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (MTPError == NULL) return -1;
|
||||
PyModule_AddObject(m, "MTPError", MTPError);
|
||||
|
||||
// Redirect stdout to get rid of the annoying message about mtpz. Really,
|
||||
@ -769,5 +748,17 @@ CALIBRE_MODINIT_FUNC PyInit_libmtp(void) {
|
||||
PyModule_AddIntMacro(m, LIBMTP_DEBUG_DATA);
|
||||
PyModule_AddIntMacro(m, LIBMTP_DEBUG_ALL);
|
||||
|
||||
return m;
|
||||
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 = "libmtp",
|
||||
.m_doc = libmtp_doc,
|
||||
.m_methods = libmtp_methods,
|
||||
.m_slots = slots,
|
||||
};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_libmtp(void) { return PyModuleDef_Init(&module_def); }
|
||||
|
@ -183,50 +183,36 @@ static PyMethodDef wpd_methods[] = {
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
static struct PyModuleDef wpd_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "wpd",
|
||||
/* m_doc */ wpd_doc,
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ wpd_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_wpd(void) {
|
||||
PyObject *m;
|
||||
|
||||
static int
|
||||
exec_module(PyObject *m) {
|
||||
wpd::DeviceType.tp_new = PyType_GenericNew;
|
||||
if (PyType_Ready(&wpd::DeviceType) < 0)
|
||||
return NULL;
|
||||
|
||||
m = PyModule_Create(&wpd_module);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (PyType_Ready(&wpd::DeviceType) < 0) return -1;
|
||||
|
||||
WPDError = PyErr_NewException("wpd.WPDError", NULL, NULL);
|
||||
if (WPDError == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (WPDError == NULL) return -1;
|
||||
PyModule_AddObject(m, "WPDError", WPDError);
|
||||
|
||||
NoWPD = PyErr_NewException("wpd.NoWPD", NULL, NULL);
|
||||
if (NoWPD == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (NoWPD == NULL) return -1;
|
||||
PyModule_AddObject(m, "NoWPD", NoWPD);
|
||||
|
||||
WPDFileBusy = PyErr_NewException("wpd.WPDFileBusy", NULL, NULL);
|
||||
if (WPDFileBusy == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (WPDFileBusy == NULL) return -1;
|
||||
PyModule_AddObject(m, "WPDFileBusy", WPDFileBusy);
|
||||
|
||||
Py_INCREF(&DeviceType);
|
||||
PyModule_AddObject(m, "Device", (PyObject *)&DeviceType);
|
||||
|
||||
return m;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {PyModuleDef_HEAD_INIT};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_wpd(void) {
|
||||
module_def.m_name = "wpd";
|
||||
module_def.m_slots = slots;
|
||||
module_def.m_doc = wpd_doc;
|
||||
module_def.m_methods = wpd_methods;
|
||||
return PyModuleDef_Init(&module_def);
|
||||
}
|
||||
|
@ -460,21 +460,17 @@ static PyMethodDef usbobserver_methods[] = {
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
static int
|
||||
exec_module(PyObject *module) { return 0; }
|
||||
|
||||
static struct PyModuleDef usbobserver_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "usbobserver",
|
||||
/* m_doc */ usbobserver_doc,
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ usbobserver_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {
|
||||
.m_base = PyModuleDef_HEAD_INIT,
|
||||
.m_name = "usbobserver",
|
||||
.m_doc = usbobserver_doc,
|
||||
.m_methods = usbobserver_methods,
|
||||
.m_slots = slots,
|
||||
};
|
||||
CALIBRE_MODINIT_FUNC PyInit_usbobserver(void) {
|
||||
PyObject *m = NULL;
|
||||
m = PyModule_Create(&usbobserver_module);
|
||||
|
||||
return m;
|
||||
}
|
||||
CALIBRE_MODINIT_FUNC PyInit_usbobserver(void) { return PyModuleDef_Init(&module_def); }
|
||||
|
@ -101,22 +101,16 @@ static PyMethodDef module_methods[] = {
|
||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
static int
|
||||
exec_module(PyObject *module) { return 0; }
|
||||
|
||||
static struct PyModuleDef cocoa_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "cocoa",
|
||||
/* m_doc */ "",
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ module_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {
|
||||
.m_base = PyModuleDef_HEAD_INIT,
|
||||
.m_name = "cocoa",
|
||||
.m_methods = module_methods,
|
||||
.m_slots = slots,
|
||||
};
|
||||
CALIBRE_MODINIT_FUNC PyInit_cocoa(void) {
|
||||
PyObject *m = PyModule_Create(&cocoa_module);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_cocoa(void) { return PyModuleDef_Init(&module_def); }
|
||||
|
@ -234,27 +234,8 @@ static PyMethodDef winfonts_methods[] = {
|
||||
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
|
||||
static struct PyModuleDef winfonts_module = {
|
||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
||||
/* m_name */ "winfonts",
|
||||
/* m_doc */ winfonts_doc,
|
||||
/* m_size */ -1,
|
||||
/* m_methods */ winfonts_methods,
|
||||
/* m_slots */ 0,
|
||||
/* m_traverse */ 0,
|
||||
/* m_clear */ 0,
|
||||
/* m_free */ 0,
|
||||
};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_winfonts(void) {
|
||||
PyObject *m;
|
||||
m = PyModule_Create(&winfonts_module);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
exec_module(PyObject *m) {
|
||||
PyModule_AddIntMacro(m, FW_DONTCARE);
|
||||
PyModule_AddIntMacro(m, FW_THIN);
|
||||
PyModule_AddIntMacro(m, FW_EXTRALIGHT);
|
||||
@ -271,5 +252,17 @@ CALIBRE_MODINIT_FUNC PyInit_winfonts(void) {
|
||||
PyModule_AddIntMacro(m, FW_HEAVY);
|
||||
PyModule_AddIntMacro(m, FW_BLACK);
|
||||
|
||||
return m;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {PyModuleDef_HEAD_INIT};
|
||||
|
||||
CALIBRE_MODINIT_FUNC PyInit_winfonts(void) {
|
||||
module_def.m_name = "winfonts";
|
||||
module_def.m_slots = slots;
|
||||
module_def.m_doc = winfonts_doc;
|
||||
module_def.m_methods = winfonts_methods;
|
||||
return PyModuleDef_Init(&module_def);
|
||||
}
|
||||
|
@ -506,10 +506,9 @@ exec_module(PyObject *m) {
|
||||
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {0};
|
||||
static struct PyModuleDef module_def = {PyModuleDef_HEAD_INIT};
|
||||
|
||||
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;
|
||||
|
@ -1395,10 +1395,9 @@ exec_module(PyObject *m) {
|
||||
|
||||
static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} };
|
||||
|
||||
static struct PyModuleDef module_def = {0};
|
||||
static struct PyModuleDef module_def = {PyModuleDef_HEAD_INIT};
|
||||
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user