summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2022-02-22 18:45:16 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2022-02-22 18:45:16 (GMT)
commit593eed5f8ec2c09e89fb2bde2421fc8bdda13ac0 (patch)
tree638de3cabbe0105e1532953d6bb8d2b3d7893b21
parent6238bc22b5ca4da5fa334c7f35ac3b0b052b70de (diff)
Improve Python bindings.
-rw-r--r--plugins/pychrysalide/analysis/contents/encapsulated.c3
-rw-r--r--plugins/pychrysalide/analysis/contents/memory.c6
-rw-r--r--plugins/pychrysalide/analysis/contents/restricted.c3
-rw-r--r--plugins/pychrysalide/helpers.h9
4 files changed, 20 insertions, 1 deletions
diff --git a/plugins/pychrysalide/analysis/contents/encapsulated.c b/plugins/pychrysalide/analysis/contents/encapsulated.c
index 03fce54..0e09f81 100644
--- a/plugins/pychrysalide/analysis/contents/encapsulated.c
+++ b/plugins/pychrysalide/analysis/contents/encapsulated.c
@@ -314,6 +314,9 @@ bool ensure_python_encaps_content_is_registered(void)
if (!ensure_python_serializable_object_is_registered())
return false;
+ if (!ensure_python_binary_content_is_registered())
+ return false;
+
if (!register_class_for_pygobject(dict, G_TYPE_ENCAPS_CONTENT, type, &PyGObject_Type))
return false;
diff --git a/plugins/pychrysalide/analysis/contents/memory.c b/plugins/pychrysalide/analysis/contents/memory.c
index 37b098d..4782445 100644
--- a/plugins/pychrysalide/analysis/contents/memory.c
+++ b/plugins/pychrysalide/analysis/contents/memory.c
@@ -31,6 +31,7 @@
#include <analysis/contents/memory.h>
+#include "../content.h"
#include "../storage/serialize.h"
#include "../../access.h"
#include "../../helpers.h"
@@ -153,7 +154,7 @@ PyTypeObject *get_python_memory_content_type(void)
bool ensure_python_memory_content_is_registered(void)
{
- PyTypeObject *type; /* Type Python 'MemoryContent' */
+ PyTypeObject *type; /* Type Python 'MemoryContent' */
PyObject *module; /* Module à recompléter */
PyObject *dict; /* Dictionnaire du module */
@@ -168,6 +169,9 @@ bool ensure_python_memory_content_is_registered(void)
if (!ensure_python_serializable_object_is_registered())
return false;
+ if (!ensure_python_binary_content_is_registered())
+ return false;
+
if (!register_class_for_pygobject(dict, G_TYPE_MEMORY_CONTENT, type, &PyGObject_Type))
return false;
diff --git a/plugins/pychrysalide/analysis/contents/restricted.c b/plugins/pychrysalide/analysis/contents/restricted.c
index 703f79b..47df8c5 100644
--- a/plugins/pychrysalide/analysis/contents/restricted.c
+++ b/plugins/pychrysalide/analysis/contents/restricted.c
@@ -204,6 +204,9 @@ bool ensure_python_restricted_content_is_registered(void)
if (!ensure_python_serializable_object_is_registered())
return false;
+ if (!ensure_python_binary_content_is_registered())
+ return false;
+
if (!register_class_for_pygobject(dict, G_TYPE_RESTRICTED_CONTENT, type, &PyGObject_Type))
return false;
diff --git a/plugins/pychrysalide/helpers.h b/plugins/pychrysalide/helpers.h
index 32851c0..2285259 100644
--- a/plugins/pychrysalide/helpers.h
+++ b/plugins/pychrysalide/helpers.h
@@ -277,6 +277,15 @@ int convert_to_gdk_rgba(PyObject *, void *);
})
+#define TRANSLATE_NUMERIC_FIELD(dict, base, field) \
+ ({ \
+ PyObject *__attrib; \
+ __attrib = PyLong_FromUnsignedLongLong(base->field); \
+ Py_INCREF(__attrib); \
+ ADD_FIELD_TRANSLATION(dict, #field, __attrib); \
+ })
+
+
#define TRANSLATE_STRING_FIELD(dict, base, field) \
({ \
PyObject *__attrib; \