[Python-modules-commits] r14660 - in packages/shiboken/trunk/debian/patches (4 files)
odyx-guest at users.alioth.debian.org
odyx-guest at users.alioth.debian.org
Tue Oct 19 19:40:15 UTC 2010
Date: Tuesday, October 19, 2010 @ 19:40:03
Author: odyx-guest
Revision: 14660
Patches: remove upstreams and refresh customs.
- u_1eda671_fix_type_resolver_algorithm.patch
(Remove, was from upstream)
- u_46ab0d6_generated_original_name_with_star_for_object_classes.patch
(Remove, was from upstream)
+ allowCustomShibokenPostfix.patch
(Refresh)
Modified:
packages/shiboken/trunk/debian/patches/allowCustomShibokenPostfix.patch
packages/shiboken/trunk/debian/patches/series
Deleted:
packages/shiboken/trunk/debian/patches/u_1eda671_fix_type_resolver_algorithm.patch
packages/shiboken/trunk/debian/patches/u_46ab0d6_generated_original_name_with_star_for_object_classes.patch
Modified: packages/shiboken/trunk/debian/patches/allowCustomShibokenPostfix.patch
===================================================================
--- packages/shiboken/trunk/debian/patches/allowCustomShibokenPostfix.patch 2010-10-19 19:35:44 UTC (rev 14659)
+++ packages/shiboken/trunk/debian/patches/allowCustomShibokenPostfix.patch 2010-10-19 19:40:03 UTC (rev 14660)
@@ -2,12 +2,12 @@
Author: Didier Raboud <didier at raboud.com>
Origin: vendor
Forwarded: not needed (distribution specific)
-Last-Update: 2010-06-30
-Index: shiboken/libshiboken/ShibokenConfig.cmake.in
+Last-Update: 2010-09-11
+Index: shiboken/data/ShibokenConfig.cmake.in
===================================================================
---- shiboken.orig/libshiboken/ShibokenConfig.cmake.in 2010-06-30 16:29:25.000000000 +0200
-+++ shiboken/libshiboken/ShibokenConfig.cmake.in 2010-06-30 16:40:38.000000000 +0200
-@@ -1,5 +1,10 @@
+--- shiboken.orig/data/ShibokenConfig.cmake.in 2010-09-10 16:46:57.000000000 +0200
++++ shiboken/data/ShibokenConfig.cmake.in 2010-09-11 10:39:00.000000000 +0200
+@@ -1,11 +1,16 @@
# SHIBOKEN_INCLUDE_DIR - Directories to include to use SHIBOKEN
# SHIBOKEN_LIBRARIES - Files to link against to use SHIBOKEN
@@ -16,6 +16,12 @@
+# (e.g. -py26 for the python 2.6 specific version;
+# -py26_d for the python 2.6 with -DPy_DEBUG specific version )
+
- SET(SHIBOKEN_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include/shiboken")
--SET(SHIBOKEN_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken@CMAKE_SHARED_LIBRARY_SUFFIX@")
-+SET(SHIBOKEN_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken${SHIBOKEN_POSTFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@")
+ SET(SHIBOKEN_INCLUDE_DIR "@CMAKE_INSTALL_PREFIX@/include/shiboken at shiboken_SUFFIX@")
+ if(MSVC)
+ SET(SHIBOKEN_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken@shiboken_SUFFIX at .lib")
+ elseif(WIN32)
+ SET(SHIBOKEN_LIBRARY "@CMAKE_INSTALL_PREFIX@/bin/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken@shiboken_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@")
+ else()
+- SET(SHIBOKEN_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken@shiboken_SUFFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@")
++ SET(SHIBOKEN_LIBRARY "@LIB_INSTALL_DIR@/@CMAKE_SHARED_LIBRARY_PREFIX at shiboken@shiboken_SUFFIX@${SHIBOKEN_POSTFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@")
+ endif()
Modified: packages/shiboken/trunk/debian/patches/series
===================================================================
--- packages/shiboken/trunk/debian/patches/series 2010-10-19 19:35:44 UTC (rev 14659)
+++ packages/shiboken/trunk/debian/patches/series 2010-10-19 19:40:03 UTC (rev 14660)
@@ -1,3 +1 @@
-u_46ab0d6_generated_original_name_with_star_for_object_classes.patch
-u_1eda671_fix_type_resolver_algorithm.patch
allowCustomShibokenPostfix.patch
Deleted: packages/shiboken/trunk/debian/patches/u_1eda671_fix_type_resolver_algorithm.patch
===================================================================
--- packages/shiboken/trunk/debian/patches/u_1eda671_fix_type_resolver_algorithm.patch 2010-10-19 19:35:44 UTC (rev 14659)
+++ packages/shiboken/trunk/debian/patches/u_1eda671_fix_type_resolver_algorithm.patch 2010-10-19 19:40:03 UTC (rev 14660)
@@ -1,553 +0,0 @@
-From 1eda671a34eba38e7e74e592e4ae88fa6803bcba Mon Sep 17 00:00:00 2001
-From: Hugo Parente Lima <hugo.pl at gmail.com>
-Date: Mon, 30 Aug 2010 11:19:22 -0300
-Subject: [PATCH] Fix the type resolver algorithm.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 8bit
-
-The new algorithm do the following:
-
-- Try to use type_info on the object the get the object real name.
-- Try to find a type resolver with the name returned by type_info.
-- If a type resolver was found, get the python type.
-- Else, ask binding manager to resolve the type walking on all possible
- subclasses found in the inheritance tree.
-
-The binding manager has a graph representing the class inheritance tree.
-
-Note: This commit break the libshiboken ABI, but not the API.
-
-Reviewer: Luciano Wolf <luciano.wolf at openbossa.org>
- Renato Araújo <renato.araujo at openbossa.org>
----
- cppgenerator.cpp | 53 +++++++++++-----------
- libshiboken/basewrapper.cpp | 30 +++++--------
- libshiboken/basewrapper.h | 15 ++-----
- libshiboken/bindingmanager.cpp | 69 ++++++++++++++++++++++++++++-
- libshiboken/bindingmanager.h | 3 +
- libshiboken/conversions.h | 6 ++-
- tests/libother/CMakeLists.txt | 1 +
- tests/libother/othermultiplederived.cpp | 56 +++++++++++++++++++++++
- tests/libother/othermultiplederived.h | 6 ++-
- tests/libsample/multiple_derived.h | 5 +-
- tests/samplebinding/typediscovery_test.py | 13 +++++
- 11 files changed, 194 insertions(+), 63 deletions(-)
- create mode 100644 tests/libother/othermultiplederived.cpp
-
-Index: shiboken/cppgenerator.cpp
-===================================================================
---- shiboken.orig/cppgenerator.cpp 2010-08-31 14:50:48.000000000 +0200
-+++ shiboken/cppgenerator.cpp 2010-08-31 14:50:53.000000000 +0200
-@@ -367,7 +367,7 @@
- writeClassDefinition(s, metaClass);
- s << endl;
-
-- if (metaClass->isPolymorphic())
-+ if (metaClass->isPolymorphic() && metaClass->baseClass())
- writeTypeDiscoveryFunction(s, metaClass);
-
-
-@@ -2142,7 +2142,6 @@
- s << "static void* " << cpythonSpecialCastFunctionName(metaClass) << "(void* obj, SbkBaseWrapperType* desiredType)\n";
- s << "{\n";
- s << INDENT << className << "* me = reinterpret_cast<" << className << "*>(obj);\n";
-- AbstractMetaClassList bases = getBaseClasses(metaClass);
- bool firstClass = true;
- foreach (const AbstractMetaClass* baseClass, getAllAncestors(metaClass)) {
- s << INDENT << (!firstClass ? "else " : "") << "if (desiredType == reinterpret_cast<SbkBaseWrapperType*>(" << cpythonTypeNameExt(baseClass->typeEntry()) << "))\n";
-@@ -3202,8 +3201,8 @@
- if (metaClass->baseClass())
- s << INDENT << pyTypeName << ".super.ht_type.tp_base = " << cpythonTypeNameExt(metaClass->baseClass()->typeEntry()) << ';' << endl;
- // Multiple inheritance
-+ const AbstractMetaClassList baseClasses = getBaseClasses(metaClass);
- if (metaClass->baseClassNames().size() > 1) {
-- AbstractMetaClassList baseClasses = getBaseClasses(metaClass);
- s << INDENT << pyTypeName << ".super.ht_type.tp_bases = PyTuple_Pack(";
- s << baseClasses.size();
- s << ',' << endl;
-@@ -3224,21 +3223,11 @@
- // Set typediscovery struct or fill the struct of another one
- if (metaClass->isPolymorphic()) {
- s << INDENT << "// Fill type discovery information" << endl;
-- if (!metaClass->baseClass()) {
-- s << INDENT << cpythonTypeName(metaClass) << ".type_discovery = new Shiboken::TypeDiscovery;" << endl;
-- s << INDENT << cpythonTypeName(metaClass) << ".type_discovery->addTypeDiscoveryFunction(&";
-- s << cpythonBaseName(metaClass) << "_typeDiscovery);" << endl;
-- } else {
-- // FIXME: What about mi classes?
-- AbstractMetaClass* baseClass = metaClass->baseClass();
-- while (baseClass->baseClass())
-- baseClass = baseClass->baseClass();
-- s << INDENT << cpythonTypeName(metaClass) << ".type_discovery = " ;
-- s << "reinterpret_cast<SbkBaseWrapperType*>(" << cpythonTypeNameExt(baseClass->typeEntry()) << ")->type_discovery;" << endl;
--
-- if (!metaClass->typeEntry()->polymorphicIdValue().isEmpty()) {
-- s << INDENT << cpythonTypeName(metaClass) << ".type_discovery->addTypeDiscoveryFunction(&";
-- s << cpythonBaseName(metaClass) << "_typeDiscovery);" << endl;
-+ if (metaClass->baseClass()) {
-+ s << INDENT << cpythonTypeName(metaClass) << ".type_discovery = &" << cpythonBaseName(metaClass) << "_typeDiscovery;" << endl;
-+ s << INDENT << "Shiboken::BindingManager& bm = Shiboken::BindingManager::instance();" << endl;
-+ foreach (const AbstractMetaClass* base, baseClasses) {
-+ s << INDENT << "bm.addClassInheritance(reinterpret_cast<SbkBaseWrapperType*>(" << cpythonTypeNameExt(base->typeEntry()) << "), &" << cpythonTypeName(metaClass) << ");" << endl;
- }
- }
- s << endl;
-@@ -3310,16 +3299,8 @@
- void CppGenerator::writeTypeDiscoveryFunction(QTextStream& s, const AbstractMetaClass* metaClass)
- {
- QString polymorphicExpr = metaClass->typeEntry()->polymorphicIdValue();
-- bool shouldGenerateIt = !polymorphicExpr.isEmpty() || !metaClass->baseClass();
-- if (!shouldGenerateIt)
-- return;
-
- s << "static SbkBaseWrapperType* " << cpythonBaseName(metaClass) << "_typeDiscovery(void* cptr, SbkBaseWrapperType* instanceType)\n{" << endl;
-- s << INDENT << "if (instanceType->mi_specialcast)" << endl;
-- {
-- Indentation indent(INDENT);
-- s << INDENT << "cptr = instanceType->mi_specialcast(cptr, &" << cpythonTypeName(metaClass) << ");" << endl;
-- }
-
- if (!metaClass->baseClass()) {
- s << INDENT << "TypeResolver* typeResolver = TypeResolver::get(typeid(*reinterpret_cast<"
-@@ -3329,13 +3310,31 @@
- Indentation indent(INDENT);
- s << INDENT << "return reinterpret_cast<SbkBaseWrapperType*>(typeResolver->pythonType());" << endl;
- }
-- } else {
-+ } else if (!polymorphicExpr.isEmpty()) {
- polymorphicExpr = polymorphicExpr.replace("%1", " reinterpret_cast<"+metaClass->qualifiedCppName()+"*>(cptr)");
- s << INDENT << " if (" << polymorphicExpr << ")" << endl;
- {
- Indentation indent(INDENT);
- s << INDENT << "return &" << cpythonTypeName(metaClass) << ';' << endl;
- }
-+ } else if (metaClass->isPolymorphic()) {
-+ AbstractMetaClassList ancestors = getAllAncestors(metaClass);
-+ foreach (AbstractMetaClass* ancestor, ancestors) {
-+ if (ancestor->baseClass())
-+ continue;
-+ if (ancestor->isPolymorphic()) {
-+ s << INDENT << "if (instanceType == reinterpret_cast<Shiboken::SbkBaseWrapperType*>(Shiboken::SbkType<"
-+ << ancestor->qualifiedCppName() << " >()) && dynamic_cast<" << metaClass->qualifiedCppName()
-+ << "*>(reinterpret_cast<"<< ancestor->qualifiedCppName() << "*>(cptr)))" << endl;
-+ Indentation indent(INDENT);
-+ s << INDENT << "return &" << cpythonTypeName(metaClass) << ';' << endl;
-+ } else {
-+ ReportHandler::warning(metaClass->qualifiedCppName() + " inherits from a non polymorphic type ("
-+ + ancestor->qualifiedCppName() + "), type discovery based on RTTI is "
-+ "impossible, write a polymorphic-id-expresison for this type.");
-+ }
-+
-+ }
- }
- s << INDENT << "return 0;" << endl;
- s << "}\n\n";
-Index: shiboken/libshiboken/basewrapper.cpp
-===================================================================
---- shiboken.orig/libshiboken/basewrapper.cpp 2010-08-31 14:50:48.000000000 +0200
-+++ shiboken/libshiboken/basewrapper.cpp 2010-08-31 14:50:53.000000000 +0200
-@@ -264,11 +264,19 @@
- PyObject* SbkBaseWrapper_New(SbkBaseWrapperType* instanceType,
- void* cptr,
- bool hasOwnership,
-- bool isExactType)
-+ bool isExactType, const char* typeName)
- {
- // Try to find the exact type of cptr.
-- if (!isExactType && instanceType->type_discovery)
-- instanceType = instanceType->type_discovery->getType(cptr, instanceType);
-+ if (!isExactType) {
-+ TypeResolver* tr = 0;
-+ if (typeName) {
-+ tr = TypeResolver::get(typeName);
-+ if (tr)
-+ instanceType = reinterpret_cast<SbkBaseWrapperType*>(tr->pythonType());
-+ }
-+ if (!tr)
-+ instanceType = BindingManager::instance().resolveType(cptr, instanceType);
-+ }
-
- SbkBaseWrapper* self = reinterpret_cast<SbkBaseWrapper*>(SbkBaseWrapper_TpNew(reinterpret_cast<PyTypeObject*>(instanceType), 0, 0));
- self->cptr[0] = cptr;
-@@ -613,22 +621,6 @@
-
- }
-
--SbkBaseWrapperType* TypeDiscovery::getType(const void* cptr, SbkBaseWrapperType* instanceType) const
--{
-- TypeDiscoveryFuncList::const_reverse_iterator it = m_discoveryFunctions.rbegin();
-- for (; it != m_discoveryFunctions.rend(); ++it) {
-- SbkBaseWrapperType* type = (*it)(const_cast<void*>(cptr), instanceType);
-- if (type)
-- return type;
-- }
-- return instanceType;
--}
--
--void TypeDiscovery::addTypeDiscoveryFunction(Shiboken::TypeDiscoveryFunc func)
--{
-- m_discoveryFunctions.push_back(func);
--}
--
- class FindBaseTypeVisitor : public HierarchyVisitor
- {
- public:
-Index: shiboken/libshiboken/basewrapper.h
-===================================================================
---- shiboken.orig/libshiboken/basewrapper.h 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/libshiboken/basewrapper.h 2010-08-31 14:50:53.000000000 +0200
-@@ -56,6 +56,7 @@
- /// Function signature for the multiple inheritance information initializers that should be provided by classes with multiple inheritance.
- typedef int* (*MultipleInheritanceInitFunction)(const void*);
- struct SbkBaseWrapperType;
-+
- /**
- * Special cast function is used to correctly cast an object when it's
- * part of a multiple inheritance hierarchy.
-@@ -64,7 +65,6 @@
- typedef void* (*SpecialCastFunction)(void*, SbkBaseWrapperType*);
- typedef void* (*ObjectCopierFunction)(const void*);
- typedef SbkBaseWrapperType* (*TypeDiscoveryFunc)(void*, SbkBaseWrapperType*);
--typedef std::list<TypeDiscoveryFunc> TypeDiscoveryFuncList;
-
- typedef void* (*ExtendedToCppFunc)(PyObject*);
- typedef bool (*ExtendedIsConvertibleFunc)(PyObject*);
-@@ -75,14 +75,6 @@
- LIBSHIBOKEN_API PyAPI_DATA(PyTypeObject) SbkBaseWrapperType_Type;
- LIBSHIBOKEN_API PyAPI_DATA(SbkBaseWrapperType) SbkBaseWrapper_Type;
-
--class LIBSHIBOKEN_API TypeDiscovery {
--public:
-- SbkBaseWrapperType* getType(const void* cptr, SbkBaseWrapperType* instanceType) const;
-- void addTypeDiscoveryFunction(TypeDiscoveryFunc func);
--private:
-- TypeDiscoveryFuncList m_discoveryFunctions;
--};
--
- /// PyTypeObject extended with C++ multiple inheritance information.
- struct LIBSHIBOKEN_API SbkBaseWrapperType
- {
-@@ -91,7 +83,7 @@
- MultipleInheritanceInitFunction mi_init;
- /// Special cast function, null if this class doesn't have multiple inheritance.
- SpecialCastFunction mi_specialcast;
-- TypeDiscovery* type_discovery;
-+ TypeDiscoveryFunc type_discovery;
- ObjectCopierFunction obj_copier;
- /// Extended "isConvertible" function to be used when a conversion operator is defined in another module.
- ExtendedIsConvertibleFunc ext_isconvertible;
-@@ -221,7 +213,8 @@
- SbkBaseWrapper_New(SbkBaseWrapperType* instanceType,
- void* cptr,
- bool hasOwnership = true,
-- bool isExactType = false);
-+ bool isExactType = false,
-+ const char* typeName = 0);
-
- LIBSHIBOKEN_API PyAPI_FUNC(PyObject*)
- SbkBaseWrapper_TpNew(PyTypeObject* subtype, PyObject*, PyObject*);
-Index: shiboken/libshiboken/bindingmanager.cpp
-===================================================================
---- shiboken.orig/libshiboken/bindingmanager.cpp 2010-08-31 14:50:39.000000000 +0200
-+++ shiboken/libshiboken/bindingmanager.cpp 2010-08-31 14:50:53.000000000 +0200
-@@ -33,16 +33,71 @@
- */
-
- #include "basewrapper.h"
-+#include <cstddef>
-+#include <fstream>
- #include "basewrapper_p.h"
- #include "bindingmanager.h"
- #include "google/dense_hash_map"
--#include <cstddef>
-+#include "sbkdbg.h"
-
- namespace Shiboken
- {
-
- typedef google::dense_hash_map<const void*, PyObject*> WrapperMap;
-
-+class Graph
-+{
-+public:
-+ typedef std::list<SbkBaseWrapperType*> NodeList;
-+ typedef google::dense_hash_map<SbkBaseWrapperType*, NodeList> Edges;
-+
-+ Edges m_edges;
-+
-+ Graph()
-+ {
-+ m_edges.set_empty_key(0);
-+ }
-+
-+ void addEdge(SbkBaseWrapperType* from, SbkBaseWrapperType* to)
-+ {
-+ m_edges[from].push_back(to);
-+ }
-+
-+#ifndef NDEBUG
-+ void dumpDotGraph()
-+ {
-+ std::ofstream file("/tmp/shiboken_graph.dot");
-+
-+ file << "digraph D {\n";
-+
-+ Edges::const_iterator i = m_edges.begin();
-+ for (; i != m_edges.end(); ++i) {
-+ SbkBaseWrapperType* node1 = i->first;
-+ const NodeList& nodeList = i->second;
-+ NodeList::const_iterator j = nodeList.begin();
-+ for (; j != nodeList.end(); ++j)
-+ file << '"' << (*j)->super.ht_type.tp_name << "\" -> \"" << node1->super.ht_type.tp_name << "\"\n";
-+ }
-+ file << "}\n";
-+ }
-+#endif
-+
-+ SbkBaseWrapperType* identifyType(void* cptr, SbkBaseWrapperType* type, SbkBaseWrapperType* baseType) const
-+ {
-+ Edges::const_iterator edgesIt = m_edges.find(type);
-+ if (edgesIt != m_edges.end()) {
-+ const NodeList& adjNodes = m_edges.find(type)->second;
-+ NodeList::const_iterator i = adjNodes.begin();
-+ for (; i != adjNodes.end(); ++i) {
-+ SbkBaseWrapperType* newType = identifyType(cptr, *i, baseType);
-+ if (newType)
-+ return newType;
-+ }
-+ }
-+ return type->type_discovery ? type->type_discovery(cptr, baseType) : 0;
-+ }
-+};
-+
-
- #ifndef NDEBUG
- static void showWrapperMap(const WrapperMap& wrapperMap)
-@@ -58,6 +113,7 @@
-
- struct BindingManager::BindingManagerPrivate {
- WrapperMap wrapperMapper;
-+ Graph classHierarchy;
- void releaseWrapper(void* cptr);
- void assignWrapper(PyObject* wrapper, const void* cptr);
- };
-@@ -230,5 +286,16 @@
- invalidateWrapper(wrapper);
- }
-
-+void BindingManager::addClassInheritance(Shiboken::SbkBaseWrapperType* parent, Shiboken::SbkBaseWrapperType* child)
-+{
-+ m_d->classHierarchy.addEdge(parent, child);
-+}
-+
-+SbkBaseWrapperType* BindingManager::resolveType(void* cptr, Shiboken::SbkBaseWrapperType* type)
-+{
-+ SbkBaseWrapperType* identifiedType = m_d->classHierarchy.identifyType(cptr, type, type);
-+ return identifiedType ? identifiedType : type;
-+}
-+
- } // namespace Shiboken
-
-Index: shiboken/libshiboken/bindingmanager.h
-===================================================================
---- shiboken.orig/libshiboken/bindingmanager.h 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/libshiboken/bindingmanager.h 2010-08-31 14:50:53.000000000 +0200
-@@ -42,6 +42,7 @@
- {
-
- struct SbkBaseWrapper;
-+struct SbkBaseWrapperType;
-
- class LIBSHIBOKEN_API BindingManager
- {
-@@ -73,6 +74,8 @@
- transferOwnershipToCpp(reinterpret_cast<SbkBaseWrapper*>(wrapper));
- }
-
-+ void addClassInheritance(SbkBaseWrapperType* parent, SbkBaseWrapperType* child);
-+ SbkBaseWrapperType* resolveType(void* cptr, SbkBaseWrapperType* type);
- private:
- ~BindingManager();
- // disable copy
-Index: shiboken/libshiboken/conversions.h
-===================================================================
---- shiboken.orig/libshiboken/conversions.h 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/libshiboken/conversions.h 2010-08-31 14:50:53.000000000 +0200
-@@ -38,6 +38,7 @@
- #include <Python.h>
- #include <limits>
- #include <memory>
-+#include <typeinfo>
-
- #include "pyenum.h"
- #include "basewrapper.h"
-@@ -119,8 +120,11 @@
- template<typename T>
- inline PyObject* createWrapper(const T* cppobj, bool hasOwnership = false, bool isExactType = false)
- {
-+ const char* typeName = 0;
-+ if (!isExactType)
-+ typeName = typeid(*const_cast<T*>(cppobj)).name();
- return SbkBaseWrapper_New(reinterpret_cast<SbkBaseWrapperType*>(SbkType<T>()),
-- const_cast<T*>(cppobj), hasOwnership, isExactType);
-+ const_cast<T*>(cppobj), hasOwnership, isExactType, typeName);
- }
-
- // Base Conversions ----------------------------------------------------------
-Index: shiboken/tests/libother/CMakeLists.txt
-===================================================================
---- shiboken.orig/tests/libother/CMakeLists.txt 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/tests/libother/CMakeLists.txt 2010-08-31 14:50:54.000000000 +0200
-@@ -4,6 +4,7 @@
- number.cpp
- otherderived.cpp
- otherobjecttype.cpp
-+othermultiplederived.cpp
- )
-
- add_definitions("-DLIBOTHER_BUILD")
-Index: shiboken/tests/libother/othermultiplederived.cpp
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ shiboken/tests/libother/othermultiplederived.cpp 2010-08-31 14:50:54.000000000 +0200
-@@ -0,0 +1,56 @@
-+/*
-+ * This file is part of the Shiboken Python Binding Generator project.
-+ *
-+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-+ *
-+ * Contact: PySide team <contact at 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 "othermultiplederived.h"
-+
-+VirtualMethods OtherMultipleDerived::returnUselessClass()
-+{
-+ return VirtualMethods();
-+}
-+
-+Base1* OtherMultipleDerived::createObject(const std::string& objName)
-+{
-+ if (objName == "Base1")
-+ return new Base1;
-+ else if (objName == "MDerived1")
-+ return new MDerived1;
-+ else if (objName == "SonOfMDerived1")
-+ return new SonOfMDerived1;
-+ else if (objName == "MDerived3")
-+ return new MDerived3;
-+ else if (objName == "OtherMultipleDerived")
-+ return new OtherMultipleDerived;
-+ return 0;
-+}
-+
-Index: shiboken/tests/libsample/multiple_derived.h
-===================================================================
---- shiboken.orig/tests/libsample/multiple_derived.h 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/tests/libsample/multiple_derived.h 2010-08-31 14:50:54.000000000 +0200
-@@ -36,6 +36,7 @@
- #define MDERIVED_H
-
- #include "libsamplemacros.h"
-+#include <string>
-
- class LIBSAMPLE_API Base1
- {
-@@ -97,7 +98,7 @@
- {
- public:
- explicit Base3(int val = 3) : m_value(val) {}
-- ~Base3() {}
-+ virtual ~Base3() {}
- int base3Method() { return m_value; }
- private:
- int m_value;
-@@ -107,7 +108,7 @@
- {
- public:
- Base4() : m_value(4) {}
-- ~Base4() {}
-+ virtual ~Base4() {}
- int base4Method() { return m_value; }
- private:
- int m_value;
-Index: shiboken/tests/samplebinding/typediscovery_test.py
-===================================================================
---- shiboken.orig/tests/samplebinding/typediscovery_test.py 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/tests/samplebinding/typediscovery_test.py 2010-08-31 14:50:54.000000000 +0200
-@@ -29,6 +29,7 @@
- import unittest
-
- from sample import *
-+from other import *
-
- class TypeDiscoveryTest(unittest.TestCase):
-
-@@ -42,6 +43,18 @@
- a = Derived.triggerAnotherImpossibleTypeDiscovery()
- self.assertEqual(type(a), Derived)
-
-+ def testMultipleInheritance(self):
-+ obj = OtherMultipleDerived.createObject("Base1");
-+ self.assertEqual(type(obj), Base1)
-+ obj = OtherMultipleDerived.createObject("MDerived1");
-+ self.assertEqual(type(obj), MDerived1)
-+ obj = OtherMultipleDerived.createObject("SonOfMDerived1");
-+ self.assertEqual(type(obj), SonOfMDerived1)
-+ obj = OtherMultipleDerived.createObject("MDerived3");
-+ self.assertEqual(type(obj), MDerived3)
-+ obj = OtherMultipleDerived.createObject("OtherMultipleDerived");
-+ self.assertEqual(type(obj), OtherMultipleDerived)
-+
- if __name__ == '__main__':
- unittest.main()
-
-Index: shiboken/tests/libother/othermultiplederived.h
-===================================================================
---- shiboken.orig/tests/libother/othermultiplederived.h 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/tests/libother/othermultiplederived.h 2010-08-31 14:50:54.000000000 +0200
-@@ -37,6 +37,7 @@
-
- #include "libothermacros.h"
- #include "multiple_derived.h"
-+#include "virtualmethods.h"
-
- class ObjectType;
-
-@@ -44,7 +45,8 @@
- {
- public:
- // this will use CppCopier from other module (bug#142)
-- VirtualMethods returnUselessClass() { return VirtualMethods(); }
-+ VirtualMethods returnUselessClass();
-+ static Base1* createObject(const std::string& objName);
- };
-
- #endif
Deleted: packages/shiboken/trunk/debian/patches/u_46ab0d6_generated_original_name_with_star_for_object_classes.patch
===================================================================
--- packages/shiboken/trunk/debian/patches/u_46ab0d6_generated_original_name_with_star_for_object_classes.patch 2010-10-19 19:35:44 UTC (rev 14659)
+++ packages/shiboken/trunk/debian/patches/u_46ab0d6_generated_original_name_with_star_for_object_classes.patch 2010-10-19 19:40:03 UTC (rev 14660)
@@ -1,57 +0,0 @@
-From 47ab0d6bb7203c9a33c53d1b6d93f6305413c8e4 Mon Sep 17 00:00:00 2001
-From: Renato Filho <renato.filho at openbossa.org>
-Date: Thu, 26 Aug 2010 11:47:55 -0300
-Subject: [PATCH] Generated original_name with "*" for object classes.
-
-Use base type original_name to derived classes.
-Fixes bug #311.
-
-Reviewer: Luciano Wolf <luciano.wolf at openbossa.org>
- Hugo Parente Lima <hugo.pl at gmail.com>
----
- cppgenerator.cpp | 5 ++++-
- libshiboken/basewrapper.cpp | 8 ++++++--
- 2 files changed, 10 insertions(+), 3 deletions(-)
-
-Index: shiboken/cppgenerator.cpp
-===================================================================
---- shiboken.orig/cppgenerator.cpp 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/cppgenerator.cpp 2010-08-31 14:50:48.000000000 +0200
-@@ -2404,7 +2404,10 @@
- s << INDENT << "/*cpp_dtor*/ " << cpp_dtor << ',' << endl;
- s << INDENT << "/*is_multicpp*/ 0," << endl;
- s << INDENT << "/*is_user_type*/ 0," << endl;
-- s << INDENT << "/*original_name*/ \"" << metaClass->qualifiedCppName() << "\"," << endl;
-+ QString suffix;
-+ if (metaClass->typeEntry()->isObject() || metaClass->typeEntry()->isQObject())
-+ suffix = "*";
-+ s << INDENT << "/*original_name*/ \"" << metaClass->qualifiedCppName() << suffix << "\"," << endl;
- s << INDENT << "/*user_data*/ 0" << endl;
- s << "};" << endl;
- s << "} //extern" << endl;
-Index: shiboken/libshiboken/basewrapper.cpp
-===================================================================
---- shiboken.orig/libshiboken/basewrapper.cpp 2010-08-31 14:50:38.000000000 +0200
-+++ shiboken/libshiboken/basewrapper.cpp 2010-08-31 14:50:48.000000000 +0200
-@@ -304,7 +304,8 @@
- Shiboken::AutoDecRef emptyTuple(PyTuple_New(0));
- SbkBaseWrapper* self = reinterpret_cast<SbkBaseWrapper*>(PyBaseObject_Type.tp_new(subtype, emptyTuple, 0));
-
-- int numBases = reinterpret_cast<SbkBaseWrapperType*>(subtype)->is_multicpp ? getNumberOfCppBaseClasses(subtype) : 1;
-+ SbkBaseWrapperType* sbkType = reinterpret_cast<SbkBaseWrapperType*>(subtype);
-+ int numBases = sbkType->is_multicpp ? getNumberOfCppBaseClasses(subtype) : 1;
- self->cptr = new void*[numBases];
- std::memset(self->cptr, 0, sizeof(void*)*numBases);
- self->hasOwnership = 1;
-@@ -542,7 +543,10 @@
- newType->cpp_dtor = 0;
- newType->is_multicpp = 1;
- }
-- newType->original_name = "";
-+ if (bases.size() == 1)
-+ newType->original_name = bases.front()->original_name;
-+ else
-+ newType->original_name = "object";
- newType->user_data = 0;
- newType->d_func = 0;
- newType->is_user_type = 1;
More information about the Python-modules-commits
mailing list