summaryrefslogtreecommitdiffstats
path: root/src/tools/qdoc/tree.h
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@digia.com>2012-09-24 09:54:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-26 10:12:04 +0200
commit4b21631f595b80a692d30e3f8960ff8d6fcc5c4a (patch)
tree65e7add82fe800a14dc6847bce8bde58249eb640 /src/tools/qdoc/tree.h
parentd8cebcdf67ddebb3bce89a08c7ffab4cc9bf4107 (diff)
qdoc: retrying More refactoring of qdoc data structures
This commit is the second phase of a significant overhaul of qdoc. Two new classes, QDocIndexFiles, and QDocTagFiles, are added to encapsulate the creation and use of the qdoc index files, and the creation of the qdoc tag file. Change-Id: I94651b10628e535ea7b26bd8256037cd819ccea7 Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/tools/qdoc/tree.h')
-rw-r--r--src/tools/qdoc/tree.h58
1 files changed, 23 insertions, 35 deletions
diff --git a/src/tools/qdoc/tree.h b/src/tools/qdoc/tree.h
index df7fa332d4..2066def091 100644
--- a/src/tools/qdoc/tree.h
+++ b/src/tools/qdoc/tree.h
@@ -47,14 +47,10 @@
#define TREE_H
#include "node.h"
-#include <qdom.h>
-#include <qxmlstream.h>
QT_BEGIN_NAMESPACE
-class Generator;
class QStringList;
-class TreePrivate;
class QDocDatabase;
class Tree
@@ -62,9 +58,25 @@ class Tree
private:
friend class QDocDatabase;
- enum FindFlag { SearchBaseClasses = 0x1,
- SearchEnumValues = 0x2,
- NonFunction = 0x4 };
+ typedef QMap<PropertyNode::FunctionRole, QString> RoleMap;
+ typedef QMap<PropertyNode*, RoleMap> PropertyMap;
+
+ struct InheritanceBound
+ {
+ Node::Access access;
+ QStringList basePath;
+ QString dataTypeWithTemplateArgs;
+ InnerNode* parent;
+
+ InheritanceBound() : access(Node::Public) { }
+ InheritanceBound(Node::Access access0,
+ const QStringList& basePath0,
+ const QString& dataTypeWithTemplateArgs0,
+ InnerNode* parent)
+ : access(access0), basePath(basePath0),
+ dataTypeWithTemplateArgs(dataTypeWithTemplateArgs0),
+ parent(parent) { }
+ };
Tree(QDocDatabase* qdb);
~Tree();
@@ -125,12 +137,9 @@ class Tree
void resolveInheritance(NamespaceNode *rootNode = 0);
void resolveProperties();
void resolveGroups();
- void resolveTargets(InnerNode* root);
void resolveCppToQmlLinks();
void fixInheritance(NamespaceNode *rootNode = 0);
- void setVersion(const QString &version) { vers = version; }
NamespaceNode *root() { return &root_; }
- QString version() const { return vers; }
const FunctionNode *findFunctionNode(const QStringList &path,
const Node *relative = 0,
@@ -139,42 +148,21 @@ class Tree
const FunctionNode *clone,
const Node *relative = 0,
int findFlags = 0) const;
- const DocNode *findDocNodeByTitle(const QString &title, const Node* relative = 0) const;
- const Node *findUnambiguousTarget(const QString &target, Atom *&atom, const Node* relative) const;
- Atom *findTarget(const QString &target, const Node *node) const;
const NamespaceNode *root() const { return &root_; }
- void readIndexes(const QStringList &indexFiles);
- bool generateIndexSection(QXmlStreamWriter& writer, Node* node, bool generateInternalNodes = false);
- void generateIndexSections(QXmlStreamWriter& writer, Node* node, bool generateInternalNodes = false);
- void generateIndex(const QString &fileName,
- const QString &url,
- const QString &title,
- Generator* g,
- bool generateInternalNodes = false);
- void generateTagFileCompounds(QXmlStreamWriter &writer,
- const InnerNode *inner);
- void generateTagFileMembers(QXmlStreamWriter &writer,
- const InnerNode *inner);
- void generateTagFile(const QString &fileName);
- void addExternalLink(const QString &url, const Node *relative);
void resolveInheritance(int pass, ClassNode *classe);
FunctionNode *findVirtualFunctionInBaseClasses(ClassNode *classe,
FunctionNode *clone);
void fixPropertyUsingBaseClasses(ClassNode *classe, PropertyNode *property);
NodeList allBaseClasses(const ClassNode *classe) const;
- void readIndexFile(const QString &path);
- void readIndexSection(const QDomElement &element, InnerNode *parent,
- const QString &indexUrl);
- QString readIndexText(const QDomElement &element);
- void resolveIndex();
private:
QDocDatabase* qdb_;
NamespaceNode root_;
- QString vers;
- Generator* gen_;
- TreePrivate *priv;
+ QMap<ClassNode* , QList<InheritanceBound> > unresolvedInheritanceMap;
+ PropertyMap unresolvedPropertyMap;
+ NodeMultiMap groupMap;
+ QMultiMap<QString, QString> publicGroupMap;
};
QT_END_NAMESPACE