[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/bindings/smokegenerator
From: Arno Rehn <kde () arnorehn ! de>
Date: 2009-05-31 19:46:04
Message-ID: 1243799164.850334.3084.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 976067 by arnorehn:
some fixes for resolving types
M +23 -6 generatorvisitor.cpp
--- trunk/playground/bindings/smokegenerator/generatorvisitor.cpp #976066:976067
@@ -59,14 +59,31 @@
QPair<Class*, Typedef*> GeneratorVisitor::resolveType(const QString & name)
{
+ // check for nested classes
+ for (int i = klass.count() - 1; i >= 0; i--) {
+ QString name = klass[i]->toString() + "::" + name;
+ if (classes.contains(name))
+ return qMakePair<Class*, Typedef*>(&classes[name], 0);
+ else if (typedefs.contains(name))
+ return qMakePair<Class*, Typedef*>(0, &typedefs[name]);
+ }
+
// check for 'using type;'
+ // if we use 'type', we can also access type::nested, take care of that
+ int index = name.indexOf("::");
+ QString first = name, rest;
+ if (index > -1) {
+ first = name.mid(0, index);
+ rest = name.mid(index);
+ }
foreach (const QStringList& list, usingTypes) {
foreach (const QString& string, list) {
- if (string.endsWith(name)) {
- if (classes.contains(string))
- return qMakePair<Class*, Typedef*>(&classes[string], 0);
- else if (typedefs.contains(string))
- return qMakePair<Class*, Typedef*>(0, &typedefs[string]);
+ QString complete = string + rest;
+ if (string.endsWith(first)) {
+ if (classes.contains(complete))
+ return qMakePair<Class*, Typedef*>(&classes[complete], 0);
+ else if (typedefs.contains(complete))
+ return qMakePair<Class*, Typedef*>(0, &typedefs[complete]);
}
}
}
@@ -391,7 +408,7 @@
return;
}
// resolve the type in the current context
- QPair<Class*, Typedef*> klass = resolveType(tc->qualifiedName().last());
+ QPair<Class*, Typedef*> klass = resolveType(tc->qualifiedName().join("::"));
if (klass.first) {
// it's a class
currentType = Type(klass.first, tc->isConstant(), tc->isVolatile());
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic