diff options
Diffstat (limited to 'plugins/pychrysalide/core')
-rw-r--r-- | plugins/pychrysalide/core/Makefile.am | 25 | ||||
-rw-r--r-- | plugins/pychrysalide/core/global.c | 47 | ||||
-rw-r--r-- | plugins/pychrysalide/core/queue.c | 17 |
3 files changed, 57 insertions, 32 deletions
diff --git a/plugins/pychrysalide/core/Makefile.am b/plugins/pychrysalide/core/Makefile.am index 6c032c3..880823d 100644 --- a/plugins/pychrysalide/core/Makefile.am +++ b/plugins/pychrysalide/core/Makefile.am @@ -1,25 +1,20 @@ noinst_LTLIBRARIES = libpychrysacore.la -libpychrysacore_la_SOURCES = \ - constants.h constants.c \ - demanglers.h demanglers.c \ - global.h global.c \ - logs.h logs.c \ - module.h module.c \ - params.h params.c \ - processors.h processors.c \ +libpychrysacore_la_SOURCES = \ + constants.h constants.c \ + demanglers.h demanglers.c \ + global.h global.c \ + logs.h logs.c \ + module.h module.c \ + params.h params.c \ + processors.h processors.c \ queue.h queue.c -libpychrysacore_la_LDFLAGS = +libpychrysacore_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_INTERPRETER_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ + -I$(top_srcdir)/src -DNO_IMPORT_PYGOBJECT devdir = $(includedir)/chrysalide/$(subdir) dev_HEADERS = $(libpychrysacore_la_SOURCES:%c=) - - -AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ - -I$(top_srcdir)/src - -AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) diff --git a/plugins/pychrysalide/core/global.c b/plugins/pychrysalide/core/global.c index ecaf2c6..9632e75 100644 --- a/plugins/pychrysalide/core/global.c +++ b/plugins/pychrysalide/core/global.c @@ -187,6 +187,52 @@ static PyObject *py_global_get_content_resolver(PyObject *self, PyObject *args) * Paramètres : self = objet Python concerné par l'appel. * * args = non utilisé ici. * * * +* Description : Fournit l'adresse de l'espace de noms principal pour ROST. * +* * +* Retour : Espace de noms racine de ROST ou NULL si aucun (!). * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_global_get_rost_root_namespace(PyObject *self, PyObject *args) +{ + PyObject *result; /* Instance Python à retourner */ + GScanNamespace *root_ns; /* Espace de noms ROST racine */ + +#define GLOBAL_GET_ROST_ROOT_NAMESPACE_METHOD PYTHON_METHOD_DEF \ +( \ + get_rost_root_namespace, "", \ + METH_NOARGS, py_global, \ + "Get the root namespace for ROST." \ + "\n" \ + "The returned object is a pychrysalide.analysis.scan.ScanNamespace" \ + " instance used as singleton; it should not be *None*." \ +) + + root_ns = get_rost_root_namespace(); + + if (root_ns != NULL) + { + result = pygobject_new(G_OBJECT(root_ns)); + g_object_unref(G_OBJECT(root_ns)); + } + else + { + result = Py_None; + Py_INCREF(result); + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* args = non utilisé ici. * +* * * Description : Fournit l'adresse du projet courant. * * * * Retour : Adresse du résolveur global ou None si aucun. * @@ -289,6 +335,7 @@ bool populate_core_module_with_global(void) GLOBAL_IS_BATCH_MODE_METHOD, GLOBAL_GET_CONTENT_EXPLORER_METHOD, GLOBAL_GET_CONTENT_RESOLVER_METHOD, + GLOBAL_GET_ROST_ROOT_NAMESPACE_METHOD, GLOBAL_GET_CURRENT_PROJECT_METHOD, GLOBAL_SET_CURRENT_PROJECT_METHOD, { NULL } diff --git a/plugins/pychrysalide/core/queue.c b/plugins/pychrysalide/core/queue.c index d0fbed8..febf1b0 100644 --- a/plugins/pychrysalide/core/queue.c +++ b/plugins/pychrysalide/core/queue.c @@ -63,7 +63,6 @@ static PyObject *py_queue_wait_for_all_global_works(PyObject *, PyObject *); static PyObject *py_queue_setup_global_work_group(PyObject *self, PyObject *args) { PyObject *result; /* Valeur à retourner */ - PyThreadState *_save; /* Sauvegarde de contexte */ wgroup_id_t wid; /* Identifiant de groupe */ #define QUEUE_SETUP_GLOBAL_WORK_GROUP_METHOD PYTHON_METHOD_DEF \ @@ -79,14 +78,10 @@ static PyObject *py_queue_setup_global_work_group(PyObject *self, PyObject *args " unique identifier of a work group." \ ) - Py_UNBLOCK_THREADS; - wid = setup_global_work_group(); result = PyLong_FromUnsignedLongLong(wid); - Py_BLOCK_THREADS; - return result; } @@ -109,8 +104,6 @@ static PyObject *py_queue_setup_tiny_global_work_group(PyObject *self, PyObject { PyObject *result; /* Valeur à retourner */ unsigned int count; /* Nombre de thread parallèle */ - PyThreadState *_save; /* Sauvegarde de contexte */ - int ret; /* Bilan de lecture des args. */ wgroup_id_t wid; /* Identifiant de groupe */ @@ -131,8 +124,6 @@ static PyObject *py_queue_setup_tiny_global_work_group(PyObject *self, PyObject count = 1; - Py_UNBLOCK_THREADS; - ret = PyArg_ParseTuple(args, "|I", &count); if (!ret) goto exit; @@ -148,8 +139,6 @@ static PyObject *py_queue_setup_tiny_global_work_group(PyObject *self, PyObject exit: - Py_BLOCK_THREADS; - return result; } @@ -170,8 +159,6 @@ static PyObject *py_queue_setup_tiny_global_work_group(PyObject *self, PyObject static PyObject *py_queue_wait_for_all_global_works(PyObject *self, PyObject *args) { - PyThreadState *_save; /* Sauvegarde de contexte */ - #define QUEUE_WAIT_FOR_ALL_GLOBAL_WORKS_METHOD PYTHON_METHOD_DEF \ ( \ wait_for_all_global_works, "", \ @@ -179,12 +166,8 @@ static PyObject *py_queue_wait_for_all_global_works(PyObject *self, PyObject *ar "Wait for all global tasks being processed." \ ) - Py_UNBLOCK_THREADS; - wait_for_all_global_works(); - Py_BLOCK_THREADS; - Py_RETURN_NONE; } |