diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2021-11-30 01:56:58 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2021-11-30 01:56:58 (GMT) |
commit | de06b3ebc7021c20d94013bd39f4ba2c2e5ce3fa (patch) | |
tree | 463af79c1045e4180958d9ef9d0af33d3eebf7b9 /plugins/pychrysalide/mangling | |
parent | 7101133d0e862d2296d9709dc6ef1e64ebbc2ea0 (diff) |
Access demanglers by key.
Diffstat (limited to 'plugins/pychrysalide/mangling')
-rw-r--r-- | plugins/pychrysalide/mangling/demangler.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/plugins/pychrysalide/mangling/demangler.c b/plugins/pychrysalide/mangling/demangler.c index 87a19dc..5779693 100644 --- a/plugins/pychrysalide/mangling/demangler.c +++ b/plugins/pychrysalide/mangling/demangler.c @@ -25,6 +25,7 @@ #include "demangler.h" +#include <malloc.h> #include <pygobject.h> @@ -41,6 +42,9 @@ +/* Fournit la désignation interne du décodeur de désignations. */ +static PyObject *py_compiler_demangler_get_key(PyObject *, void *); + /* Tente de décoder une chaîne de caractères donnée en type. */ static PyObject *py_compiler_demangler_decode_type(PyObject *, PyObject *); @@ -51,6 +55,53 @@ static PyObject *py_compiler_demangler_decode_routine(PyObject *, PyObject *); /****************************************************************************** * * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Fournit la désignation interne du décodeur de désignations. * +* * +* Retour : Simple chaîne de caractères. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_compiler_demangler_get_key(PyObject *self, void *closure) +{ + PyObject *result; /* Instance Python à retourner */ + GCompDemangler *demangler; /* Version GLib de l'opérande */ + char *key; /* Désignation du décodeur */ + +#define COMPILER_DEMANGLER_KEY_ATTRIB PYTHON_GET_DEF_FULL \ +( \ + key, py_compiler_demangler, \ + "Provide the small name used to identify the demangler," \ + " as a code string." \ +) + + demangler = G_COMP_DEMANGLER(pygobject_get(self)); + assert(demangler != NULL); + + key = g_compiler_demangler_get_key(demangler); + + if (key != NULL) + { + result = PyUnicode_FromString(key); + free(key); + } + else + { + result = Py_None; + Py_INCREF(result); + } + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : self = décodeur à solliciter pour l'opération. * * args = chaîne de caractères à décoder. * * * @@ -184,6 +235,7 @@ PyTypeObject *get_python_compiler_demangler_type(void) }; static PyGetSetDef py_comp_demangler_getseters[] = { + COMPILER_DEMANGLER_KEY_ATTRIB, { NULL } }; |