diff options
Diffstat (limited to 'plugins/dex/python/constants.c')
-rw-r--r-- | plugins/dex/python/constants.c | 89 |
1 files changed, 36 insertions, 53 deletions
diff --git a/plugins/dex/python/constants.c b/plugins/dex/python/constants.c index 3e77fd6..b43e3f1 100644 --- a/plugins/dex/python/constants.c +++ b/plugins/dex/python/constants.c @@ -32,13 +32,9 @@ -/* Définit les constantes communes pour le format Dex. */ -static bool define_python_dex_format_common_constants(PyTypeObject *); - - /****************************************************************************** * * -* Paramètres : obj_type = type dont le dictionnaire est à compléter. * +* Paramètres : type = type dont le dictionnaire est à compléter. * * * * Description : Définit les constantes communes pour le format Dex. * * * @@ -48,56 +44,43 @@ static bool define_python_dex_format_common_constants(PyTypeObject *); * * ******************************************************************************/ -static bool define_python_dex_format_common_constants(PyTypeObject *obj_type) -{ - bool result; /* Bilan à retourner */ - - result = true; - - /* Définition des drapeaux d'accès */ - - if (result) result = PyDict_AddULongMacro(obj_type, ACC_PUBLIC); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_PRIVATE); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_PROTECTED); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_STATIC); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_FINAL); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_SYNCHRONIZED); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_VOLATILE); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_BRIDGE); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_TRANSIENT); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_VARARGS); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_NATIVE); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_INTERFACE); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_ABSTRACT); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_STRICT); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_SYNTHETIC); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_ANNOTATION); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_ENUM); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_CONSTRUCTOR); - if (result) result = PyDict_AddULongMacro(obj_type, ACC_DECLARED_SYNCHRONIZED); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : obj_type = type dont le dictionnaire est à compléter. * -* * -* Description : Définit les constantes pour le format Dex. * -* * -* Retour : true en cas de succès de l'opération, false sinon. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool define_python_dex_format_constants(PyTypeObject *obj_type) +bool define_python_dex_format_common_constants(PyTypeObject *type) { bool result; /* Bilan à retourner */ - - result = define_python_dex_format_common_constants(obj_type); + PyObject *values; /* Groupe de valeurs à établir */ + + values = PyDict_New(); + + result = add_const_to_group(values, "PUBLIC", ACC_PUBLIC); + if (result) result = add_const_to_group(values, "PRIVATE", ACC_PRIVATE); + if (result) result = add_const_to_group(values, "PROTECTED", ACC_PROTECTED); + if (result) result = add_const_to_group(values, "STATIC", ACC_STATIC); + if (result) result = add_const_to_group(values, "FINAL", ACC_FINAL); + if (result) result = add_const_to_group(values, "SYNCHRONIZED", ACC_SYNCHRONIZED); + if (result) result = add_const_to_group(values, "VOLATILE", ACC_VOLATILE); + if (result) result = add_const_to_group(values, "BRIDGE", ACC_BRIDGE); + if (result) result = add_const_to_group(values, "TRANSIENT", ACC_TRANSIENT); + if (result) result = add_const_to_group(values, "VARARGS", ACC_VARARGS); + if (result) result = add_const_to_group(values, "NATIVE", ACC_NATIVE); + if (result) result = add_const_to_group(values, "INTERFACE", ACC_INTERFACE); + if (result) result = add_const_to_group(values, "ABSTRACT", ACC_ABSTRACT); + if (result) result = add_const_to_group(values, "STRICT", ACC_STRICT); + if (result) result = add_const_to_group(values, "SYNTHETIC", ACC_SYNTHETIC); + if (result) result = add_const_to_group(values, "ANNOTATION", ACC_ANNOTATION); + if (result) result = add_const_to_group(values, "ENUM", ACC_ENUM); + if (result) result = add_const_to_group(values, "CONSTRUCTOR", ACC_CONSTRUCTOR); + if (result) result = add_const_to_group(values, "DECLARED_SYNCHRONIZED", ACC_DECLARED_SYNCHRONIZED); + + if (!result) + { + Py_DECREF(values); + goto exit; + } + + result = attach_constants_group_to_type(type, true, "AccessFlags", values, + "Accessibility and overall properties of classes and class members."); + + exit: return result; |