diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2022-02-22 18:45:16 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2022-02-22 18:45:16 (GMT) |
commit | 593eed5f8ec2c09e89fb2bde2421fc8bdda13ac0 (patch) | |
tree | 638de3cabbe0105e1532953d6bb8d2b3d7893b21 | |
parent | 6238bc22b5ca4da5fa334c7f35ac3b0b052b70de (diff) |
Improve Python bindings.
-rw-r--r-- | plugins/pychrysalide/analysis/contents/encapsulated.c | 3 | ||||
-rw-r--r-- | plugins/pychrysalide/analysis/contents/memory.c | 6 | ||||
-rw-r--r-- | plugins/pychrysalide/analysis/contents/restricted.c | 3 | ||||
-rw-r--r-- | plugins/pychrysalide/helpers.h | 9 |
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; \ |