diff options
Diffstat (limited to 'plugins/pychrysalide/arch/vmpa.c')
-rw-r--r-- | plugins/pychrysalide/arch/vmpa.c | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/plugins/pychrysalide/arch/vmpa.c b/plugins/pychrysalide/arch/vmpa.c index 39b5cef..883491f 100644 --- a/plugins/pychrysalide/arch/vmpa.c +++ b/plugins/pychrysalide/arch/vmpa.c @@ -32,6 +32,7 @@ #include <i18n.h> +#include "../access.h" #include "../helpers.h" @@ -678,23 +679,33 @@ PyTypeObject *get_python_vmpa_type(void) * * ******************************************************************************/ -bool register_python_vmpa(PyObject *module) +bool ensure_python_vmpa_is_registered(void) { - PyTypeObject *py_vmpa_type; /* Type Python pour 'vmpa' */ + PyTypeObject *type; /* Type Python pour 'vmpa' */ + PyObject *module; /* Module à recompléter */ int ret; /* Bilan d'un appel */ - py_vmpa_type = get_python_vmpa_type(); + type = get_python_vmpa_type(); + + if (!PyType_HasFeature(type, Py_TPFLAGS_READY)) + { + if (PyType_Ready(type) != 0) + return false; + + if (!py_vmpa_define_constants(type)) + return false; + + module = get_access_to_python_module("pychrysalide.arch"); - if (PyType_Ready(py_vmpa_type) != 0) - return false; + Py_INCREF(type); + ret = PyModule_AddObject(module, "vmpa", (PyObject *)type); - if (!py_vmpa_define_constants(py_vmpa_type)) - return false; + if (ret != 0) + return false; - Py_INCREF(py_vmpa_type); - ret = PyModule_AddObject(module, "vmpa", (PyObject *)py_vmpa_type); + } - return (ret == 0); + return true; } @@ -1234,20 +1245,30 @@ PyTypeObject *get_python_mrange_type(void) * * ******************************************************************************/ -bool register_python_mrange(PyObject *module) +bool ensure_python_mrange_is_registered(void) { - PyTypeObject *py_mrange_type; /* Type Python pour 'mrange' */ + PyTypeObject *type; /* Type Python pour 'mrange' */ + PyObject *module; /* Module à recompléter */ int ret; /* Bilan d'un appel */ - py_mrange_type = get_python_mrange_type(); + type = get_python_mrange_type(); + + if (!PyType_HasFeature(type, Py_TPFLAGS_READY)) + { + if (PyType_Ready(type) != 0) + return false; - if (PyType_Ready(py_mrange_type) != 0) - return false; + module = get_access_to_python_module("pychrysalide.arch"); - Py_INCREF(py_mrange_type); - ret = PyModule_AddObject(module, "mrange", (PyObject *)py_mrange_type); + Py_INCREF(type); + ret = PyModule_AddObject(module, "mrange", (PyObject *)type); + + if (ret != 0) + return false; + + } - return (ret == 0); + return true; } |