diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | include.cpp | 49 | ||||
-rw-r--r-- | include.h | 83 | ||||
-rw-r--r-- | typesystem.cpp | 24 | ||||
-rw-r--r-- | typesystem.h | 42 |
5 files changed, 137 insertions, 63 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 00b98aad7..736e4b625 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ graph.cpp reporthandler.cpp typeparser.cpp typesystem.cpp +include.cpp parser/ast.cpp parser/binder.cpp parser/class_compiler.cpp @@ -114,6 +115,7 @@ typesystem.h fileout.h docparser.h qtdocparser.h +include.h ) if (BUILD_TESTS) diff --git a/include.cpp b/include.cpp new file mode 100644 index 000000000..4d4787d03 --- /dev/null +++ b/include.cpp @@ -0,0 +1,49 @@ +/* + * This file is part of the API Extractor project. + * + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * Contact: PySide team <contact@pyside.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include "include.h" +#include <QTextStream> +#include <QHash> + +QString Include::toString() const +{ + if (m_type == IncludePath) + return "#include <" + m_name + '>'; + else if (m_type == LocalPath) + return "#include \"" + m_name + "\""; + else + return "import " + m_name + ";"; +} + +uint qHash(const Include& inc) +{ + return qHash(inc.m_name); +} + +QTextStream& operator<<(QTextStream& out, const Include& include) +{ + if (include.isValid()) + out << include.toString() << endl; + return out; +} + diff --git a/include.h b/include.h new file mode 100644 index 000000000..94e6ced88 --- /dev/null +++ b/include.h @@ -0,0 +1,83 @@ +/* + * This file is part of the API Extractor project. + * + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * Contact: PySide team <contact@pyside.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifndef INCLUDE_H +#define INCLUDE_H + +#include "apiextractormacros.h" +#include <QString> +#include <QList> + +class QTextStream; + +class APIEXTRACTOR_API Include +{ +public: + enum IncludeType { + IncludePath, + LocalPath, + TargetLangImport + }; + + Include() : m_type(IncludePath) {} + Include(IncludeType t, const QString &nam) : m_type(t), m_name(nam) {}; + + bool isValid() const + { + return !m_name.isEmpty(); + } + + IncludeType type() const + { + return m_type; + } + + QString name() const + { + return m_name; + } + + QString toString() const; + + bool operator<(const Include& other) const + { + return m_name < other.m_name; + } + + bool operator==(const Include& other) const + { + return m_type == other.m_type && m_name == other.m_name; + } + + friend uint qHash(const Include&); + private: + IncludeType m_type; + QString m_name; +}; + +APIEXTRACTOR_API uint qHash(const Include& inc); +APIEXTRACTOR_API QTextStream& operator<<(QTextStream& out, const Include& include); + +typedef QList<Include> IncludeList; + +#endif diff --git a/typesystem.cpp b/typesystem.cpp index 4f696c10c..e1992b867 100644 --- a/typesystem.cpp +++ b/typesystem.cpp @@ -1792,18 +1792,6 @@ IncludeList TypeDatabase::extraIncludes(const QString &className) return IncludeList(); } - - -QString Include::toString() const -{ - if (type == IncludePath) - return "#include <" + name + '>'; - else if (type == LocalPath) - return "#include \"" + name + "\""; - else - return "import " + name + ";"; -} - QString Modification::accessModifierString() const { if (isPrivate()) return "private"; @@ -2239,18 +2227,6 @@ QString ContainerTypeEntry::typeName() const } } -uint qHash(const Include& inc) -{ - return qHash(inc.name); -} - -QTextStream& operator<<(QTextStream& out, const Include& include) -{ - if (include.isValid()) - out << include.toString() << endl; - return out; -} - /* static void injectCode(ComplexTypeEntry *e, const char *signature, diff --git a/typesystem.h b/typesystem.h index ce5104f9f..1c1c08299 100644 --- a/typesystem.h +++ b/typesystem.h @@ -30,6 +30,7 @@ #include <QtCore/QMap> #include <QtCore/QDebug> #include "apiextractormacros.h" +#include "include.h" class Indentor; @@ -39,43 +40,6 @@ class QTextStream; class EnumTypeEntry; class FlagsTypeEntry; -struct APIEXTRACTOR_API Include -{ - enum IncludeType { - IncludePath, - LocalPath, - TargetLangImport - }; - - Include() : type(IncludePath) {} - Include(IncludeType t, const QString &nam) : type(t), name(nam) {}; - - bool isValid() const - { - return !name.isEmpty(); - } - - IncludeType type; - QString name; - - QString toString() const; - - bool operator<(const Include& other) const - { - return name < other.name; - } - - bool operator==(const Include& other) const - { - return type == other.type && name == other.name; - } -}; - -APIEXTRACTOR_API uint qHash(const Include& inc); -APIEXTRACTOR_API QTextStream& operator<<(QTextStream& out, const Include& include); - -typedef QList<Include> IncludeList; - typedef QMap<int, QString> ArgumentMap; class TemplateInstance; @@ -883,9 +847,9 @@ public: } void addExtraInclude(const Include &include) { - if (!m_includesUsed.value(include.name, false)) { + if (!m_includesUsed.value(include.name(), false)) { m_extraIncludes << include; - m_includesUsed[include.name] = true; + m_includesUsed[include.name()] = true; } } |