summaryrefslogtreecommitdiff
path: root/plugins/pychrysalide/core
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/pychrysalide/core')
-rw-r--r--plugins/pychrysalide/core/Makefile.am25
-rw-r--r--plugins/pychrysalide/core/global.c47
-rw-r--r--plugins/pychrysalide/core/queue.c17
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;
}