diff options
Diffstat (limited to 'src/tools/qdoc/tree.h')
-rw-r--r-- | src/tools/qdoc/tree.h | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/src/tools/qdoc/tree.h b/src/tools/qdoc/tree.h index e1a08dd471..1fe0046ae5 100644 --- a/src/tools/qdoc/tree.h +++ b/src/tools/qdoc/tree.h @@ -46,6 +46,7 @@ #ifndef TREE_H #define TREE_H +#include <QtCore/qstack.h> #include "node.h" QT_BEGIN_NAMESPACE @@ -53,23 +54,36 @@ QT_BEGIN_NAMESPACE class QStringList; class QDocDatabase; +struct TargetRec +{ + public: + enum Type { Unknown, Target, Keyword, Contents, Class, Function, Page, Subtitle }; + TargetRec() : node_(0), priority_(INT_MAX), type_(Unknown) { } + bool isEmpty() const { return ref_.isEmpty(); } + Node* node_; + QString ref_; + int priority_; + Type type_; +}; +typedef QMultiMap<QString, TargetRec> TargetMap; +typedef QMultiMap<QString, DocNode*> DocNodeMultiMap; + class Tree { private: + friend class QDocForest; friend class QDocDatabase; typedef QMap<PropertyNode::FunctionRole, QString> RoleMap; typedef QMap<PropertyNode*, RoleMap> PropertyMap; - Tree(QDocDatabase* qdb); + Tree(const QString& module, QDocDatabase* qdb); ~Tree(); - /* API members */ ClassNode* findClassNode(const QStringList& path, Node* start = 0) const; NamespaceNode* findNamespaceNode(const QStringList& path) const; FunctionNode* findFunctionNode(const QStringList& parentPath, const FunctionNode* clone); - /* internal members */ Node* findNodeRecursive(const QStringList& path, int pathIndex, Node* start, @@ -90,19 +104,22 @@ class Tree int findFlags, bool qml) const; -// --------------------------------------------------------------------- QmlClassNode* findQmlTypeNode(const QStringList& path); Node* findNodeByNameAndType(const QStringList& path, Node::Type type, Node::SubType subtype, - Node* start, bool acceptCollision = false); InnerNode* findRelatesNode(const QStringList& path); - NameCollisionNode* checkForCollision(const QString& name) const; + NameCollisionNode* checkForCollision(const QString& name); NameCollisionNode* findCollisionNode(const QString& name) const; + QString findTarget(const QString& target, const Node* node) const; + void insertTarget(const QString& name, TargetRec::Type type, Node* node, int priority); + void resolveTargets(InnerNode* root); + const Node* findUnambiguousTarget(const QString& target, QString& ref, const Node* relative); + const DocNode* findDocNodeByTitle(const QString& title, const Node* relative = 0) const; void addPropertyFunction(PropertyNode *property, const QString &funcName, @@ -122,14 +139,20 @@ class Tree FunctionNode *findVirtualFunctionInBaseClasses(ClassNode *classe, FunctionNode *clone); NodeList allBaseClasses(const ClassNode *classe) const; + QString refForAtom(const Atom* atom); public: - static bool debug_; + const QString& moduleName() const { return module_; } private: + QString module_; QDocDatabase* qdb_; NamespaceNode root_; PropertyMap unresolvedPropertyMap; + DocNodeMultiMap docNodesByTitle_; + TargetMap nodesByTarget_; + //NodeMap nodesByName_; + //NodeMap nodesByTitle_; }; QT_END_NAMESPACE |