diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-12-12 17:00:18 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-12-12 17:00:18 (GMT) |
commit | edcd7a2e2919ea880f8aaf649cf7ed8f1eabac1a (patch) | |
tree | 22ff6b77802aa9ebb9af3243313fb806071cc44e /plugins/pychrysalide/helpers.c | |
parent | 5c656e5bd946498400f44d696e81175437a7e9eb (diff) |
Added Python module functions in the features namespace.
Diffstat (limited to 'plugins/pychrysalide/helpers.c')
-rw-r--r-- | plugins/pychrysalide/helpers.c | 56 |
1 files changed, 56 insertions, 0 deletions
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 */ |