diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-02-10 10:02:16 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-02-10 10:02:16 (GMT) |
commit | 465488d5b231c2552116a305c48b5fcccea55a09 (patch) | |
tree | f4d072ad9cf56466f4e55d0608f7a3fe9204efaf /src/format/dex/class.c | |
parent | 946f5f093c7265dc5a5e00694325605b249eea43 (diff) |
Improved the support of the DEX format.
Diffstat (limited to 'src/format/dex/class.c')
-rw-r--r-- | src/format/dex/class.c | 47 |
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); } |