summaryrefslogtreecommitdiff
path: root/plugins/dex/python/method.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-05-07 21:53:40 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-05-07 21:53:40 (GMT)
commitdd2b41538e20de5472cd8c888c530327a1351866 (patch)
tree7f9a24a32ecd33aacb98a5d1ec4234011c1364a6 /plugins/dex/python/method.c
parentb92a5e56de9198c08956ce486cd12712d7034731 (diff)
Read raw Dex items by extending the API.
Diffstat (limited to 'plugins/dex/python/method.c')
-rw-r--r--plugins/dex/python/method.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/dex/python/method.c b/plugins/dex/python/method.c
index 5a06403..1bffbff 100644
--- a/plugins/dex/python/method.c
+++ b/plugins/dex/python/method.c
@@ -36,6 +36,9 @@
+/* Fournit les identifiants Dex concernant la méthode. */
+static PyObject *py_dex_method_get_id_item(PyObject *, void *);
+
/* Fournit les indications Dex concernant la méthode. */
static PyObject *py_dex_method_get_encoded(PyObject *, void *);
@@ -52,6 +55,47 @@ static PyObject *py_dex_method_get_routine(PyObject *, void *);
* Paramètres : self = objet Python concerné par l'appel. *
* closure = non utilisé ici. *
* *
+* Description : Fournit les identifiants Dex concernant la méthode. *
+* *
+* Retour : Données brutes issues du binaire chargé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_dex_method_get_id_item(PyObject *self, void *closure)
+{
+ PyObject *result; /* Valeur à retourner */
+ GDexMethod *method; /* Version native */
+ const method_id_item *id_item; /* Elément à traiter */
+
+#define DEX_METHOD_ID_ITEM_ATTRIB PYTHON_GET_DEF_FULL \
+( \
+ id_item, py_dex_method, \
+ "pychrysalide.PyStructObject instance of identifiers used by the method.\n" \
+ "\n" \
+ "All the fields are extracted from the Dex *method_id_item* structure:\n" \
+ "* class_idx: index into the *type_ids* list for the definer of the method ;\n" \
+ "* proto_idx: index into the *proto_ids* list for the prototype of the method ;\n" \
+ "* name_idx: index into the *string_ids* list for the name of the method." \
+)
+
+ method = G_DEX_METHOD(pygobject_get(self));
+
+ id_item = g_dex_method_get_dex_id_item(method);
+
+ result = translate_dex_method_id_to_python(id_item);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : self = objet Python concerné par l'appel. *
+* closure = non utilisé ici. *
+* *
* Description : Fournit les indications Dex concernant la méthode. *
* *
* Retour : Données brutes issues du binaire chargé. *
@@ -165,6 +209,7 @@ PyTypeObject *get_python_dex_method_type(void)
};
static PyGetSetDef py_dex_method_getseters[] = {
+ DEX_METHOD_ID_ITEM_ATTRIB,
{
"encoded", py_dex_method_get_encoded, NULL,
"Encoded information about the Dex method.", NULL