diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-08-18 23:10:24 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:17:12 -0300 |
commit | b9dba4ed938302740b4ea7ea2d4824518077444e (patch) | |
tree | 85ed5412307447e9c03e713bfc4b742f188ea98d /libshiboken/sbkenum.cpp | |
parent | e5fb8ee50dbcb0eab68260efe95c985ddc979e00 (diff) |
Creates type registers for enums in createScopedEnum and createGlobalEnum.
Instead of generating the register code.
Diffstat (limited to 'libshiboken/sbkenum.cpp')
-rw-r--r-- | libshiboken/sbkenum.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/libshiboken/sbkenum.cpp b/libshiboken/sbkenum.cpp index e05f5cdad..0c4a9b663 100644 --- a/libshiboken/sbkenum.cpp +++ b/libshiboken/sbkenum.cpp @@ -27,6 +27,7 @@ #include <list> #include "sbkdbg.h" #include "autodecref.h" +#include "typeresolver.h" extern "C" { @@ -176,7 +177,7 @@ PyObject* getEnumItemFromValue(PyTypeObject* enumType, long itemValue) return 0; } -static PyTypeObject* createEnum(const char* fullName, const char* cppName, PyTypeObject* flagsType) +static PyTypeObject* createEnum(const char* fullName, const char* cppName, const char* shortName, PyTypeObject* flagsType) { PyTypeObject* enumType = newTypeWithName(fullName, cppName); if (flagsType) { @@ -186,34 +187,31 @@ static PyTypeObject* createEnum(const char* fullName, const char* cppName, PyTyp } if (PyType_Ready(enumType) < 0) return 0; + Shiboken::TypeResolver::createValueTypeResolver<int>(cppName); + if (shortName) + Shiboken::TypeResolver::createValueTypeResolver<int>(shortName); return enumType; } PyTypeObject* createGlobalEnum(PyObject* module, const char* name, const char* fullName, const char* cppName, PyTypeObject* flagsType) { - PyTypeObject* enumType = createEnum(fullName, cppName, flagsType); - if (enumType) { - if (PyModule_AddObject(module, name, (PyObject*)enumType) < 0) - return 0; - } - if (flagsType) { - if (PyModule_AddObject(module, flagsType->tp_name, (PyObject*)flagsType) < 0) - return 0; - } + PyTypeObject* enumType = createEnum(fullName, cppName, name, flagsType); + Shiboken::TypeResolver::createValueTypeResolver<int>("Qt::WindowType"); + Shiboken::TypeResolver::createValueTypeResolver<int>("WindowType"); + if (enumType && PyModule_AddObject(module, name, (PyObject*)enumType) < 0) + return 0; + if (flagsType && PyModule_AddObject(module, flagsType->tp_name, (PyObject*)flagsType) < 0) + return 0; return enumType; } PyTypeObject* createScopedEnum(SbkObjectType* scope, const char* name, const char* fullName, const char* cppName, PyTypeObject* flagsType) { - PyTypeObject* enumType = createEnum(fullName, cppName, flagsType); - if (enumType) { - if (PyDict_SetItemString(scope->super.ht_type.tp_dict, name, (PyObject*)enumType) < 0) - return 0; - } - if (flagsType) { - if (PyDict_SetItemString(scope->super.ht_type.tp_dict, flagsType->tp_name, (PyObject*)flagsType) < 0) - return 0; - } + PyTypeObject* enumType = createEnum(fullName, cppName, name, flagsType); + if (enumType && PyDict_SetItemString(scope->super.ht_type.tp_dict, name, (PyObject*)enumType) < 0) + return 0; + if (flagsType && PyDict_SetItemString(scope->super.ht_type.tp_dict, flagsType->tp_name, (PyObject*)flagsType) < 0) + return 0; return enumType; } |