diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-09-23 17:18:03 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-09 19:10:10 -0300 |
commit | 5633a2dbe3aba94292e1e3d03ccabe8cf25b802a (patch) | |
tree | 0658b89455d2770a054978e366d6c018bddf7131 /abstractmetalang.cpp | |
parent | b3c0b0493fe48d2ca416f4a509a93dd1344e15b1 (diff) |
Fixed AbstractMetaClassList::findEnumValue to search for the enum in all classes.
Diffstat (limited to 'abstractmetalang.cpp')
-rw-r--r-- | abstractmetalang.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp index 4df4f2362..ed7934261 100644 --- a/abstractmetalang.cpp +++ b/abstractmetalang.cpp @@ -2216,15 +2216,22 @@ AbstractMetaEnumValue *AbstractMetaClassList::findEnumValue(const QString &name) { QStringList lst = name.split(QLatin1String("::")); - Q_ASSERT_X(lst.size() == 2, "AbstractMetaClassList::findEnumValue()", "Expected qualified enum"); + if (lst.size() > 1) { + QString prefixName = lst.at(0); + QString enumName = lst.at(1); + AbstractMetaClass* cl = findClass(prefixName); + if (cl) + return cl->findEnumValue(enumName, 0); + } - QString prefixName = lst.at(0); - QString enumName = lst.at(1); - - AbstractMetaClass *cl = findClass(prefixName); - if (cl) - return cl->findEnumValue(enumName, 0); + foreach(AbstractMetaClass* metaClass, *this) { + foreach(AbstractMetaEnum* metaEnum, metaClass->enums()) { + AbstractMetaEnumValue* enumValue = metaClass->findEnumValue(name, metaEnum); + if (enumValue) + return enumValue; + } + } ReportHandler::warning(QString("no matching enum '%1'").arg(name)); return 0; |