diff options
Diffstat (limited to 'PySide/QtCore/qvariant_type_conversions.h')
-rw-r--r-- | PySide/QtCore/qvariant_type_conversions.h | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/PySide/QtCore/qvariant_type_conversions.h b/PySide/QtCore/qvariant_type_conversions.h deleted file mode 100644 index 9fad1f183..000000000 --- a/PySide/QtCore/qvariant_type_conversions.h +++ /dev/null @@ -1,87 +0,0 @@ -namespace Shiboken { - -template<> -struct Converter<QVariant::Type> -{ - static bool checkType(PyObject* pyObj) - { - return pyObj == Py_None || PyType_Check(pyObj) || Converter<QString>::checkType(pyObj); - } - - static bool isConvertible(PyObject* pyObj) - { - return checkType(pyObj); - } - - static QVariant::Type toCpp(PyObject* pyObj) - { - const char* typeName = 0; - if (pyObj == Py_None) - return QVariant::Invalid; - - if (Shiboken::String::checkType(reinterpret_cast<PyTypeObject*>(pyObj))) - typeName = "QString"; - - - else if (pyObj == reinterpret_cast<PyObject*>(&PyFloat_Type)) - typeName = "double"; // float is a UserType in QVariant. - else if (pyObj == reinterpret_cast<PyObject*>(&PyLong_Type)) - typeName = "int"; // long is a UserType in QVariant. - else if (PyType_Check(pyObj)) { - if (pyObj->ob_type == &SbkObjectType_Type) - typeName = Shiboken::ObjectType::getOriginalName(reinterpret_cast<SbkObjectType*>(pyObj)); - else - typeName = reinterpret_cast<PyTypeObject*>(pyObj)->tp_name; - } - else if (Shiboken::String::check(pyObj)) - typeName = Shiboken::String::toCString(pyObj); - else if (PyDict_Check(pyObj) && checkAllStringKeys(pyObj)) - typeName = "QVariantMap"; - else if (PySequence_Check(pyObj)) - if (isStringList(pyObj)) - typeName = "QStringList"; - else - typeName = "QVariantList"; - else - Q_ASSERT(false); - - return QVariant::nameToType(typeName); - } - - static PyObject* toPython(void* cppObj) { return toPython(*reinterpret_cast<QVariant::Type*>(cppObj)); } - static PyObject* toPython(const QVariant::Type& cppObj) - { - const char* typeName = QVariant::typeToName(cppObj); - PyObject* pyObj; - if (!typeName) { - pyObj = Py_None; - } else { - Shiboken::TypeResolver* tr = Shiboken::TypeResolver::get(typeName); - pyObj = tr ? reinterpret_cast<PyObject*>(tr->pythonType()) : Py_None; - } - Py_INCREF(pyObj); - return pyObj; - } - - static bool isStringList(PyObject* list) - { - bool allString = true; - AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList")); - Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object()); - for(int i=0; i < size; i++) { - PyObject* item = PySequence_Fast_GET_ITEM(fast.object(), i); - if (!Converter<QString>::checkType(item)) { - allString = false; - break; - } - } - return allString; - } - - static bool checkAllStringKeys(PyObject* dict) - { - AutoDecRef keys(PyDict_Keys(dict)); - return isStringList(keys); - } -}; -} |