diff options
Diffstat (limited to 'src/mangling')
-rw-r--r-- | src/mangling/Makefile.am | 11 | ||||
-rw-r--r-- | src/mangling/demangler-int.h | 4 | ||||
-rw-r--r-- | src/mangling/demangler.c | 36 | ||||
-rw-r--r-- | src/mangling/demangler.h | 3 |
4 files changed, 44 insertions, 10 deletions
diff --git a/src/mangling/Makefile.am b/src/mangling/Makefile.am index c1a9427..4c868f7 100644 --- a/src/mangling/Makefile.am +++ b/src/mangling/Makefile.am @@ -7,18 +7,9 @@ libmangling_la_SOURCES = \ demangler-int.h \ demangler.h demangler.c -libmangling_la_LDFLAGS = - -libmangling_la_LIBADD = +libmangling_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%) dev_HEADERS = $(libmangling_la_SOURCES:%c=) - - -AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) - -AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) - -SUBDIRS = diff --git a/src/mangling/demangler-int.h b/src/mangling/demangler-int.h index 839a701..daf67fd 100644 --- a/src/mangling/demangler-int.h +++ b/src/mangling/demangler-int.h @@ -30,6 +30,9 @@ +/* Fournit la désignation interne du décodeur de désignations. */ +typedef char *(* get_demangler_key_fc) (const GCompDemangler *); + /* Indique si une chaîne peut être traitée par le décodeur. */ typedef bool (* can_be_demangled_fc) (const char *); @@ -46,6 +49,7 @@ struct _GCompDemanglerClass { GObjectClass parent; /* A laisser en premier */ + get_demangler_key_fc get_key; /* Code représentant la classe */ can_be_demangled_fc can_demangle; /* Possibilité de traitement */ const char *ns_sep; /* Motif de séparation */ diff --git a/src/mangling/demangler.c b/src/mangling/demangler.c index 4137baf..619d76d 100644 --- a/src/mangling/demangler.c +++ b/src/mangling/demangler.c @@ -24,6 +24,9 @@ #include "demangler.h" +#include <assert.h> + + #include "demangler-int.h" @@ -128,6 +131,39 @@ static void g_compiler_demangler_finalize(GCompDemangler *demangler) /****************************************************************************** * * +* Paramètres : demangler = décodeur à consulter. * +* * +* Description : Fournit la désignation interne du décodeur de désignations. * +* * +* Retour : Simple chaîne de caractères. * +* * +* Remarques : - * +* * +******************************************************************************/ + +char *g_compiler_demangler_get_key(const GCompDemangler *demangler) +{ + char *result; /* Désignation à renvoyer */ + GCompDemanglerClass *class; /* Classe de l'instance */ + + class = G_COMP_DEMANGLER_GET_CLASS(demangler); + + if (class->get_key == NULL) + { + assert(false); + result = NULL; + } + + else + result = class->get_key(demangler); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : demangler = décodeur à consulter pour le résultat. * * * * Description : Indique le motif de séparation des espaces de noms. * diff --git a/src/mangling/demangler.h b/src/mangling/demangler.h index 490c6c4..629dfde 100644 --- a/src/mangling/demangler.h +++ b/src/mangling/demangler.h @@ -47,6 +47,9 @@ typedef struct _GCompDemanglerClass GCompDemanglerClass; /* Indique le type défini pour un décodeur de désignations. */ GType g_compiler_demangler_get_type(void); +/* Fournit la désignation interne du décodeur de désignations. */ +char *g_compiler_demangler_get_key(const GCompDemangler *); + /* Indique le motif de séparation des espaces de noms. */ const char *g_compiler_demangler_get_ns_separator(const GCompDemangler *); |