summaryrefslogtreecommitdiff
path: root/src/format/dex/class.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/dex/class.c')
-rw-r--r--src/format/dex/class.c47
1 files changed, 44 insertions, 3 deletions
diff --git a/src/format/dex/class.c b/src/format/dex/class.c
index 1dc3a40..a5181d2 100644
--- a/src/format/dex/class.c
+++ b/src/format/dex/class.c
@@ -39,6 +39,7 @@ struct _GDexClass
GObject parent; /* A laisser en premier */
class_def_item definition; /* Définition de la classe */
+ class_data_item data; /* Contenu de la classe */
GDexMethod **direct_methods; /* Méthodes propres */
size_t dmethods_count; /* Quantité de ces méthodes */
@@ -204,6 +205,7 @@ GDexClass *g_dex_class_new(GDexFormat *format, const class_def_item *def)
result = g_object_new(G_TYPE_DEX_CLASS, NULL);
result->definition = *def;
+ result->data = data;
/**
* On évite ici les méthodes (virtuelles) non définies.
@@ -254,6 +256,44 @@ GDexClass *g_dex_class_new(GDexFormat *format, const class_def_item *def)
/******************************************************************************
* *
* Paramètres : class = informations chargées à consulter. *
+* *
+* Description : Fournit la définition brute d'une classe. *
+* *
+* Retour : Données brutes issues du binaire chargé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+const class_def_item *g_dex_class_get_definition(const GDexClass *class)
+{
+ return &class->definition;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = informations chargées à consulter. *
+* *
+* Description : Fournit la définition brute des données d'une classe. *
+* *
+* Retour : Données brutes issues du binaire chargé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+const class_data_item *g_dex_class_get_data(const GDexClass *class)
+{
+ return &class->data;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = informations chargées à consulter. *
* virtual = précise la nature des méthodes ciblées. *
* *
* Description : Dénombre les méthodes chargées d'un type donné. *
@@ -309,6 +349,7 @@ GDexMethod *g_dex_class_get_method(const GDexClass *class, bool virtual, size_t
/******************************************************************************
* *
* Paramètres : class = informations chargées à consulter. *
+* format = format permettant d'obtenir une adresse complète. *
* layer = couche de portions à raffiner. *
* *
* Description : Intègre la méthode en tant que portion de code. *
@@ -319,15 +360,15 @@ GDexMethod *g_dex_class_get_method(const GDexClass *class, bool virtual, size_t
* *
******************************************************************************/
-void g_dex_class_include_as_portion(const GDexClass *class, GPortionLayer *layer)
+void g_dex_class_include_as_portion(const GDexClass *class, const GDexFormat *format, GPortionLayer *layer)
{
size_t i; /* Boucle de parcours */
for (i = 0; i < class->dmethods_count; i++)
- g_dex_method_include_as_portion(class->direct_methods[i], layer);
+ g_dex_method_include_as_portion(class->direct_methods[i], format, layer);
for (i = 0; i < class->vmethods_count; i++)
- g_dex_method_include_as_portion(class->virtual_methods[i], layer);
+ g_dex_method_include_as_portion(class->virtual_methods[i], format, layer);
}