diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2015-10-01 10:04:22 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2015-10-01 10:04:22 (GMT) |
commit | 9aa5b354e83825e2d9843aea742aa62221a2130b (patch) | |
tree | e4a352a51ea5dd60fb385cab961ca06606c9e743 /src/format/mangling/demangler.c | |
parent | 32f7a1126f8ac5a602f60a29de18eb7c5683dcc2 (diff) |
Decoded mangled names in a way suitable for the DEX format.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@580 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/format/mangling/demangler.c')
-rw-r--r-- | src/format/mangling/demangler.c | 43 |
1 files changed, 14 insertions, 29 deletions
diff --git a/src/format/mangling/demangler.c b/src/format/mangling/demangler.c index 715b4e8..d103550 100644 --- a/src/format/mangling/demangler.c +++ b/src/format/mangling/demangler.c @@ -58,7 +58,7 @@ typedef struct _demangling_properties /* Liste des décodeurs */ -static demangling_properties demanglers[DGT_COUNT] = { +static demangling_properties demanglers[/*DGT_COUNT*/] = { /* [DGT_ITANIUM] = { @@ -68,13 +68,14 @@ static demangling_properties demanglers[DGT_COUNT] = { .demangle_type = (demangle_fc)NULL }, */ + /* [DGT_JAVA] = { .can_demangle = (can_be_demangled_fc)NULL, .create_context = (create_context_fc)g_java_dcontext_new, .demangle_routine = (demangle_fc)NULL, .demangle_type = (demangle_fc)demangle_java_type } - + */ }; @@ -93,6 +94,7 @@ static demangling_properties demanglers[DGT_COUNT] = { GBinRoutine *try_to_demangle_routine(const char *desc) { +#if 0 GBinRoutine *result; /* Construction à remonter */ DemanglerType i; /* Boucle de parcours */ @@ -147,6 +149,9 @@ GBinRoutine *try_to_demangle_routine(const char *desc) } return result; +#endif + + return NULL; } @@ -164,24 +169,14 @@ GBinRoutine *try_to_demangle_routine(const char *desc) * * ******************************************************************************/ -GBinRoutine *demangle_routine(DemanglerType type, const char *desc) +GBinRoutine *demangle_routine(GType type, const char *desc) { GBinRoutine *result; /* Construction à remonter */ GDemanglingContext *context; /* Contexte pour le décodage */ - result = NULL; - /* - if (demangler->can_be_demangled(demangler, name)) - result = demangler->demangle_routine(demangler, name); - */ + context = g_object_new(type, NULL); - context = demanglers[type].create_context(); - - if (demanglers[type].demangle_routine(context, desc)) - { - result = g_demangling_context_get_decoded_routine(context); - g_object_ref(result); - } + result = g_demangling_context_get_decoded_routine(context, desc); g_object_unref(context); @@ -203,24 +198,14 @@ GBinRoutine *demangle_routine(DemanglerType type, const char *desc) * * ******************************************************************************/ -GDataType *demangle_type(DemanglerType type, const char *desc) +GDataType *demangle_type(GType type, const char *desc) { - GDataType *result; /* Construction à remonter */ + GBinRoutine *result; /* Construction à remonter */ GDemanglingContext *context; /* Contexte pour le décodage */ - result = NULL; - /* - if (demangler->can_be_demangled(demangler, name)) - result = demangler->demangle_routine(demangler, name); - */ - - context = demanglers[type].create_context(); + context = g_object_new(type, NULL); - if (demanglers[type].demangle_type(context, desc)) - { - result = g_demangling_context_get_decoded_type(context); - g_object_ref(result); - } + result = g_demangling_context_get_decoded_type(context, desc); g_object_unref(context); |