aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/ApiExtractor/parser/codemodel.cpp')
-rw-r--r--sources/shiboken2/ApiExtractor/parser/codemodel.cpp80
1 files changed, 60 insertions, 20 deletions
diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
index a5024c4a3..a35ca314b 100644
--- a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
+++ b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp
@@ -47,9 +47,9 @@ private:
};
template <class T>
-static QSharedPointer<T> findModelItem(const QList<QSharedPointer<T> > &list, const QString &name)
+static QSharedPointer<T> findModelItem(const QVector<QSharedPointer<T> > &list, const QString &name)
{
- typedef typename QList<QSharedPointer<T> >::const_iterator It;
+ typedef typename QVector<QSharedPointer<T> >::const_iterator It;
const It it = std::find_if(list.begin(), list.end(), ModelItemNamePredicate<T>(name));
return it != list.end() ? *it : QSharedPointer<T>();
}
@@ -221,7 +221,7 @@ QString TypeInfo::toString() const
tmp += QLatin1Char(')');
}
- foreach(QString elt, arrayElements()) {
+ for (const QString &elt : m_arrayElements) {
tmp += QLatin1Char('[');
tmp += elt;
tmp += QLatin1Char(']');
@@ -230,7 +230,7 @@ QString TypeInfo::toString() const
return tmp;
}
-bool TypeInfo::operator==(const TypeInfo &other)
+bool TypeInfo::operator==(const TypeInfo &other) const
{
if (arrayElements().count() != other.arrayElements().count())
return false;
@@ -514,16 +514,6 @@ _ClassModelItem::~_ClassModelItem()
{
}
-QStringList _ClassModelItem::baseClasses() const
-{
- return m_baseClasses;
-}
-
-void _ClassModelItem::setBaseClasses(const QStringList &baseClasses)
-{
- m_baseClasses = baseClasses;
-}
-
TemplateParameterList _ClassModelItem::templateParameters() const
{
return m_templateParameters;
@@ -534,14 +524,21 @@ void _ClassModelItem::setTemplateParameters(const TemplateParameterList &templat
m_templateParameters = templateParameters;
}
-void _ClassModelItem::addBaseClass(const QString &baseClass)
+void _ClassModelItem::addBaseClass(const QString &name, CodeModel::AccessPolicy accessPolicy)
{
+ _ClassModelItem::BaseClass baseClass;
+ baseClass.name = name;
+ baseClass.accessPolicy = accessPolicy;
m_baseClasses.append(baseClass);
}
bool _ClassModelItem::extendsClass(const QString &name) const
{
- return m_baseClasses.contains(name);
+ for (const BaseClass &bc : m_baseClasses) {
+ if (bc.name == name)
+ return true;
+ }
+ return false;
}
void _ClassModelItem::setClassType(CodeModel::ClassType type)
@@ -578,8 +575,17 @@ static void formatModelItemList(QDebug &d, const char *prefix, const List &l,
void _ClassModelItem::formatDebug(QDebug &d) const
{
_CodeModelItem::formatDebug(d);
- if (!m_baseClasses.isEmpty())
- d << ", inherits=" << m_baseClasses;
+ if (!m_baseClasses.isEmpty()) {
+ if (m_final)
+ d << " [final]";
+ d << ", inherits=";
+ d << ", inherits=";
+ for (int i = 0, size = m_baseClasses.size(); i < size; ++i) {
+ if (i)
+ d << ", ";
+ d << m_baseClasses.at(i).name << " (" << m_baseClasses.at(i).accessPolicy << ')';
+ }
+ }
formatModelItemList(d, ", templateParameters=", m_templateParameters);
formatScopeItemsDebug(d);
}
@@ -588,7 +594,7 @@ void _ClassModelItem::formatDebug(QDebug &d) const
// ---------------------------------------------------------------------------
FunctionModelItem _ScopeModelItem::declaredFunction(FunctionModelItem item)
{
- foreach (const FunctionModelItem &fun, m_functions) {
+ for (const FunctionModelItem &fun : qAsConst(m_functions)) {
if (fun->name() == item->name() && fun->isSimilar(item))
return fun;
@@ -730,7 +736,7 @@ EnumModelItem _ScopeModelItem::findEnum(const QString &name) const
FunctionList _ScopeModelItem::findFunctions(const QString &name) const
{
FunctionList result;
- foreach (const FunctionModelItem &func, m_functions) {
+ for (const FunctionModelItem &func : m_functions) {
if (func->name() == name)
result.append(func);
}
@@ -742,6 +748,14 @@ _NamespaceModelItem::~_NamespaceModelItem()
{
}
+QSet<NamespaceModelItem> _NamespaceModelItem::uniqueNamespaces() const
+{
+ QSet<NamespaceModelItem> result;
+ for (const NamespaceModelItem &n : m_namespaces)
+ result.insert(n);
+ return result;
+}
+
void _NamespaceModelItem::addNamespace(NamespaceModelItem item)
{
m_namespaces.append(item);
@@ -875,6 +889,26 @@ bool _FunctionModelItem::isInline() const
return m_isInline;
}
+bool _FunctionModelItem::isOverride() const
+{
+ return m_isOverride;
+}
+
+void _FunctionModelItem::setOverride(bool o)
+{
+ m_isOverride = o;
+}
+
+bool _FunctionModelItem::isFinal() const
+{
+ return m_isFinal;
+}
+
+void _FunctionModelItem::setFinal(bool f)
+{
+ m_isFinal = f;
+}
+
void _FunctionModelItem::setInline(bool isInline)
{
m_isInline = isInline;
@@ -918,6 +952,12 @@ void _FunctionModelItem::formatDebug(QDebug &d) const
d << ", type=" << m_functionType;
if (m_isInline)
d << " [inline]";
+ if (m_isVirtual)
+ d << " [virtual]";
+ if (m_isOverride)
+ d << " [override]";
+ if (m_isFinal)
+ d << " [final]";
if (m_isAbstract)
d << " [abstract]";
if (m_isExplicit)