aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/typeresolver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libpyside/typeresolver.cpp')
-rw-r--r--libpyside/typeresolver.cpp124
1 files changed, 0 insertions, 124 deletions
diff --git a/libpyside/typeresolver.cpp b/libpyside/typeresolver.cpp
deleted file mode 100644
index 49ca19f75..000000000
--- a/libpyside/typeresolver.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-* This file is part of the Shiboken Python Bindings Generator project.
-*
-* Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-*
-* Contact: PySide team <contact@pyside.org>
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public License
-* version 2.1 as published by the Free Software Foundation. Please
-* review the following information to ensure the GNU Lesser General
-* Public License version 2.1 requirements will be met:
-* http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-*
-* As a special exception to the GNU Lesser General Public License
-* version 2.1, the object code form of a "work that uses the Library"
-* may incorporate material from a header file that is part of the
-* Library. You may distribute such object code under terms of your
-* choice, provided that the incorporated material (i) does not exceed
-* more than 5% of the total size of the Library; and (ii) is limited to
-* numerical parameters, data structure layouts, accessors, macros,
-* inline functions and templates.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA
-*/
-
-#include "typeresolver.h"
-#include <QHash>
-#include <cstdlib>
-#include <QDebug>
-
-using namespace PySide;
-
-static QHash<QLatin1String, TypeResolver*> typeResolverMap;
-
-struct TypeResolver::TypeResolverPrivate
-{
- const char* typeName; // maybe this is not needed anymore
- CppToPythonFunc cppToPython;
- PythonToCppFunc pythonToCpp;
- DeleteObjectFunc deleteObject;
-};
-
-static void deinitTypeResolver()
-{
- qDeleteAll(typeResolverMap);
- typeResolverMap.clear();
-}
-
-static void registerTypeResolver(TypeResolver* resolver)
-{
- static bool initied = false;
- if (!initied) {
- Q_ASSERT(typeResolverMap.isEmpty());
- initied = true;
- std::atexit(deinitTypeResolver);
- TypeResolver::createValueTypeResolver<double>("double");
- TypeResolver::createValueTypeResolver<float>("float");
- TypeResolver::createValueTypeResolver<qreal>("qreal");
- TypeResolver::createValueTypeResolver<bool>("bool");
- TypeResolver::createValueTypeResolver<int>("int");
- TypeResolver::createValueTypeResolver<qint64>("qint64");
- }
- Q_ASSERT(!typeResolverMap.contains(QLatin1String(resolver->typeName())));
- typeResolverMap[QLatin1String(resolver->typeName())] = resolver;
-}
-
-TypeResolver::TypeResolver(const char* typeName, TypeResolver::CppToPythonFunc cppToPy, TypeResolver::PythonToCppFunc pyToCpp, TypeResolver::DeleteObjectFunc deleter)
-{
- m_d = new TypeResolverPrivate;
- m_d->typeName = typeName;
- m_d->cppToPython = cppToPy;
- m_d->pythonToCpp = pyToCpp;
- m_d->deleteObject = deleter;
-
- registerTypeResolver(this);
-}
-
-TypeResolver::~TypeResolver()
-{
- delete m_d;
-}
-
-PySide::TypeResolver* TypeResolver::get(const QString& typeName)
-{
- QByteArray data = typeName.toAscii();
- return get(data.constData());
-}
-
-PySide::TypeResolver* TypeResolver::get(const char* typeName)
-{
- Q_ASSERT(typeResolverMap.contains(QLatin1String(typeName)));
- return typeResolverMap.value(QLatin1String(typeName));
-}
-
-const char* TypeResolver::typeName() const
-{
- return m_d->typeName;
-}
-
-void* TypeResolver::toCpp(PyObject* pyObj)
-{
- return m_d->pythonToCpp(pyObj);
-}
-
-PyObject* TypeResolver::toPython(void* cppObj)
-{
- return m_d->cppToPython(cppObj);
-}
-
-void TypeResolver::deleteObject(void* object)
-{
- if (m_d->deleteObject)
- m_d->deleteObject(object);
-}
-