mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Move more extension modules to multi-phase initialization
This commit is contained in:
parent
384e5744de
commit
027bf97633
@ -482,35 +482,21 @@ static PyMethodDef html_methods[] = {
|
|||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct PyModuleDef html_module = {
|
static int
|
||||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
exec_module(PyObject *mod) {
|
||||||
/* m_name */ "html_syntax_highlighter",
|
|
||||||
/* m_doc */ "Speedups for the html syntax highlighter",
|
|
||||||
/* m_size */ -1,
|
|
||||||
/* m_methods */ html_methods,
|
|
||||||
/* m_slots */ 0,
|
|
||||||
/* m_traverse */ 0,
|
|
||||||
/* m_clear */ 0,
|
|
||||||
/* m_free */ 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
CALIBRE_MODINIT_FUNC PyInit_html_syntax_highlighter(void) {
|
|
||||||
PyObject *temp, *mod = PyModule_Create(&html_module);
|
|
||||||
if (mod == NULL) return NULL;
|
|
||||||
|
|
||||||
if (PyType_Ready(&html_TagType) < 0)
|
if (PyType_Ready(&html_TagType) < 0)
|
||||||
return NULL;
|
return -1;
|
||||||
if (PyType_Ready(&html_StateType) < 0)
|
if (PyType_Ready(&html_StateType) < 0)
|
||||||
return NULL;
|
return -1;
|
||||||
|
|
||||||
temp = Py_BuildValue("ssssssss", "b", "strong", "h1", "h2", "h3", "h4", "h5", "h6", "h7");
|
PyObject *temp = Py_BuildValue("ssssssss", "b", "strong", "h1", "h2", "h3", "h4", "h5", "h6", "h7");
|
||||||
if (temp == NULL) return NULL;
|
if (temp == NULL) return -1;
|
||||||
bold_tags = PyFrozenSet_New(temp);
|
bold_tags = PyFrozenSet_New(temp);
|
||||||
Py_DECREF(temp);
|
Py_DECREF(temp);
|
||||||
temp = NULL;
|
temp = NULL;
|
||||||
|
|
||||||
temp = Py_BuildValue("ss", "i", "em");
|
temp = Py_BuildValue("ss", "i", "em");
|
||||||
if (temp == NULL) return NULL;
|
if (temp == NULL) return -1;
|
||||||
italic_tags = PyFrozenSet_New(temp);
|
italic_tags = PyFrozenSet_New(temp);
|
||||||
Py_DECREF(temp);
|
Py_DECREF(temp);
|
||||||
temp = NULL;
|
temp = NULL;
|
||||||
@ -521,7 +507,7 @@ CALIBRE_MODINIT_FUNC PyInit_html_syntax_highlighter(void) {
|
|||||||
Py_XDECREF(bold_tags);
|
Py_XDECREF(bold_tags);
|
||||||
Py_XDECREF(italic_tags);
|
Py_XDECREF(italic_tags);
|
||||||
Py_XDECREF(zero);
|
Py_XDECREF(zero);
|
||||||
return NULL;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Py_INCREF(&html_TagType);
|
Py_INCREF(&html_TagType);
|
||||||
@ -530,6 +516,17 @@ CALIBRE_MODINIT_FUNC PyInit_html_syntax_highlighter(void) {
|
|||||||
PyModule_AddObject(mod, "State", (PyObject *)&html_StateType);
|
PyModule_AddObject(mod, "State", (PyObject *)&html_StateType);
|
||||||
PyModule_AddObject(mod, "bold_tags", bold_tags);
|
PyModule_AddObject(mod, "bold_tags", bold_tags);
|
||||||
PyModule_AddObject(mod, "italic_tags", italic_tags);
|
PyModule_AddObject(mod, "italic_tags", italic_tags);
|
||||||
|
return 0;
|
||||||
return mod;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
|
||||||
|
|
||||||
|
static struct PyModuleDef module_def = {
|
||||||
|
.m_base = PyModuleDef_HEAD_INIT,
|
||||||
|
.m_name = "html_syntax_highlighter",
|
||||||
|
.m_doc = "Speedups for the html syntax highlighter",
|
||||||
|
.m_methods = html_methods,
|
||||||
|
.m_slots = slots,
|
||||||
|
};
|
||||||
|
|
||||||
|
CALIBRE_MODINIT_FUNC PyInit_html_syntax_highlighter(void) { return PyModuleDef_Init(&module_def); }
|
||||||
|
@ -379,25 +379,21 @@ static PyMethodDef certgen_methods[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static struct PyModuleDef certgen_module = {
|
static int
|
||||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
exec_module(PyObject *module) {
|
||||||
/* m_name */ "certgen",
|
|
||||||
/* m_doc */ "OpenSSL bindings to easily create certificates/certificate authorities.",
|
|
||||||
/* m_size */ -1,
|
|
||||||
/* m_methods */ certgen_methods,
|
|
||||||
/* m_slots */ 0,
|
|
||||||
/* m_traverse */ 0,
|
|
||||||
/* m_clear */ 0,
|
|
||||||
/* m_free */ 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
CALIBRE_MODINIT_FUNC PyInit_certgen(void) {
|
|
||||||
PyObject *mod = PyModule_Create(&certgen_module);
|
|
||||||
if (mod == NULL) return NULL;
|
|
||||||
|
|
||||||
OpenSSL_add_all_algorithms();
|
OpenSSL_add_all_algorithms();
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
ERR_load_BIO_strings();
|
ERR_load_BIO_strings();
|
||||||
|
return 0;
|
||||||
return mod;
|
|
||||||
}
|
}
|
||||||
|
static PyModuleDef_Slot slots[] = { {Py_mod_exec, exec_module}, {0, NULL} };
|
||||||
|
|
||||||
|
static struct PyModuleDef module_def = {
|
||||||
|
.m_base = PyModuleDef_HEAD_INIT,
|
||||||
|
.m_name = "certgen",
|
||||||
|
.m_doc = "OpenSSL bindings to easily create certificates/certificate authorities.",
|
||||||
|
.m_methods = certgen_methods,
|
||||||
|
.m_slots = slots,
|
||||||
|
};
|
||||||
|
|
||||||
|
CALIBRE_MODINIT_FUNC PyInit_certgen(void) { return PyModuleDef_Init(&module_def); }
|
||||||
|
@ -451,24 +451,21 @@ static PyMethodDef tokenizer_methods[] = {
|
|||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct PyModuleDef tokenizer_module = {
|
static int
|
||||||
/* m_base */ PyModuleDef_HEAD_INIT,
|
exec_module(PyObject *mod) {
|
||||||
/* m_name */ "tokenizer",
|
if (PyType_Ready(&tokenizer_TokenType) < 0) return -1;
|
||||||
/* m_doc */ "Implementation of tokenizer in C for speed.",
|
|
||||||
/* m_size */ -1,
|
|
||||||
/* m_methods */ tokenizer_methods,
|
|
||||||
/* m_slots */ 0,
|
|
||||||
/* m_traverse */ 0,
|
|
||||||
/* m_clear */ 0,
|
|
||||||
/* m_free */ 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
CALIBRE_MODINIT_FUNC PyInit_tokenizer(void) {
|
|
||||||
if (PyType_Ready(&tokenizer_TokenType) < 0) return NULL;
|
|
||||||
|
|
||||||
PyObject *mod = PyModule_Create(&tokenizer_module);
|
|
||||||
if (mod == NULL) return NULL;
|
|
||||||
Py_INCREF(&tokenizer_TokenType);
|
Py_INCREF(&tokenizer_TokenType);
|
||||||
PyModule_AddObject(mod, "Token", (PyObject *) &tokenizer_TokenType);
|
PyModule_AddObject(mod, "Token", (PyObject *) &tokenizer_TokenType);
|
||||||
return mod;
|
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 = "tokenizer",
|
||||||
|
.m_doc = "Implementation of tokenizer in C for speed.",
|
||||||
|
.m_methods = tokenizer_methods,
|
||||||
|
.m_slots = slots,
|
||||||
|
};
|
||||||
|
|
||||||
|
CALIBRE_MODINIT_FUNC PyInit_tokenizer(void) { return PyModuleDef_Init(&module_def); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user