summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-08-12 19:09:56 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-08-12 19:09:56 (GMT)
commit4c611d6f41d82603a5d37baf88b0bb213044eb60 (patch)
tree325a8928761d8daffd845be1b8470a04a243f032
parent287bfee6e805d5c9354c3a9c015ef6c64a0774a5 (diff)
Improved the python plugin code.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@570 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
-rw-r--r--ChangeLog7
-rw-r--r--plugins/pychrysa/arch/instruction.c2
-rw-r--r--plugins/pychrysa/glibext/bincontent.c46
-rw-r--r--plugins/pychrysa/gui/editem.c6
4 files changed, 52 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 050ae77..dac9be0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
15-08-12 Cyrille Bagard <nocbos@gmail.com>
+ * plugins/pychrysa/arch/instruction.c:
+ * plugins/pychrysa/glibext/bincontent.c:
+ * plugins/pychrysa/gui/editem.c:
+ Improve the python plugin code.
+
+15-08-12 Cyrille Bagard <nocbos@gmail.com>
+
* src/format/dbg_format.c:
* src/format/dbg_format.h:
* src/format/dbg_format-int.h:
diff --git a/plugins/pychrysa/arch/instruction.c b/plugins/pychrysa/arch/instruction.c
index d675226..2a06ede 100644
--- a/plugins/pychrysa/arch/instruction.c
+++ b/plugins/pychrysa/arch/instruction.c
@@ -518,7 +518,7 @@ static void py_arch_instruction_iterator_dealloc(PyArchInstructionIter *self)
{
PyObject *first; /* Récupération de la première */
- first = pychrysalide_get_pygobject(G_OBJECT(self->head));
+ first = pygobject_new(G_OBJECT(self->head));
Py_DECREF(first);
g_object_unref(G_OBJECT(self->head));
diff --git a/plugins/pychrysa/glibext/bincontent.c b/plugins/pychrysa/glibext/bincontent.c
index a418c34..085c9af 100644
--- a/plugins/pychrysa/glibext/bincontent.c
+++ b/plugins/pychrysa/glibext/bincontent.c
@@ -40,6 +40,9 @@ static PyObject *py_binary_content_new(PyTypeObject *, PyObject *, PyObject *);
/* Fournit une empreinte unique (SHA256) pour les données. */
static PyObject *py_binary_content_get_checksum(PyObject *, PyObject *);
+/* Détermine le nombre d'octets lisibles. */
+static PyObject *py_binary_content_compute_size(PyObject *, PyObject *);
+
/* Lit un nombre non signé sur un octet. */
static PyObject *py_binary_content_read_u8(PyObject *, PyObject *);
@@ -114,7 +117,36 @@ static PyObject *py_binary_content_get_checksum(PyObject *self, PyObject *args)
checksum = g_binary_content_get_cheksum(content);
result = PyUnicode_FromString(checksum);
- Py_INCREF(result);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : self = contenu binaire à manipuler. *
+* args = non utilisé ici. *
+* *
+* Description : Détermine le nombre d'octets lisibles. *
+* *
+* Retour : Quantité représentée. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_binary_content_compute_size(PyObject *self, PyObject *args)
+{
+ PyObject *result; /* Instance à retourner */
+ GBinContent *content; /* Version GLib du format */
+ phys_t size; /* Quantité d'octets dispos. */
+
+ content = G_BIN_CONTENT(pygobject_get(self));
+
+ size = g_binary_content_compute_size(content);
+
+ result = PyLong_FromUnsignedLongLong(size);
return result;
@@ -146,11 +178,11 @@ static PyObject *py_binary_content_read_u8(PyObject *self, PyObject *args)
content = G_BIN_CONTENT(pygobject_get(self));
- printf("Passage\n");
+ //printf("Passage\n");
ret = PyArg_ParseTuple(args, "O", &addr_obj);
- printf("ret == %d\n", ret);
+ //printf("ret == %d\n", ret);
if (!ret) return NULL;
@@ -160,7 +192,7 @@ static PyObject *py_binary_content_read_u8(PyObject *self, PyObject *args)
status = g_binary_content_read_u8(content, addr, &val);
if (!status) return NULL;
- printf("val :: 0x%02hhx\n", val);
+ //printf("val :: 0x%02hhx\n", val);
result = PyBytes_FromStringAndSize((char *)&val, 1);;
//Py_INCREF(result);
@@ -193,7 +225,11 @@ PyTypeObject *get_python_binary_content_type(void)
static PyMethodDef py_binary_content_methods[] = {
{ "get_cheksum", py_binary_content_get_checksum,
METH_NOARGS,
- "Compute a SHA256 hash as chechsum of handled data."
+ "get_cheksum($self, /)\n--\n\nCompute a SHA256 hash as chechsum of handled data."
+ },
+ { "compute_size", py_binary_content_compute_size,
+ METH_NOARGS,
+ "compute_size($self, /)\n--\n\nCompute the quantity of readable bytes."
},
{ "read_u8", py_binary_content_read_u8,
METH_VARARGS,
diff --git a/plugins/pychrysa/gui/editem.c b/plugins/pychrysa/gui/editem.c
index 6db03ce..e2289b0 100644
--- a/plugins/pychrysa/gui/editem.c
+++ b/plugins/pychrysa/gui/editem.c
@@ -94,7 +94,7 @@ static void _update_editor_item_for_binary_python_wrapper(GEditorItem *item, GLo
* par la procédure de pygobject, qui obligerait à connaître le type précis
* de l'instance GLib manipulée.
*/
- target = pychrysalide_get_pygobject(G_OBJECT(item));
+ target = pygobject_new(G_OBJECT(item));
args = PyTuple_New(1);
PyTuple_SetItem(args, 0, pygobject_new(G_OBJECT(binary)));
@@ -136,7 +136,7 @@ static void _update_editor_item_for_view_python_wrapper(GEditorItem *item, GtkVi
* par la procédure de pygobject, qui obligerait à connaître le type précis
* de l'instance GLib manipulée.
*/
- target = pychrysalide_get_pygobject(G_OBJECT(item));
+ target = pygobject_new(G_OBJECT(item));
args = PyTuple_New(1);
PyTuple_SetItem(args, 0, pygobject_new(G_OBJECT(view)));
@@ -178,7 +178,7 @@ static void _update_editor_item_for_view_content_python_wrapper(GEditorItem *ite
* par la procédure de pygobject, qui obligerait à connaître le type précis
* de l'instance GLib manipulée.
*/
- target = pychrysalide_get_pygobject(G_OBJECT(item));
+ target = pygobject_new(G_OBJECT(item));
args = PyTuple_New(1);
PyTuple_SetItem(args, 0, pygobject_new(G_OBJECT(view)));