diff options
Diffstat (limited to 'sources/shiboken2/ApiExtractor/typedatabase.cpp')
-rw-r--r-- | sources/shiboken2/ApiExtractor/typedatabase.cpp | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/sources/shiboken2/ApiExtractor/typedatabase.cpp b/sources/shiboken2/ApiExtractor/typedatabase.cpp index a8c69d376..930f85d30 100644 --- a/sources/shiboken2/ApiExtractor/typedatabase.cpp +++ b/sources/shiboken2/ApiExtractor/typedatabase.cpp @@ -621,14 +621,33 @@ ObjectTypeEntry* TypeDatabase::findObjectType(const QString& name) const return 0; } -NamespaceTypeEntry* TypeDatabase::findNamespaceType(const QString& name) const +NamespaceTypeEntryList TypeDatabase::findNamespaceTypes(const QString& name) const { + NamespaceTypeEntryList result; const auto entries = findTypes(name); for (TypeEntry *entry : entries) { - if (entry->isNamespace() && useType(entry)) - return static_cast<NamespaceTypeEntry*>(entry); + if (entry->isNamespace()) + result.append(static_cast<NamespaceTypeEntry*>(entry)); } - return 0; + return result; +} + +NamespaceTypeEntry *TypeDatabase::findNamespaceType(const QString& name, + const QString &fileName) const +{ + const auto entries = findNamespaceTypes(name); + // Preferably check on matching file name first, if a pattern was given. + if (!fileName.isEmpty()) { + for (NamespaceTypeEntry *entry : entries) { + if (entry->hasPattern() && entry->matchesFile(fileName)) + return entry; + } + } + for (NamespaceTypeEntry *entry : entries) { + if (!entry->hasPattern()) + return entry; + } + return nullptr; } bool TypeDatabase::shouldDropTypeEntry(const QString& fullTypeName) const @@ -836,6 +855,13 @@ void EnumTypeEntry::formatDebug(QDebug &d) const d << ", flags=(" << m_flags << ')'; } +void NamespaceTypeEntry::formatDebug(QDebug &d) const +{ + ComplexTypeEntry::formatDebug(d); + auto pattern = m_filePattern.pattern(); + FORMAT_NONEMPTY_STRING("pattern", pattern) +} + void ContainerTypeEntry::formatDebug(QDebug &d) const { ComplexTypeEntry::formatDebug(d); |