diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor')
-rw-r--r-- | sources/shiboken6/ApiExtractor/abstractmetalang.cpp | 17 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/abstractmetalang.h | 4 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/apiextractor.cpp | 13 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/apiextractorresult.h | 8 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/messages.cpp | 2 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/messages.h | 2 |
6 files changed, 38 insertions, 8 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp index 114433163..1875bf862 100644 --- a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp +++ b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp @@ -1409,6 +1409,13 @@ AbstractMetaClass *AbstractMetaClass::findClass(const AbstractMetaClassList &cla return it != classes.cend() ? *it : nullptr; } +const AbstractMetaClass *AbstractMetaClass::findClass(const AbstractMetaClassCList &classes, + const QString &name) +{ + auto it = findClassHelper(classes.cbegin(), classes.cend(), name); + return it != classes.cend() ? *it : nullptr; +} + AbstractMetaClass *AbstractMetaClass::findClass(const AbstractMetaClassList &classes, const TypeEntry *typeEntry) { @@ -1419,6 +1426,16 @@ AbstractMetaClass *AbstractMetaClass::findClass(const AbstractMetaClassList &cla return nullptr; } +const AbstractMetaClass *AbstractMetaClass::findClass(const AbstractMetaClassCList &classes, + const TypeEntry *typeEntry) +{ + for (auto c : classes) { + if (c->typeEntry() == typeEntry) + return c; + } + return nullptr; +} + // Query functions for generators bool AbstractMetaClass::isObjectType() const { diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.h b/sources/shiboken6/ApiExtractor/abstractmetalang.h index 61b5a092c..3626ba469 100644 --- a/sources/shiboken6/ApiExtractor/abstractmetalang.h +++ b/sources/shiboken6/ApiExtractor/abstractmetalang.h @@ -293,8 +293,12 @@ public: static AbstractMetaClass *findClass(const AbstractMetaClassList &classes, const QString &name); + static const AbstractMetaClass *findClass(const AbstractMetaClassCList &classes, + const QString &name); static AbstractMetaClass *findClass(const AbstractMetaClassList &classes, const TypeEntry* typeEntry); + static const AbstractMetaClass *findClass(const AbstractMetaClassCList &classes, + const TypeEntry* typeEntry); static std::optional<AbstractMetaEnumValue> findEnumValue(const AbstractMetaClassList &classes, const QString &string); static std::optional<AbstractMetaEnum> findEnum(const AbstractMetaClassList &classes, diff --git a/sources/shiboken6/ApiExtractor/apiextractor.cpp b/sources/shiboken6/ApiExtractor/apiextractor.cpp index 8e4501c74..da868d182 100644 --- a/sources/shiboken6/ApiExtractor/apiextractor.cpp +++ b/sources/shiboken6/ApiExtractor/apiextractor.cpp @@ -45,6 +45,9 @@ #include "typedatabase.h" #include "typesystem.h" +#include <algorithm> +#include <iterator> + ApiExtractor::ApiExtractor() { // Environment TYPESYSTEMPATH @@ -222,13 +225,19 @@ bool ApiExtractor::runHelper(bool usePySideExtensions) return result; } +static inline void classListToCList(const AbstractMetaClassList &list, AbstractMetaClassCList *target) +{ + target->reserve(list.size()); + std::copy(list.cbegin(), list.cend(), std::back_inserter(*target)); +} + std::optional<ApiExtractorResult> ApiExtractor::run(bool usePySideExtensions) { if (!runHelper(usePySideExtensions)) return {}; ApiExtractorResult result; - result.m_metaClasses = m_builder->classes(); - result.m_smartPointers = m_builder->smartPointers(); + classListToCList(m_builder->classes(), &result.m_metaClasses); + classListToCList(m_builder->smartPointers(), &result.m_smartPointers); result.m_globalFunctions = m_builder->globalFunctions(); result.m_globalEnums = m_builder->globalEnums(); result.m_enums = m_builder->typeEntryToEnumsHash(); diff --git a/sources/shiboken6/ApiExtractor/apiextractorresult.h b/sources/shiboken6/ApiExtractor/apiextractorresult.h index 5d30073e9..18b07a1b7 100644 --- a/sources/shiboken6/ApiExtractor/apiextractorresult.h +++ b/sources/shiboken6/ApiExtractor/apiextractorresult.h @@ -49,8 +49,8 @@ class ApiExtractorResult public: const AbstractMetaEnumList &globalEnums() const { return m_globalEnums; } const AbstractMetaFunctionCList &globalFunctions() const { return m_globalFunctions; } - const AbstractMetaClassList &classes() const { return m_metaClasses; } - const AbstractMetaClassList &smartPointers() const { return m_smartPointers; } + const AbstractMetaClassCList &classes() const { return m_metaClasses; } + const AbstractMetaClassCList &smartPointers() const { return m_smartPointers; } // Query functions for the generators std::optional<AbstractMetaEnum> findAbstractMetaEnum(const TypeEntry* typeEntry) const; @@ -64,8 +64,8 @@ public: AbstractMetaFunctionCList implicitConversions(const AbstractMetaType &metaType) const; private: - AbstractMetaClassList m_metaClasses; - AbstractMetaClassList m_smartPointers; + AbstractMetaClassCList m_metaClasses; + AbstractMetaClassCList m_smartPointers; AbstractMetaFunctionCList m_globalFunctions; AbstractMetaEnumList m_globalEnums; diff --git a/sources/shiboken6/ApiExtractor/messages.cpp b/sources/shiboken6/ApiExtractor/messages.cpp index 664db57eb..9da96de1a 100644 --- a/sources/shiboken6/ApiExtractor/messages.cpp +++ b/sources/shiboken6/ApiExtractor/messages.cpp @@ -576,7 +576,7 @@ QString msgConversionTypesDiffer(const QString &varType, const QString &conversi } QString msgCannotFindSmartPointer(const QString &instantiationType, - const AbstractMetaClassList &pointers) + const AbstractMetaClassCList &pointers) { QString result; QTextStream str(&result); diff --git a/sources/shiboken6/ApiExtractor/messages.h b/sources/shiboken6/ApiExtractor/messages.h index e3a89319f..d2aae484f 100644 --- a/sources/shiboken6/ApiExtractor/messages.h +++ b/sources/shiboken6/ApiExtractor/messages.h @@ -184,7 +184,7 @@ QString msgCannotUseEnumAsInt(const QString &name); QString msgConversionTypesDiffer(const QString &varType, const QString &conversionType); QString msgCannotFindSmartPointer(const QString &instantiationType, - const AbstractMetaClassList &pointers); + const AbstractMetaClassCList &pointers); QString msgLeftOverArguments(const QMap<QString, QString> &remainingArgs); |