Mercurial > projects > qtd
diff generator/typesystem.cpp @ 4:0a29ce1ae854
CMake build script.
Small fixes in examples.
author | SokoL_SD |
---|---|
date | Wed, 13 May 2009 19:01:55 +0000 |
parents | e78566595089 |
children | 5015aede8edd |
line wrap: on
line diff
--- a/generator/typesystem.cpp Wed May 13 17:34:40 2009 +0000 +++ b/generator/typesystem.cpp Wed May 13 19:01:55 2009 +0000 @@ -138,8 +138,8 @@ class Handler : public QXmlDefaultHandler { public: - Handler(TypeDatabase *database, bool generate) - : m_database(database), m_generate(generate ? TypeEntry::GenerateAll : TypeEntry::GenerateForSubclass) + Handler(TypeDatabase *database, const QString &source_dir, bool generate) + : m_database(database), m_generate(generate ? TypeEntry::GenerateAll : TypeEntry::GenerateForSubclass), m_source_dir(source_dir) { m_current_enum = 0; current = 0; @@ -215,6 +215,8 @@ FieldModificationList m_field_mods; QHash<QString, StackElement::ElementType> tagNames; + + QString m_source_dir; }; bool Handler::error(const QXmlParseException &e) @@ -840,7 +842,7 @@ return false; } - if (!m_database->parseFile(name, convertBoolean(attributes["generate"], "generate", true))) { + if (!m_database->parseFile(name, m_source_dir, convertBoolean(attributes["generate"], "generate", true))) { m_error = QString("Failed to parse: '%1'").arg(name); return false; } @@ -1512,16 +1514,21 @@ addRemoveFunctionToTemplates(this); } -bool TypeDatabase::parseFile(const QString &filename, bool generate) +bool TypeDatabase::parseFile(const QString &filename, const QString &source_dir, bool generate) { - QFile file(filename); + QString name; + if (source_dir.isEmpty()) + name = filename; + else + name = source_dir + "/" + filename; + QFile file(name); Q_ASSERT(file.exists()); QXmlInputSource source(&file); int count = m_entries.size(); QXmlSimpleReader reader; - Handler handler(this, generate); + Handler handler(this, source_dir, generate); reader.setContentHandler(&handler); reader.setErrorHandler(&handler);