diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/pychrysalide/core/queue.c | 6 | ||||
| -rw-r--r-- | plugins/pychrysalide/helpers.c | 56 | ||||
| -rw-r--r-- | plugins/pychrysalide/helpers.h | 3 | 
3 files changed, 60 insertions, 5 deletions
| diff --git a/plugins/pychrysalide/core/queue.c b/plugins/pychrysalide/core/queue.c index 9c1365a..8d530e6 100644 --- a/plugins/pychrysalide/core/queue.c +++ b/plugins/pychrysalide/core/queue.c @@ -79,7 +79,6 @@ bool populate_core_module_with_queue(void)  {      bool result;                            /* Bilan à retourner           */      PyObject *module;                       /* Module à recompléter        */ -    int ret;                                /* Bilan d'un appel            */      static PyMethodDef py_queue_methods[] = { @@ -93,11 +92,8 @@ bool populate_core_module_with_queue(void)      module = get_access_to_python_module("pychrysalide.core"); -    ret = PyModule_AddFunctions(module, py_queue_methods); - -    result = (ret == 0); +    result = register_python_module_methods(module, py_queue_methods);      return result;  } - diff --git a/plugins/pychrysalide/helpers.c b/plugins/pychrysalide/helpers.c index 3a67e2b..5ef10eb 100644 --- a/plugins/pychrysalide/helpers.c +++ b/plugins/pychrysalide/helpers.c @@ -316,6 +316,62 @@ PyObject *build_python_module(PyObject *super, PyModuleDef *def)  } +/****************************************************************************** +*                                                                             * +*  Paramètres  : module = module dont la définition est à compléter.          * +*                defs   = définitions de méthodes pour module.                * +*                                                                             * +*  Description : Met en place une série de méthodes pour un module Python.    * +*                                                                             * +*  Retour      : Bilan de l'opération.                                        * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +bool register_python_module_methods(PyObject *module, PyMethodDef *defs) +{ +    bool result;                            /* Bilan à retourner           */ +    int ret;                                /* Bilan d'un appel            */ +    PyMethodDef *iter;                      /* Boucle de parcours          */ +    PyObject *features;                     /* Module à recompléter        */ +    PyObject *features_dict;                /* Dictionnaire à compléter    */ +    PyObject *mod_dict;                     /* Dictionnaire à consulter    */ +    PyObject *item;                         /* Nouvel élément à exporter   */ + +    ret = PyModule_AddFunctions(module, defs); +    result = (ret == 0); + +    if (result) +    { +        features = get_access_to_python_module("pychrysalide.features"); + +        features_dict = PyModule_GetDict(features); + +        mod_dict = PyModule_GetDict(module); + +        for (iter = defs; iter->ml_name != NULL && result; iter++) +        { +            item = PyDict_GetItemString(mod_dict, iter->ml_name); +            result = (item != NULL); +            assert(result); + +            if (result) +            { +                ret = PyDict_SetItemString(features_dict, iter->ml_name, item); +                result = (ret == 0); +                assert(result); +            } + +        } + +    } + +    return result; + +} + +  /* ---------------------------------------------------------------------------------- */  /*                             CONFORTS CIBLANT PYGOBJECT                             */ diff --git a/plugins/pychrysalide/helpers.h b/plugins/pychrysalide/helpers.h index d8d75af..486ebdc 100644 --- a/plugins/pychrysalide/helpers.h +++ b/plugins/pychrysalide/helpers.h @@ -64,6 +64,9 @@ bool PyDict_AddStringConstant(PyTypeObject *, const char *, const char *);  /* Met en place un nouveau module Python. */  PyObject *build_python_module(PyObject *, PyModuleDef *); +/* Met en place une série de méthodes pour un module Python. */ +bool register_python_module_methods(PyObject *, PyMethodDef *); +  /* --------------------------- CONFORTS CIBLANT PYGOBJECT --------------------------- */ | 
