summaryrefslogtreecommitdiff
path: root/src/analysis/types/encaps.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-03-11 21:57:05 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-03-11 21:57:05 (GMT)
commit8088f1cbb4304c686ff41520099707a333084a4e (patch)
tree147411c3f90097dc1ae950ec390df2dfccf07ad7 /src/analysis/types/encaps.c
parenta33dd28e763e3a8b04145fb549aca9320e100a4b (diff)
Defined a new Dex demangler with MUTF-8 support as plugin.
Diffstat (limited to 'src/analysis/types/encaps.c')
-rw-r--r--src/analysis/types/encaps.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/analysis/types/encaps.c b/src/analysis/types/encaps.c
index c3cf3ce..0dfc3af 100644
--- a/src/analysis/types/encaps.c
+++ b/src/analysis/types/encaps.c
@@ -39,6 +39,8 @@ struct _GEncapsulatedType
GDataType *child; /* Sous-type encadré */
GBinRoutine *routine; /* Routine pointée */
+ size_t dimension; /* Dimension quand applicable */
+
};
/* Description de type encapsulé (classe) */
@@ -208,6 +210,7 @@ static GDataType *g_encapsulated_type_dup(const GEncapsulatedType *type)
static char *g_encapsulated_type_to_string(const GEncapsulatedType *type)
{
char *result; /* Chaîne finale à renvoyer */
+ size_t i; /* Boucle de parcours */
switch (type->type)
{
@@ -234,6 +237,11 @@ static char *g_encapsulated_type_to_string(const GEncapsulatedType *type)
break;
+ case ECT_ARRAY:
+ result = stradd(result, " ");
+ for (i = 0; i < type->dimension; i++)
+ result = stradd(result, "[]");
+ break;
case ECT_REFERENCE:
result = stradd(result, " &");
break;
@@ -339,3 +347,42 @@ void g_encapsulated_type_get_item(const GEncapsulatedType *type, ...)
va_end(ap);
}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = type à consulter. *
+* *
+* Description : Fournit la dimension éventuellement associée au type. *
+* *
+* Retour : Dimension positive ou nulle. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+size_t g_encapsulated_type_get_dimension(const GEncapsulatedType *type)
+{
+ return type->dimension;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = type à consulter. *
+* dim = dimension positive ou nulle. *
+* *
+* Description : Définit la dimension éventuellement associée au type. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_encapsulated_type_set_dimension(GEncapsulatedType *type, size_t dim)
+{
+ type->dimension = dim;
+
+}