diff options
Diffstat (limited to 'src/tools/qdoc/node.h')
-rw-r--r-- | src/tools/qdoc/node.h | 1167 |
1 files changed, 0 insertions, 1167 deletions
diff --git a/src/tools/qdoc/node.h b/src/tools/qdoc/node.h deleted file mode 100644 index 6b1032805f..0000000000 --- a/src/tools/qdoc/node.h +++ /dev/null @@ -1,1167 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the tools applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef NODE_H -#define NODE_H - -#include <qdir.h> -#include <qmap.h> -#include <qpair.h> -#include <qstringlist.h> - -#include "codechunk.h" -#include "doc.h" - -QT_BEGIN_NAMESPACE - -class Node; -class Tree; -class EnumNode; -class ClassNode; -class Aggregate; -class ExampleNode; -class TypedefNode; -class QmlTypeNode; -class QDocDatabase; -class FunctionNode; -class PropertyNode; -class CollectionNode; -class QmlPropertyNode; - -typedef QList<Node*> NodeList; -typedef QList<PropertyNode*> PropNodeList; -typedef QMap<QString, Node*> NodeMap; -typedef QMultiMap<QString, Node*> NodeMultiMap; -typedef QPair<int, int> NodeTypePair; -typedef QList<NodeTypePair> NodeTypeList; -typedef QMap<QString, CollectionNode*> CNMap; -typedef QMultiMap<QString, CollectionNode*> CNMultiMap; - -class Node -{ - Q_DECLARE_TR_FUNCTIONS(QDoc::Node) - -public: - enum NodeType { - NoType, - Namespace, - Class, - Document, - Enum, - Typedef, - Function, - Property, - Variable, - Group, - Module, - QmlType, - QmlModule, - QmlPropertyGroup, - QmlProperty, - QmlSignal, - QmlSignalHandler, - QmlMethod, - QmlBasicType, - LastType - }; - - enum DocSubtype { - NoSubtype, - Example, - HeaderFile, - File, - Image, - Page, - ExternalPage, - DitaMap, - LastSubtype - }; - - enum Genus { DontCare, CPP, JS, QML, DOC }; - - enum Access { Public, Protected, Private }; - - enum Status { - Compat, - Obsolete, - Deprecated, - Preliminary, - Active, - Internal, - Intermediate - }; // don't reorder this enum - - enum ThreadSafeness { - UnspecifiedSafeness, - NonReentrant, - Reentrant, - ThreadSafe - }; - - enum LinkType { - StartLink, - NextLink, - PreviousLink, - ContentsLink, - IndexLink - }; - - enum PageType { - NoPageType, - ApiPage, - ArticlePage, - ExamplePage, - HowToPage, - OverviewPage, - TutorialPage, - FAQPage, - DitaMapPage, - OnBeyondZebra - }; - - enum FlagValue { - FlagValueDefault = -1, - FlagValueFalse = 0, - FlagValueTrue = 1 - }; - - virtual ~Node(); - - QString plainName() const; - QString plainFullName(const Node* relative = 0) const; - QString fullName(const Node* relative=0) const; - - const QString& fileNameBase() const { return fileNameBase_; } - bool hasFileNameBase() const { return !fileNameBase_.isEmpty(); } - void setFileNameBase(const QString& t) { fileNameBase_ = t; } - Node::Genus genus() const { return (Genus) genus_; } - void setGenus(Genus t) { genus_ = (unsigned char) t; } - - void setAccess(Access t) { access_ = (unsigned char) t; } - void setLocation(const Location& t); - void setDoc(const Doc& doc, bool replace = false); - void setStatus(Status t) { - if (status_ == (unsigned char) Obsolete && t == Deprecated) - return; - status_ = (unsigned char) t; - } - void setThreadSafeness(ThreadSafeness t) { safeness_ = (unsigned char) t; } - void setSince(const QString &since); - void setRelates(Aggregate* pseudoParent); - void setRelates(const QString &name); - void setPhysicalModuleName(const QString &name) { physicalModuleName_ = name; } - void setUrl(const QString& url) { url_ = url; } - void setTemplateStuff(const QString &t) { templateStuff_ = t; } - void setReconstitutedBrief(const QString &t) { reconstitutedBrief_ = t; } - void setPageType(PageType t) { pageType_ = (unsigned char) t; } - void setPageType(const QString& t); - void setParent(Aggregate* n) { parent_ = n; } - void setIndexNodeFlag() { indexNodeFlag_ = true; } - virtual void setOutputFileName(const QString& ) { } - - bool isQmlNode() const { return genus() == QML; } - bool isJsNode() const { return genus() == JS; } - bool isCppNode() const { return genus() == CPP; } - - virtual bool isAggregate() const = 0; - virtual bool isCollectionNode() const { return false; } - virtual bool isDocumentNode() const { return false; } - virtual bool isGroup() const { return false; } - virtual bool isModule() const { return false; } - virtual bool isQmlModule() const { return false; } - virtual bool isJsModule() const { return false; } - virtual bool isQmlType() const { return false; } - virtual bool isJsType() const { return false; } - virtual bool isQmlBasicType() const { return false; } - virtual bool isJsBasicType() const { return false; } - virtual bool isEnumType() const { return false; } - virtual bool isExample() const { return false; } - virtual bool isExampleFile() const { return false; } - virtual bool isHeaderFile() const { return false; } - virtual bool isLeaf() const { return false; } - virtual bool isReimplemented() const { return false; } - virtual bool isFunction() const { return false; } - virtual bool isNamespace() const { return false; } - virtual bool isClass() const { return false; } - virtual bool isQtQuickNode() const { return false; } - virtual bool isAbstract() const { return false; } - virtual bool isProperty() const { return false; } - virtual bool isQmlProperty() const { return false; } - virtual bool isJsProperty() const { return false; } - virtual bool isQmlPropertyGroup() const { return false; } - virtual bool isJsPropertyGroup() const { return false; } - virtual bool isQmlSignal() const { return false; } - virtual bool isJsSignal() const { return false; } - virtual bool isQmlSignalHandler() const { return false; } - virtual bool isJsSignalHandler() const { return false; } - virtual bool isQmlMethod() const { return false; } - virtual bool isJsMethod() const { return false; } - virtual bool isAttached() const { return false; } - virtual bool isAlias() const { return false; } - virtual bool isWrapper() const; - virtual bool isReadOnly() const { return false; } - virtual bool isDefault() const { return false; } - virtual bool isExternalPage() const { return false; } - virtual void addMember(Node* ) { } - virtual bool hasMembers() const { return false; } - virtual bool hasNamespaces() const { return false; } - virtual bool hasClasses() const { return false; } - virtual void setAbstract(bool ) { } - virtual void setWrapper() { } - virtual QString title() const { return name(); } - virtual QString fullTitle() const { return name(); } - virtual QString subTitle() const { return QString(); } - virtual void setTitle(const QString& ) { } - virtual void setSubTitle(const QString& ) { } - virtual QmlPropertyNode* hasQmlProperty(const QString& ) const { return 0; } - virtual QmlPropertyNode* hasQmlProperty(const QString&, bool ) const { return 0; } - virtual void getMemberNamespaces(NodeMap& ) { } - virtual void getMemberClasses(NodeMap& ) const { } - virtual bool isInternal() const; - virtual void setDataType(const QString& ) { } - virtual void setReadOnly(bool ) { } - virtual Node* disambiguate(NodeType , DocSubtype ) { return this; } - virtual bool wasSeen() const { return false; } - virtual void appendGroupName(const QString& ) { } - virtual QString element() const { return QString(); } - virtual Tree* tree() const; - virtual void findChildren(const QString& , NodeList& nodes) const { nodes.clear(); } - virtual void setNoAutoList(bool ) { } - bool isIndexNode() const { return indexNodeFlag_; } - NodeType type() const { return (NodeType) nodeType_; } - virtual DocSubtype docSubtype() const { return NoSubtype; } - bool match(const NodeTypeList& types) const; - Aggregate* parent() const { return parent_; } - const Node* root() const; - Aggregate* relates() const { return relatesTo_; } - const QString& name() const { return name_; } - QString physicalModuleName() const; - QString url() const { return url_; } - virtual QString nameForLists() const { return name_; } - virtual QString outputFileName() const { return QString(); } - virtual QString obsoleteLink() const { return QString(); } - virtual void setObsoleteLink(const QString& ) { }; - virtual void setQtVariable(const QString& ) { } - virtual QString qtVariable() const { return QString(); } - - const QMap<LinkType, QPair<QString,QString> >& links() const { return linkMap_; } - void setLink(LinkType linkType, const QString &link, const QString &desc); - - Access access() const { return (Access) access_; } - bool isPrivate() const { return (Access) access_ == Private; } - QString accessString() const; - const Location& declLocation() const { return declLocation_; } - const Location& defLocation() const { return defLocation_; } - const Location& location() const { return (defLocation_.isEmpty() ? declLocation_ : defLocation_); } - const Doc& doc() const { return doc_; } - bool hasDoc() const { return !doc_.isEmpty(); } - Status status() const { return (Status) status_; } - Status inheritedStatus() const; - bool isObsolete() const { return (status_ == (unsigned char) Obsolete); } - ThreadSafeness threadSafeness() const; - ThreadSafeness inheritedThreadSafeness() const; - QString since() const { return since_; } - QString templateStuff() const { return templateStuff_; } - const QString& reconstitutedBrief() const { return reconstitutedBrief_; } - PageType pageType() const { return (PageType) pageType_; } - QString pageTypeString() const; - QString nodeTypeString() const; - QString nodeSubtypeString() const; - virtual void addPageKeywords(const QString& ) { } - - void clearRelated() { relatesTo_ = 0; } - - //QString guid() const; - QString extractClassName(const QString &string) const; - virtual QString qmlTypeName() const { return name_; } - virtual QString qmlFullBaseName() const { return QString(); } - virtual QString logicalModuleName() const { return QString(); } - virtual QString logicalModuleVersion() const { return QString(); } - virtual QString logicalModuleIdentifier() const { return QString(); } - virtual void setLogicalModuleInfo(const QString& ) { } - virtual void setLogicalModuleInfo(const QStringList& ) { } - virtual CollectionNode* logicalModule() const { return 0; } - virtual void setQmlModule(CollectionNode* ) { } - virtual ClassNode* classNode() { return 0; } - virtual void setClassNode(ClassNode* ) { } - virtual const Node* applyModuleName(const Node* ) const { return 0; } - virtual QString idNumber() { return "0"; } - QmlTypeNode* qmlTypeNode(); - ClassNode* declarativeCppNode(); - const QString& outputSubdirectory() const { return outSubDir_; } - virtual void setOutputSubdirectory(const QString& t) { outSubDir_ = t; } - QString fullDocumentName() const; - static QString cleanId(const QString &str); - //QString idForNode() const; - - static FlagValue toFlagValue(bool b); - static bool fromFlagValue(FlagValue fv, bool defaultValue); - - static QString pageTypeString(unsigned char t); - static QString nodeTypeString(unsigned char t); - static QString nodeSubtypeString(unsigned char t); - static int incPropertyGroupCount(); - static void clearPropertyGroupCount(); - static void initialize(); - static NodeType goal(const QString& t) { return goals_.value(t); } - -protected: - Node(NodeType type, Aggregate* parent, const QString& name); - void removeRelates(); - -private: - - unsigned char nodeType_; - unsigned char genus_; - unsigned char access_; - unsigned char safeness_; - unsigned char pageType_; - unsigned char status_; - bool indexNodeFlag_; - - Aggregate* parent_; - Aggregate* relatesTo_; - QString name_; - Location declLocation_; - Location defLocation_; - Doc doc_; - QMap<LinkType, QPair<QString, QString> > linkMap_; - QString fileNameBase_; - QString physicalModuleName_; - QString url_; - QString since_; - QString templateStuff_; - QString reconstitutedBrief_; - //mutable QString uuid_; - QString outSubDir_; - static QStringMap operators_; - static int propertyGroupCount_; - static QMap<QString,Node::NodeType> goals_; -}; -Q_DECLARE_TYPEINFO(Node::DocSubtype, Q_PRIMITIVE_TYPE); - -class Aggregate : public Node -{ -public: - virtual ~Aggregate(); - - Node* findChildNode(const QString& name, Node::Genus genus) const; - Node* findChildNode(const QString& name, NodeType type); - virtual void findChildren(const QString& name, NodeList& nodes) const Q_DECL_OVERRIDE; - FunctionNode* findFunctionNode(const QString& name, const QString& params) const; - FunctionNode* findFunctionNode(const FunctionNode* clone) const; - void addInclude(const QString &include); - void setIncludes(const QStringList &includes); - void normalizeOverloads(); - void makeUndocumentedChildrenInternal(); - void deleteChildren(); - void removeFromRelated(); - - virtual bool isAggregate() const Q_DECL_OVERRIDE { return true; } - virtual bool isLeaf() const Q_DECL_OVERRIDE { return false; } - const EnumNode* findEnumNodeForValue(const QString &enumValue) const; - const NodeList & childNodes() const { return children_; } - const NodeList & relatedNodes() const { return related_; } - - int count() const { return children_.size(); } - NodeList overloads(const QString &funcName) const; - const QStringList& includes() const { return includes_; } - - QStringList primaryKeys(); - QStringList secondaryKeys(); - const QStringList& pageKeywords() const { return pageKeywds; } - virtual void addPageKeywords(const QString& t) Q_DECL_OVERRIDE { pageKeywds << t; } - virtual void setOutputFileName(const QString& f) Q_DECL_OVERRIDE { outputFileName_ = f; } - virtual QString outputFileName() const Q_DECL_OVERRIDE { return outputFileName_; } - virtual QmlPropertyNode* hasQmlProperty(const QString& ) const Q_DECL_OVERRIDE; - virtual QmlPropertyNode* hasQmlProperty(const QString&, bool attached) const Q_DECL_OVERRIDE; - void addChild(Node* child, const QString& title); - const QStringList& groupNames() const { return groupNames_; } - virtual void appendGroupName(const QString& t) Q_DECL_OVERRIDE { groupNames_.append(t); } - void printChildren(const QString& title); - void addChild(Node* child); - void removeChild(Node* child); - void setOutputSubdirectory(const QString& t) Q_DECL_OVERRIDE; - const NodeMap& primaryFunctionMap() { return primaryFunctionMap_; } - const QMap<QString, NodeList>& secondaryFunctionMap() { return secondaryFunctionMap_; } - -protected: - Aggregate(NodeType type, Aggregate* parent, const QString& name); - -private: - friend class Node; - - static bool isSameSignature(const FunctionNode* f1, const FunctionNode* f2); - void removeRelated(Node* pseudoChild); - void addRelated(Node* pseudoChild); - - QString outputFileName_; - QStringList pageKeywds; - QStringList includes_; - QStringList groupNames_; - NodeList children_; - NodeList enumChildren_; - NodeList related_; - NodeMap childMap_; - NodeMap primaryFunctionMap_; - QMap<QString, NodeList> secondaryFunctionMap_; -}; - -class LeafNode : public Node -{ -public: - LeafNode(); - virtual ~LeafNode() { } - - virtual bool isAggregate() const Q_DECL_OVERRIDE { return false; } - virtual bool isLeaf() const Q_DECL_OVERRIDE { return true; } - -protected: - LeafNode(NodeType type, Aggregate* parent, const QString& name); - LeafNode(Aggregate* parent, NodeType type, const QString& name); -}; - -class NamespaceNode : public Aggregate -{ -public: - NamespaceNode(Aggregate* parent, const QString& name); - virtual ~NamespaceNode() { } - virtual bool isNamespace() const Q_DECL_OVERRIDE { return true; } - virtual Tree* tree() const Q_DECL_OVERRIDE { return (parent() ? parent()->tree() : tree_); } - virtual bool wasSeen() const Q_DECL_OVERRIDE { return seen_; } - - void markSeen() { seen_ = true; } - void markNotSeen() { seen_ = false; } - void setTree(Tree* t) { tree_ = t; } - const NodeList& orphans() const { return orphans_; } - void addOrphan(Node* child) { orphans_.append(child); } - - private: - bool seen_; - Tree* tree_; - NodeList orphans_; -}; - -struct RelatedClass -{ - RelatedClass() { } - // constructor for resolved base class - RelatedClass(Node::Access access, ClassNode* node) - : access_(access), node_(node) { } - // constructor for unresolved base class - RelatedClass(Node::Access access, const QStringList& path, const QString& signature) - : access_(access), node_(0), path_(path), signature_(signature) { } - QString accessString() const; - bool isPrivate() const { return (access_ == Node::Private); } - - Node::Access access_; - ClassNode* node_; - QStringList path_; - QString signature_; -}; - -struct UsingClause -{ - UsingClause() { } - UsingClause(const QString& signature) : node_(0), signature_(signature) { } - const QString& signature() const { return signature_; } - const Node* node() { return node_; } - void setNode(const Node* n) { node_ = n; } - - const Node* node_; - QString signature_; -}; - -class ClassNode : public Aggregate -{ -public: - ClassNode(Aggregate* parent, const QString& name); - virtual ~ClassNode() { } - virtual bool isClass() const Q_DECL_OVERRIDE { return true; } - virtual bool isWrapper() const Q_DECL_OVERRIDE { return wrapper_; } - virtual QString obsoleteLink() const Q_DECL_OVERRIDE { return obsoleteLink_; } - virtual void setObsoleteLink(const QString& t) Q_DECL_OVERRIDE { obsoleteLink_ = t; } - virtual void setWrapper() Q_DECL_OVERRIDE { wrapper_ = true; } - - void addResolvedBaseClass(Access access, ClassNode* node); - void addDerivedClass(Access access, ClassNode* node); - void addUnresolvedBaseClass(Access access, const QStringList& path, const QString& signature); - void addUnresolvedUsingClause(const QString& signature); - void fixBaseClasses(); - void fixPropertyUsingBaseClasses(PropertyNode* pn); - - QList<RelatedClass>& baseClasses() { return bases_; } - QList<RelatedClass>& derivedClasses() { return derived_; } - QList<RelatedClass>& ignoredBaseClasses() { return ignoredBases_; } - QList<UsingClause>& usingClauses() { return usingClauses_; } - - const QList<RelatedClass> &baseClasses() const { return bases_; } - const QList<RelatedClass> &derivedClasses() const { return derived_; } - const QList<RelatedClass> &ignoredBaseClasses() const { return ignoredBases_; } - const QList<UsingClause>& usingClauses() const { return usingClauses_; } - - QmlTypeNode* qmlElement() { return qmlelement; } - void setQmlElement(QmlTypeNode* qcn) { qmlelement = qcn; } - virtual bool isAbstract() const Q_DECL_OVERRIDE { return abstract_; } - virtual void setAbstract(bool b) Q_DECL_OVERRIDE { abstract_ = b; } - PropertyNode* findPropertyNode(const QString& name); - QmlTypeNode* findQmlBaseNode(); - -private: - QList<RelatedClass> bases_; - QList<RelatedClass> derived_; - QList<RelatedClass> ignoredBases_; - QList<UsingClause> usingClauses_; - bool abstract_; - bool wrapper_; - QString obsoleteLink_; - QmlTypeNode* qmlelement; -}; - -class DocumentNode : public Aggregate -{ -public: - - DocumentNode(Aggregate* parent, - const QString& name, - DocSubtype docSubtype, - PageType ptype); - virtual ~DocumentNode() { } - - virtual bool isDocumentNode() const Q_DECL_OVERRIDE { return true; } - virtual void setTitle(const QString &title) Q_DECL_OVERRIDE; - virtual void setSubTitle(const QString &subTitle) Q_DECL_OVERRIDE { subtitle_ = subTitle; } - - DocSubtype docSubtype() const Q_DECL_OVERRIDE { return nodeSubtype_; } - virtual QString title() const Q_DECL_OVERRIDE { return title_; } - virtual QString fullTitle() const Q_DECL_OVERRIDE; - virtual QString subTitle() const Q_DECL_OVERRIDE; - virtual QString imageFileName() const { return QString(); } - virtual QString nameForLists() const Q_DECL_OVERRIDE { return title(); } - virtual void setImageFileName(const QString& ) { } - - virtual bool isHeaderFile() const Q_DECL_OVERRIDE { return (docSubtype() == Node::HeaderFile); } - virtual bool isExample() const Q_DECL_OVERRIDE { return (docSubtype() == Node::Example); } - virtual bool isExampleFile() const Q_DECL_OVERRIDE { return (parent() && parent()->isExample()); } - virtual bool isExternalPage() const Q_DECL_OVERRIDE { return nodeSubtype_ == ExternalPage; } - -protected: - DocSubtype nodeSubtype_; - QString title_; - QString subtitle_; -}; - -class ExampleNode : public DocumentNode -{ -public: - ExampleNode(Aggregate* parent, const QString& name) - : DocumentNode(parent, name, Node::Example, Node::ExamplePage) { } - virtual ~ExampleNode() { } - virtual QString imageFileName() const Q_DECL_OVERRIDE { return imageFileName_; } - virtual void setImageFileName(const QString& ifn) Q_DECL_OVERRIDE { imageFileName_ = ifn; } - -private: - QString imageFileName_; -}; - -struct ImportRec { - QString name_; // module name - QString version_; // <major> . <minor> - QString importId_; // "as" name - QString importUri_; // subdirectory of module directory - - ImportRec(const QString& name, - const QString& version, - const QString& importId, - const QString& importUri) - : name_(name), version_(version), importId_(importId), importUri_(importUri) { } - QString& name() { return name_; } - QString& version() { return version_; } - QString& importId() { return importId_; } - QString& importUri() { return importUri_; } - bool isEmpty() const { return name_.isEmpty(); } -}; - -typedef QList<ImportRec> ImportList; - -class QmlTypeNode : public Aggregate -{ -public: - QmlTypeNode(Aggregate* parent, const QString& name); - virtual ~QmlTypeNode(); - virtual bool isQmlType() const Q_DECL_OVERRIDE { return genus() == Node::QML; } - virtual bool isJsType() const Q_DECL_OVERRIDE { return genus() == Node::JS; } - virtual bool isQtQuickNode() const Q_DECL_OVERRIDE { - return (logicalModuleName() == QLatin1String("QtQuick")); - } - virtual ClassNode* classNode() Q_DECL_OVERRIDE { return cnode_; } - virtual void setClassNode(ClassNode* cn) Q_DECL_OVERRIDE { cnode_ = cn; } - virtual bool isAbstract() const Q_DECL_OVERRIDE { return abstract_; } - virtual bool isWrapper() const Q_DECL_OVERRIDE { return wrapper_; } - virtual void setAbstract(bool b) Q_DECL_OVERRIDE { abstract_ = b; } - virtual void setWrapper() Q_DECL_OVERRIDE { wrapper_ = true; } - virtual bool isInternal() const Q_DECL_OVERRIDE { return (status() == Internal); } - virtual QString qmlFullBaseName() const Q_DECL_OVERRIDE; - virtual QString obsoleteLink() const Q_DECL_OVERRIDE { return obsoleteLink_; } - virtual void setObsoleteLink(const QString& t) Q_DECL_OVERRIDE { obsoleteLink_ = t; }; - virtual QString logicalModuleName() const Q_DECL_OVERRIDE; - virtual QString logicalModuleVersion() const Q_DECL_OVERRIDE; - virtual QString logicalModuleIdentifier() const Q_DECL_OVERRIDE; - virtual CollectionNode* logicalModule() const Q_DECL_OVERRIDE { return logicalModule_; } - virtual void setQmlModule(CollectionNode* t) Q_DECL_OVERRIDE { logicalModule_ = t; } - - const ImportList& importList() const { return importList_; } - void setImportList(const ImportList& il) { importList_ = il; } - const QString& qmlBaseName() const { return qmlBaseName_; } - void setQmlBaseName(const QString& name) { qmlBaseName_ = name; } - bool qmlBaseNodeNotSet() const { return (qmlBaseNode_ == 0); } - QmlTypeNode* qmlBaseNode(); - void setQmlBaseNode(QmlTypeNode* b) { qmlBaseNode_ = b; } - void requireCppClass() { cnodeRequired_ = true; } - bool cppClassRequired() const { return cnodeRequired_; } - static void addInheritedBy(const QString& base, Node* sub); - static void subclasses(const QString& base, NodeList& subs); - static void terminate(); - -public: - static bool qmlOnly; - static QMultiMap<QString,Node*> inheritedBy; - -private: - bool abstract_; - bool cnodeRequired_; - bool wrapper_; - ClassNode* cnode_; - QString qmlBaseName_; - QString obsoleteLink_; - CollectionNode* logicalModule_; - QmlTypeNode* qmlBaseNode_; - ImportList importList_; -}; - -class QmlBasicTypeNode : public Aggregate -{ -public: - QmlBasicTypeNode(Aggregate* parent, - const QString& name); - virtual ~QmlBasicTypeNode() { } - virtual bool isQmlBasicType() const Q_DECL_OVERRIDE { return (genus() == Node::QML); } - virtual bool isJsBasicType() const Q_DECL_OVERRIDE { return (genus() == Node::JS); } -}; - -class QmlPropertyGroupNode : public Aggregate -{ -public: - QmlPropertyGroupNode(QmlTypeNode* parent, const QString& name); - virtual ~QmlPropertyGroupNode() { } - virtual bool isQtQuickNode() const Q_DECL_OVERRIDE { return parent()->isQtQuickNode(); } - virtual QString qmlTypeName() const Q_DECL_OVERRIDE { return parent()->qmlTypeName(); } - virtual QString logicalModuleName() const Q_DECL_OVERRIDE { - return parent()->logicalModuleName(); - } - virtual QString logicalModuleVersion() const Q_DECL_OVERRIDE { - return parent()->logicalModuleVersion(); - } - virtual QString logicalModuleIdentifier() const Q_DECL_OVERRIDE { - return parent()->logicalModuleIdentifier(); - } - virtual QString idNumber() Q_DECL_OVERRIDE; - virtual bool isQmlPropertyGroup() const Q_DECL_OVERRIDE { return genus() == Node::QML; } - virtual bool isJsPropertyGroup() const Q_DECL_OVERRIDE { return genus() == Node::JS; } - virtual QString element() const Q_DECL_OVERRIDE { return parent()->name(); } - - private: - int idNumber_; -}; - -class QmlPropertyNode : public LeafNode -{ - Q_DECLARE_TR_FUNCTIONS(QDoc::QmlPropertyNode) - -public: - QmlPropertyNode(Aggregate *parent, - const QString& name, - const QString& type, - bool attached); - virtual ~QmlPropertyNode() { } - - virtual void setDataType(const QString& dataType) Q_DECL_OVERRIDE { type_ = dataType; } - void setStored(bool stored) { stored_ = toFlagValue(stored); } - void setDesignable(bool designable) { designable_ = toFlagValue(designable); } - virtual void setReadOnly(bool ro) Q_DECL_OVERRIDE { readOnly_ = toFlagValue(ro); } - void setDefault() { isdefault_ = true; } - - const QString &dataType() const { return type_; } - QString qualifiedDataType() const { return type_; } - bool isReadOnlySet() const { return (readOnly_ != FlagValueDefault); } - bool isStored() const { return fromFlagValue(stored_,true); } - bool isDesignable() const { return fromFlagValue(designable_,false); } - bool isWritable(); - virtual bool isQmlProperty() const Q_DECL_OVERRIDE { return genus() == QML; } - virtual bool isJsProperty() const Q_DECL_OVERRIDE { return genus() == JS; } - virtual bool isDefault() const Q_DECL_OVERRIDE { return isdefault_; } - virtual bool isReadOnly() const Q_DECL_OVERRIDE { return fromFlagValue(readOnly_,false); } - virtual bool isAlias() const Q_DECL_OVERRIDE { return isAlias_; } - virtual bool isAttached() const Q_DECL_OVERRIDE { return attached_; } - virtual bool isQtQuickNode() const Q_DECL_OVERRIDE { return parent()->isQtQuickNode(); } - virtual QString qmlTypeName() const Q_DECL_OVERRIDE { return parent()->qmlTypeName(); } - virtual QString logicalModuleName() const Q_DECL_OVERRIDE { - return parent()->logicalModuleName(); - } - virtual QString logicalModuleVersion() const Q_DECL_OVERRIDE { - return parent()->logicalModuleVersion(); - } - virtual QString logicalModuleIdentifier() const Q_DECL_OVERRIDE { - return parent()->logicalModuleIdentifier(); - } - virtual QString element() const Q_DECL_OVERRIDE; - - private: - PropertyNode* findCorrespondingCppProperty(); - -private: - QString type_; - FlagValue stored_; - FlagValue designable_; - bool isAlias_; - bool isdefault_; - bool attached_; - FlagValue readOnly_; -}; - -class EnumItem -{ -public: - EnumItem() { } - EnumItem(const QString& name, const QString& value) - : name_(name), value_(value) { } - - const QString& name() const { return name_; } - const QString& value() const { return value_; } - -private: - QString name_; - QString value_; -}; - -class EnumNode : public LeafNode -{ -public: - EnumNode(Aggregate* parent, const QString& name); - virtual ~EnumNode() { } - - void addItem(const EnumItem& item); - void setFlagsType(TypedefNode* typedeff); - bool hasItem(const QString &name) const { return names_.contains(name); } - virtual bool isEnumType() const Q_DECL_OVERRIDE { return true; } - - const QList<EnumItem>& items() const { return items_; } - Access itemAccess(const QString& name) const; - const TypedefNode* flagsType() const { return flagsType_; } - QString itemValue(const QString &name) const; - -private: - QList<EnumItem> items_; - QSet<QString> names_; - const TypedefNode* flagsType_; -}; - -class TypedefNode : public LeafNode -{ -public: - TypedefNode(Aggregate* parent, const QString& name); - virtual ~TypedefNode() { } - - const EnumNode* associatedEnum() const { return associatedEnum_; } - -private: - void setAssociatedEnum(const EnumNode* t); - - friend class EnumNode; - - const EnumNode* associatedEnum_; -}; - -inline void EnumNode::setFlagsType(TypedefNode* t) -{ - flagsType_ = t; - t->setAssociatedEnum(this); -} - -class Parameter -{ -public: - Parameter() {} - Parameter(const QString& dataType, - const QString& rightType = QString(), - const QString& name = QString(), - const QString& defaultValue = QString()); - Parameter(const Parameter& p); - - Parameter& operator=(const Parameter& p); - - void setName(const QString& name) { name_ = name; } - - bool hasType() const { return dataType_.length() + rightType_.length() > 0; } - const QString& dataType() const { return dataType_; } - const QString& rightType() const { return rightType_; } - const QString& name() const { return name_; } - const QString& defaultValue() const { return defaultValue_; } - - QString reconstruct(bool value = false) const; - - public: - QString dataType_; - QString rightType_; // mws says remove this 04/08/2015 - QString name_; - QString defaultValue_; -}; - -//friend class QTypeInfo<Parameter>; -//Q_DECLARE_TYPEINFO(Parameter, Q_MOVABLE_TYPE); - -class FunctionNode : public LeafNode -{ -public: - enum Metaness { - Plain, - Signal, - Slot, - Ctor, - Dtor, - MacroWithParams, - MacroWithoutParams, - Native }; - enum Virtualness { NonVirtual, NormalVirtual, PureVirtual }; - - FunctionNode(Aggregate* parent, const QString &name); - FunctionNode(NodeType type, Aggregate* parent, const QString &name, bool attached); - virtual ~FunctionNode() { } - - void setReturnType(const QString& t) { returnType_ = t; } - void setParentPath(const QStringList& p) { parentPath_ = p; } - void setMetaness(Metaness t) { metaness_ = t; } - void setVirtualness(Virtualness v); - void setConst(bool b) { const_ = b; } - void setStatic(bool b) { static_ = b; } - unsigned char overloadNumber() const { return overloadNumber_; } - void setOverloadFlag(bool b) { overload_ = b; } - void setOverloadNumber(unsigned char n) { overloadNumber_ = n; } - void setReimplemented(bool b); - void addParameter(const Parameter& parameter); - inline void setParameters(const QVector<Parameter>& parameters); - void borrowParameterNames(const FunctionNode* source); - void setReimplementedFrom(FunctionNode* from); - - const QString& returnType() const { return returnType_; } - Metaness metaness() const { return metaness_; } - bool isMacro() const { - return metaness_ == MacroWithParams || metaness_ == MacroWithoutParams; - } - Virtualness virtualness() const { return virtualness_; } - bool isConst() const { return const_; } - bool isStatic() const { return static_; } - bool isOverload() const { return overload_; } - bool isReimplemented() const Q_DECL_OVERRIDE { return reimplemented_; } - bool isFunction() const Q_DECL_OVERRIDE { return true; } - virtual bool isQmlSignal() const Q_DECL_OVERRIDE { - return (type() == Node::QmlSignal) && (genus() == Node::QML); - } - virtual bool isJsSignal() const Q_DECL_OVERRIDE { - return (type() == Node::QmlSignal) && (genus() == Node::JS); - } - virtual bool isQmlSignalHandler() const Q_DECL_OVERRIDE { - return (type() == Node::QmlSignalHandler) && (genus() == Node::QML); - } - virtual bool isJsSignalHandler() const Q_DECL_OVERRIDE { - return (type() == Node::QmlSignalHandler) && (genus() == Node::JS); - } - virtual bool isQmlMethod() const Q_DECL_OVERRIDE { - return (type() == Node::QmlMethod) && (genus() == Node::QML); - } - virtual bool isJsMethod() const Q_DECL_OVERRIDE { - return (type() == Node::QmlMethod) && (genus() == Node::JS); - } - const QVector<Parameter>& parameters() const { return parameters_; } - void clearParams() { parameters_.clear(); } - QStringList parameterNames() const; - QString rawParameters(bool names = false, bool values = false) const; - const FunctionNode* reimplementedFrom() const { return reimplementedFrom_; } - const QList<FunctionNode*> &reimplementedBy() const { return reimplementedBy_; } - const PropNodeList& associatedProperties() const { return associatedProperties_; } - const QStringList& parentPath() const { return parentPath_; } - bool hasAssociatedProperties() const { return !associatedProperties_.isEmpty(); } - bool hasOneAssociatedProperty() const { return (associatedProperties_.size() == 1); } - PropertyNode* firstAssociatedProperty() const { return associatedProperties_[0]; } - bool hasActiveAssociatedProperty() const; - - QStringList reconstructParameters(bool values = false) const; - QString signature(bool values = false) const; - virtual QString element() const Q_DECL_OVERRIDE { return parent()->name(); } - virtual bool isAttached() const Q_DECL_OVERRIDE { return attached_; } - virtual bool isQtQuickNode() const Q_DECL_OVERRIDE { return parent()->isQtQuickNode(); } - virtual QString qmlTypeName() const Q_DECL_OVERRIDE { return parent()->qmlTypeName(); } - virtual QString logicalModuleName() const Q_DECL_OVERRIDE { - return parent()->logicalModuleName(); - } - virtual QString logicalModuleVersion() const Q_DECL_OVERRIDE { - return parent()->logicalModuleVersion(); - } - virtual QString logicalModuleIdentifier() const Q_DECL_OVERRIDE { - return parent()->logicalModuleIdentifier(); - } - bool isPrivateSignal() const { return privateSignal_; } - void setPrivateSignal() { privateSignal_ = true; } - - void debug() const; - -private: - void addAssociatedProperty(PropertyNode* property); - - friend class Aggregate; - friend class PropertyNode; - - QString returnType_; - QStringList parentPath_; - Metaness metaness_; - Virtualness virtualness_; - bool const_ : 1; - bool static_ : 1; - bool reimplemented_: 1; - bool attached_: 1; - bool privateSignal_: 1; - bool overload_ : 1; - unsigned char overloadNumber_; - QVector<Parameter> parameters_; - const FunctionNode* reimplementedFrom_; - PropNodeList associatedProperties_; - QList<FunctionNode*> reimplementedBy_; -}; - -class PropertyNode : public LeafNode -{ -public: - enum FunctionRole { Getter, Setter, Resetter, Notifier }; - enum { NumFunctionRoles = Notifier + 1 }; - - PropertyNode(Aggregate* parent, const QString& name); - virtual ~PropertyNode() { } - - virtual void setDataType(const QString& dataType) Q_DECL_OVERRIDE { type_ = dataType; } - virtual bool isProperty() const Q_DECL_OVERRIDE { return true; } - void addFunction(FunctionNode* function, FunctionRole role); - void addSignal(FunctionNode* function, FunctionRole role); - void setStored(bool stored) { stored_ = toFlagValue(stored); } - void setDesignable(bool designable) { designable_ = toFlagValue(designable); } - void setScriptable(bool scriptable) { scriptable_ = toFlagValue(scriptable); } - void setWritable(bool writable) { writable_ = toFlagValue(writable); } - void setUser(bool user) { user_ = toFlagValue(user); } - void setOverriddenFrom(const PropertyNode* baseProperty); - void setRuntimeDesFunc(const QString& rdf) { runtimeDesFunc_ = rdf; } - void setRuntimeScrFunc(const QString& scrf) { runtimeScrFunc_ = scrf; } - void setConstant() { const_ = true; } - void setFinal() { final_ = true; } - void setRevision(int revision) { revision_ = revision; } - - const QString &dataType() const { return type_; } - QString qualifiedDataType() const; - NodeList functions() const; - NodeList functions(FunctionRole role) const { return functions_[(int)role]; } - NodeList getters() const { return functions(Getter); } - NodeList setters() const { return functions(Setter); } - NodeList resetters() const { return functions(Resetter); } - NodeList notifiers() const { return functions(Notifier); } - FunctionRole role(const FunctionNode* fn) const; - bool isStored() const { return fromFlagValue(stored_, storedDefault()); } - bool isDesignable() const { return fromFlagValue(designable_, designableDefault()); } - bool isScriptable() const { return fromFlagValue(scriptable_, scriptableDefault()); } - const QString& runtimeDesignabilityFunction() const { return runtimeDesFunc_; } - const QString& runtimeScriptabilityFunction() const { return runtimeScrFunc_; } - bool isWritable() const { return fromFlagValue(writable_, writableDefault()); } - bool isUser() const { return fromFlagValue(user_, userDefault()); } - bool isConstant() const { return const_; } - bool isFinal() const { return final_; } - const PropertyNode* overriddenFrom() const { return overrides_; } - - bool storedDefault() const { return true; } - bool userDefault() const { return false; } - bool designableDefault() const { return !setters().isEmpty(); } - bool scriptableDefault() const { return true; } - bool writableDefault() const { return !setters().isEmpty(); } - -private: - QString type_; - QString runtimeDesFunc_; - QString runtimeScrFunc_; - NodeList functions_[NumFunctionRoles]; - FlagValue stored_; - FlagValue designable_; - FlagValue scriptable_; - FlagValue writable_; - FlagValue user_; - bool const_; - bool final_; - int revision_; - const PropertyNode* overrides_; -}; - -inline void FunctionNode::setParameters(const QVector<Parameter> &p) -{ - parameters_ = p; -} - -inline void PropertyNode::addFunction(FunctionNode* function, FunctionRole role) -{ - functions_[(int)role].append(function); - function->addAssociatedProperty(this); -} - -inline void PropertyNode::addSignal(FunctionNode* function, FunctionRole role) -{ - functions_[(int)role].append(function); - function->addAssociatedProperty(this); -} - -inline NodeList PropertyNode::functions() const -{ - NodeList list; - for (int i = 0; i < NumFunctionRoles; ++i) - list += functions_[i]; - return list; -} - -class VariableNode : public LeafNode -{ -public: - VariableNode(Aggregate* parent, const QString &name); - virtual ~VariableNode() { } - - void setLeftType(const QString &leftType) { lrftType_ = leftType; } - void setRightType(const QString &rightType) { rightType_ = rightType; } - void setStatic(bool b) { static_ = b; } - - const QString &leftType() const { return lrftType_; } - const QString &rightType() const { return rightType_; } - QString dataType() const { return lrftType_ + rightType_; } - bool isStatic() const { return static_; } - -private: - QString lrftType_; - QString rightType_; - bool static_; -}; - -inline VariableNode::VariableNode(Aggregate* parent, const QString &name) - : LeafNode(Variable, parent, name), static_(false) -{ - setGenus(Node::CPP); -} - -class DitaMapNode : public DocumentNode -{ -public: - DitaMapNode(Aggregate* parent, const QString& name) - : DocumentNode(parent, name, Node::Page, Node::DitaMapPage) { } - virtual ~DitaMapNode() { } - - const DitaRefList& map() const { return doc().ditamap(); } -}; - -class CollectionNode : public Aggregate -{ - public: - CollectionNode(NodeType type, - Aggregate* parent, - const QString& name, - Genus genus) - : Aggregate(type, parent, name), seen_(false), noAutoList_(false) - { - setPageType(Node::OverviewPage); - setGenus(genus); - } - virtual ~CollectionNode() { } - - virtual bool isCollectionNode() const Q_DECL_OVERRIDE { return true; } - virtual bool isGroup() const Q_DECL_OVERRIDE { return genus() == Node::DOC; } - virtual bool isModule() const Q_DECL_OVERRIDE { return genus() == Node::CPP; } - virtual bool isQmlModule() const Q_DECL_OVERRIDE { return genus() == Node::QML; } - virtual bool isJsModule() const Q_DECL_OVERRIDE { return genus() == Node::JS; } - virtual QString qtVariable() const Q_DECL_OVERRIDE { return qtVariable_; } - virtual void setQtVariable(const QString& v) Q_DECL_OVERRIDE { qtVariable_ = v; } - virtual void addMember(Node* node) Q_DECL_OVERRIDE; - virtual bool hasMembers() const Q_DECL_OVERRIDE; - virtual bool hasNamespaces() const Q_DECL_OVERRIDE; - virtual bool hasClasses() const Q_DECL_OVERRIDE; - virtual void getMemberNamespaces(NodeMap& out) Q_DECL_OVERRIDE; - virtual void getMemberClasses(NodeMap& out) const Q_DECL_OVERRIDE; - virtual bool wasSeen() const Q_DECL_OVERRIDE { return seen_; } - virtual QString title() const Q_DECL_OVERRIDE { return title_; } - virtual QString subTitle() const Q_DECL_OVERRIDE { return subtitle_; } - virtual QString fullTitle() const Q_DECL_OVERRIDE { return title_; } - virtual QString nameForLists() const Q_DECL_OVERRIDE { return title_; } - virtual void setTitle(const QString &title) Q_DECL_OVERRIDE; - virtual void setSubTitle(const QString &subTitle) Q_DECL_OVERRIDE { subtitle_ = subTitle; } - - virtual QString logicalModuleName() const Q_DECL_OVERRIDE { return logicalModuleName_; } - virtual QString logicalModuleVersion() const Q_DECL_OVERRIDE { - return logicalModuleVersionMajor_ + QLatin1Char('.') + logicalModuleVersionMinor_; - } - virtual QString logicalModuleIdentifier() const Q_DECL_OVERRIDE { - return logicalModuleName_ + logicalModuleVersionMajor_; - } - virtual void setLogicalModuleInfo(const QString& arg) Q_DECL_OVERRIDE; - virtual void setLogicalModuleInfo(const QStringList& info) Q_DECL_OVERRIDE; - - const NodeList& members() const { return members_; } - void printMembers(const QString& title); - - void markSeen() { seen_ = true; } - void markNotSeen() { seen_ = false; } - bool noAutoList() const { return noAutoList_; } - virtual void setNoAutoList(bool b) Q_DECL_OVERRIDE { noAutoList_ = b; } - - private: - bool seen_; - bool noAutoList_; - QString title_; - QString subtitle_; - NodeList members_; - QString logicalModuleName_; - QString logicalModuleVersionMajor_; - QString logicalModuleVersionMinor_; - QString qtVariable_; -}; - -QT_END_NAMESPACE - -#endif |