aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/ApiExtractor')
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.cpp17
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.h4
-rw-r--r--sources/shiboken6/ApiExtractor/apiextractor.cpp13
-rw-r--r--sources/shiboken6/ApiExtractor/apiextractorresult.h8
-rw-r--r--sources/shiboken6/ApiExtractor/messages.cpp2
-rw-r--r--sources/shiboken6/ApiExtractor/messages.h2
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);