diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-08-11 19:37:11 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:18:26 -0300 |
commit | 6b2b4f0cf9157e044965acba63fb6b5ee1e9cf15 (patch) | |
tree | bc96a4a47a6c804921c804993dc0aaf53e9233b0 /libshiboken/sbkmodule.cpp | |
parent | b8bd47404fd3860bdb282750a1e5919921ca80df (diff) |
New converters for user added primitive types.
Win32 fix for zero length type converter array.
Diffstat (limited to 'libshiboken/sbkmodule.cpp')
-rw-r--r-- | libshiboken/sbkmodule.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libshiboken/sbkmodule.cpp b/libshiboken/sbkmodule.cpp index 83c431cde..6f3594e77 100644 --- a/libshiboken/sbkmodule.cpp +++ b/libshiboken/sbkmodule.cpp @@ -32,8 +32,12 @@ /// This hash maps module objects to arrays of Python types. typedef google::dense_hash_map<PyObject*, PyTypeObject**> ModuleTypesMap; +/// This hash maps module objects to arrays of converters. +typedef google::dense_hash_map<PyObject*, SbkConverter**> ModuleConvertersMap; + /// All types produced in imported modules are mapped here. static ModuleTypesMap moduleTypes; +static ModuleConvertersMap moduleConverters; namespace Shiboken { @@ -45,6 +49,8 @@ void init() // Initializes type registry for modules. moduleTypes.set_empty_key((ModuleTypesMap::key_type)0); moduleTypes.set_deleted_key((ModuleTypesMap::key_type)1); + moduleConverters.set_empty_key((ModuleConvertersMap::key_type)0); + moduleConverters.set_deleted_key((ModuleConvertersMap::key_type)1); } PyObject* import(const char* moduleName) @@ -85,4 +91,17 @@ PyTypeObject** getTypes(PyObject* module) return (iter == moduleTypes.end()) ? 0 : iter->second; } +void registerTypeConverters(PyObject* module, SbkConverter** converters) +{ + ModuleConvertersMap::iterator iter = moduleConverters.find(module); + if (iter == moduleConverters.end()) + moduleConverters.insert(std::make_pair(module, converters)); +} + +SbkConverter** getTypeConverters(PyObject* module) +{ + ModuleConvertersMap::iterator iter = moduleConverters.find(module); + return (iter == moduleConverters.end()) ? 0 : iter->second; +} + } } // namespace Shiboken::Module |