aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/sbkmodule.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-08-11 19:37:11 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:18:26 -0300
commit6b2b4f0cf9157e044965acba63fb6b5ee1e9cf15 (patch)
treebc96a4a47a6c804921c804993dc0aaf53e9233b0 /libshiboken/sbkmodule.cpp
parentb8bd47404fd3860bdb282750a1e5919921ca80df (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.cpp19
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