summaryrefslogtreecommitdiff
path: root/plugins/pychrysalide/helpers.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-12-12 17:00:18 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-12-12 17:00:18 (GMT)
commitedcd7a2e2919ea880f8aaf649cf7ed8f1eabac1a (patch)
tree22ff6b77802aa9ebb9af3243313fb806071cc44e /plugins/pychrysalide/helpers.c
parent5c656e5bd946498400f44d696e81175437a7e9eb (diff)
Added Python module functions in the features namespace.
Diffstat (limited to 'plugins/pychrysalide/helpers.c')
-rw-r--r--plugins/pychrysalide/helpers.c56
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 */