aboutsummaryrefslogtreecommitdiffstats
path: root/typedatabase.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-12-23 15:10:17 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-09 19:10:21 -0300
commit4889efc199243af54cf71accffb3f9554cba933d (patch)
treec08e9b0b65074868454f09807c51455a582a5410 /typedatabase.cpp
parentab94961a639cc7b364fcb1e3f68531792c312990 (diff)
Added the "<custom-type>" tag, and better requirements for function signatures.sb-0.10.10
Trying to find a non-qualified (without scope information) class, found in a function signature or return type, was a bad idea for it makes the parsing awfully slow when dealing with huge libraries. If the user writes a type in short form in a function signature (e.g. "SomeClass", instead of "Namespace::SomeClass"), APIExtractor will exit with a message indicating the error and the possible candidates for the type. The "<custom-type>" tag is for types of the target language ("PyObject" in Python, for instance) and will be handled by the generator. Reviewed by Hugo Parente <hugo.lima@openbossa.org> Reviewed by Paulo Alcantara <pcacjr@gmail.com>
Diffstat (limited to 'typedatabase.cpp')
-rw-r--r--typedatabase.cpp23
1 files changed, 4 insertions, 19 deletions
diff --git a/typedatabase.cpp b/typedatabase.cpp
index 1247bf7f3..d5c1eb6ce 100644
--- a/typedatabase.cpp
+++ b/typedatabase.cpp
@@ -141,29 +141,14 @@ PrimitiveTypeEntry* TypeDatabase::findTargetLangPrimitiveType(const QString& tar
TypeEntry* TypeDatabase::findType(const QString& name) const
{
- TypeEntry* typeEntry = 0;
- QList<TypeEntry *> typeEntries = findTypes(name);
-
- if (typeEntries.isEmpty()) {
- SingleTypeEntryHash entriesHash = entries();
- foreach (QString typeName, entriesHash.keys()) {
- // Let's try to find the type in different scopes.
- // We will prefer the ones with the least depth.
- if (typeName.endsWith("::"+name)
- && (!typeEntry || typeEntry->qualifiedCppName().count("::") < typeName.count("::"))) {
- typeEntry = entriesHash[typeName];
- }
- }
- }
-
- foreach (TypeEntry* entry, typeEntries) {
+ QList<TypeEntry *> entries = findTypes(name);
+ foreach (TypeEntry *entry, entries) {
if (entry &&
(!entry->isPrimitive() || static_cast<PrimitiveTypeEntry *>(entry)->preferredTargetLangType())) {
- typeEntry = entry;
- break;
+ return entry;
}
}
- return typeEntry;
+ return 0;
}
SingleTypeEntryHash TypeDatabase::entries() const