9#include <QtCore/qhash.h>
10#include <QtCore/qstringlist.h>
20 void quoteFromFile(
const QString &userFriendlyFileName,
const QString &plainCode,
21 const QString &markedCode);
30 QString getLine(
int unindent = 0);
31 void failedAtEnd(
const Location &docLocation,
const QString &command);
32 bool match(
const Location &docLocation,
const QString &pattern,
const QString &line);
33 [[
nodiscard]] QString commentForCode()
const;
34 QString removeSpecialLines(
const QString &line,
const QString &comment,
int unindent = 0);
37 QStringList m_plainLines {};
38 QStringList m_markedLines {};
40 static QHash<QString, QString> s_commentHash;
#define ATOM_FORMATTING_TELETYPE
#define ATOM_FORMATTING_BOLD
#define ATOM_FORMATTING_TRADEMARK
#define ATOM_FORMATTING_ITALIC
#define ATOM_FORMATTING_LINK
const NodeList & childNodes() const
Returns a const reference to the child list.
The Atom class is the fundamental unit for representing documents internally.
AtomType type() const
Return the type of this atom.
AtomType
\value AnnotatedList \value AutoLink \value BaseName \value BriefLeft \value BriefRight \value C \val...
const Atom * next() const
Return the next atom in the atom list.
The ClassNode represents a C++ class.
PropertyNode * findPropertyNode(const QString &name)
Search the child list to find the property node with the specified name.
QList< RelatedClass > & derivedClasses()
void addResolvedBaseClass(Access access, ClassNode *node)
Adds the base class node to this class's list of base classes.
QList< RelatedClass > & baseClasses()
PropertyNode * findOverriddenProperty(const FunctionNode *fn)
fn is an overriding function in this class or in a class derived from this class.
FunctionNode * findOverriddenFunction(const FunctionNode *fn)
fn is an overriding function in this class or in a class derived from this class.
const QList< RelatedClass > & baseClasses() const
bool isAbstract() const override
Returns true if the ClassNode or QmlTypeNode is marked abstract.
QList< RelatedClass > & ignoredBaseClasses()
bool isRelatableType() const override
Returns true if this node is something you can relate things to with the relates command.
const QSet< QmlTypeNode * > & qmlNativeTypes()
void setAbstract(bool b) override
If this node is a ClassNode or a QmlTypeNode, the node's abstract flag data member is set to b.
bool docMustBeGenerated() const override
Returns true if the class or struct represented by this class node must be documented.
bool isFirstClassAggregate() const override
Returns true if this Node is an Aggregate but not a ProxyNode.
void removePrivateAndInternalBases()
Remove private and internal bases classes from this class's list of base classes.
bool isWrapper() const override
Returns true if the node is a class node or a QML type node that is marked as being a wrapper class o...
void insertQmlNativeType(QmlTypeNode *qmlTypeNode)
bool isClassNode() const override
Returns true if this is an instance of ClassNode.
ClassNode(NodeType type, Aggregate *parent, const QString &name)
void resolvePropertyOverriddenFromPtrs(PropertyNode *pn)
void addDerivedClass(Access access, ClassNode *node)
Adds the derived class node to this class's list of derived classes.
void setWrapper() override
If this node is a ClassNode or a QmlTypeNode, the node's wrapper flag data member is set to true.
void addUnresolvedBaseClass(Access access, const QStringList &path)
Add an unresolved base class to this class node's list of base classes.
A class for holding the members of a collection of doc pages.
QString logicalModuleVersion() const override
Returns the logical module version.
void setQtVariable(const QString &v) override
If this node is a CollectionNode, its QT variable is set to v.
NodeMap getMembers(F &&predicate) const
bool hasClasses() const override
Returns true if this collection node contains at least one class node.
QString cmakeTargetItem() const override
const NodeList & members() const
NodeMap getMembers(Node::NodeType type) const
Returns a map containing this collection node's member nodes with a specified node type.
void setCMakeTargetItem(const QString &targetItem) override
bool hasNamespaces() const override
Returns true if this collection node contains at least one namespace node.
void setCMakePackage(const QString &package) override
bool wasSeen() const override
Returns the seen flag data member of this node if it is a NamespaceNode or a CollectionNode.
CollectionNode(NodeType type, Aggregate *parent, const QString &name)
QString qtVariable() const override
If this node is a CollectionNode, its QT variable is returned.
bool isCollectionNode() const override
Returns true if this is an instance of CollectionNode.
void setState(const QString &state)
QString logicalModuleName() const override
If this is a CollectionNode, this function returns the logical module name.
QString fullTitle() const override
Returns a string that can be used as the full title for the documentation of this node.
QString cmakeComponent() const override
void setLogicalModuleInfo(const QStringList &info) override
This function accepts the logical module info as a string list.
QString state() const
Sets or gets a description of this module's state.
QString logicalModuleIdentifier() const override
If this is a CollectionNode, this function returns the logical module identifier.
void addMember(Node *node) override
Appends node to the collection node's member list, if and only if it isn't already in the member list...
void setCMakeComponent(const QString &component) override
QString cmakePackage() const override
The Config class contains the configuration variables for controlling how qdoc produces documentation...
const Location & location() const
Returns the starting location of a qdoc comment.
const Text & body() const
QStringMultiMap * metaTagMap() const
EnumNode(Aggregate *parent, const QString &name, bool isScoped=false)
bool hasItem(const QString &name) const
Node * clone(Aggregate *parent) override
Clone this node on the heap and make the clone a child of parent.
void setFlagsType(TypedefNode *typedefNode)
void addItem(const EnumItem &item)
Add item to the enum type's item list.
const QList< EnumItem > & items() const
QString itemValue(const QString &name) const
Returns the enum value associated with the enum name.
void setSince(const QString &value, const QString &since)
Sets since information to a named enum value, if it exists in this enum.
const TypedefNode * flagsType() const
Access itemAccess(const QString &name) const
Returns the access level of the enumeration item named name.
Encapsulate the logic that QDoc uses to find files whose path is provided by the user and that are re...
This node is used to represent any kind of function being documented.
signed short overloadNumber() const
Returns the overload number for this function.
bool isPrivateSignal() const
const Parameters & parameters() const
bool isDeprecated() const override
\reimp
bool hasOverloads() const
Returns true if this function has overloads.
bool isMarkedReimp() const override
Returns true if the FunctionNode is marked as a reimplemented function.
bool isIgnored() const
In some cases, it is ok for a public function to be not documented.
bool hasAssociatedProperties() const
Metaness metaness() const
void signatureList(const NodeList &nodes, const Node *relative, CodeMarker *marker)
Generate a bullet list of function signatures.
void appendSignature(Text &text, const Node *node)
Append the signature for the function named in node to text, so that is a link to the documentation f...
virtual void generateCollectionNode(CollectionNode *, CodeMarker *)
virtual void generateProxyPage(Aggregate *, CodeMarker *)
virtual void generateCppReferencePage(Aggregate *, CodeMarker *)
bool generateComparisonCategory(const Node *node, CodeMarker *marker=nullptr)
QMap< QString, QString > & formattingRightMap()
virtual void generateAddendum(const Node *node, Addendum type, CodeMarker *marker, bool generateNote)
Generates an addendum note of type type for node, using marker as the code marker.
virtual QString typeString(const Node *node)
static bool hasExceptions(const Node *node, NodeList &reentrant, NodeList &threadsafe, NodeList &nonreentrant)
void generateEnumValuesForQmlProperty(const Node *node, CodeMarker *marker)
FileResolver & file_resolver
virtual void initializeFormat()
Reads format-specific variables from config, sets output (sub)directories, creates them on the filesy...
virtual void generateDocumentation(Node *node)
Recursive writing of HTML files from the root node.
const Atom * generateAtomList(const Atom *atom, const Node *relative, CodeMarker *marker, bool generate, int &numGeneratedAtoms)
void generateStatus(const Node *node, CodeMarker *marker)
virtual void generateAlsoList(const Node *node, CodeMarker *marker)
void appendFullName(Text &text, const Node *apparentNode, const Node *relative, const Node *actualNode=nullptr)
virtual void generateFileList(const ExampleNode *en, CodeMarker *marker, bool images)
This function is called when the documentation for an example is being formatted.
void generateThreadSafeness(const Node *node, CodeMarker *marker)
Generates text that explains how threadsafe and/or reentrant node is.
Generator(FileResolver &file_resolver)
Constructs the generator base class.
bool generateComparisonList(const Node *node)
Generates a list of types that compare to node with the comparison category that applies for the rela...
static bool useOutputSubdirs()
void generateNoexceptNote(const Node *node, CodeMarker *marker)
void unknownAtom(const Atom *atom)
virtual bool generateText(const Text &text, const Node *relative, CodeMarker *marker)
Generate the documentation for relative.
virtual void terminateGenerator()
static bool matchAhead(const Atom *atom, Atom::AtomType expectedAtomType)
QString fullDocumentLocation(const Node *node)
Returns the full document location.
void addImageToCopy(const ExampleNode *en, const ResolvedFile &resolved_file)
virtual void generateDocs()
Traverses the database recursively to generate all the documentation.
void generateOverloadedSignal(const Node *node, CodeMarker *marker)
If the node is an overloaded signal, add a node with an example on how to connect to it.
static bool appendTrademark(const Atom *atom)
Returns true if a trademark symbol should be appended to the output as determined by atom.
virtual int skipAtoms(const Atom *atom, Atom::AtomType type) const
bool m_threeColumnEnumValueTable
virtual void generateQmlTypePage(QmlTypeNode *, CodeMarker *)
int appendSortedQmlNames(Text &text, const Node *base, const QStringList &knownTypes, const NodeList &subs)
virtual void generateBody(const Node *node, CodeMarker *marker)
Generate the body of the documentation from the qdoc comment found with the entity represented by the...
virtual void generatePageNode(PageNode *, CodeMarker *)
virtual ~Generator()
Destroys the generator after removing it from the list of output generators.
void generateSince(const Node *node, CodeMarker *marker)
QMap< QString, QString > & formattingLeftMap()
int appendSortedNames(Text &text, const ClassNode *classe, const QList< RelatedClass > &classes)
void endSubPage()
Flush the text stream associated with the subpage, and then pop it off the text stream stack and dele...
virtual void generateAddendum(const Node *node, Addendum type, CodeMarker *marker)
static void resetUseOutputSubdirs()
virtual void generateGenericCollectionPage(CollectionNode *, CodeMarker *)
virtual QString fileBase(const Node *node) const
virtual void initializeGenerator()
Updates the generator's m_showInternal from the Config.
void initializeTextOutput()
Resets the variables used during text output.
void generateRequiredLinks(const Node *node, CodeMarker *marker)
Generates either a link to the project folder for example node, or a list of links files/images if 'u...
static Generator * currentGenerator()
The Location class provides a way to mark a location in a file.
Location()
Constructs an empty location.
bool isGenericCollection() const
Returns true if the node type is Collection.
bool isExternalPage() const
Returns true if the node type is ExternalPage.
const Doc & doc() const
Returns a reference to the node's Doc data member.
bool isQmlNode() const
Returns true if this node's Genus value is QML.
virtual bool docMustBeGenerated() const
This function is called to perform a test to decide if the node must have documentation generated.
virtual bool isWrapper() const
Returns true if the node is a class node or a QML type node that is marked as being a wrapper class o...
bool isPrivate() const
Returns true if this node's access is Private.
NodeType
An unsigned char value that identifies an object as a particular subclass of Node.
bool isNamespace() const
Returns true if the node type is Namespace.
ComparisonCategory comparisonCategory() const
bool hasFileNameBase() const
Returns true if the node's file name base has been set.
bool isFunction(Genus g=DontCare) const
Returns true if this is a FunctionNode and its Genus is set to g.
bool isQmlType() const
Returns true if the node type is QmlType or QmlValueType.
bool isSharedCommentNode() const
Returns true if the node type is SharedComment.
virtual bool isInternal() const
Returns true if the node's status is Internal, or if its parent is a class with Internal status.
bool isHeader() const
Returns true if the node type is HeaderFile.
virtual bool isPageNode() const
Returns true if this node represents something that generates a documentation page.
virtual bool isMacro() const
returns true if either FunctionNode::isMacroWithParams() or FunctionNode::isMacroWithoutParams() retu...
bool isEnumType() const
Returns true if the node type is Enum.
virtual bool isTextPageNode() const
Returns true if the node is a PageNode but not an Aggregate.
virtual bool isAttached() const
Returns true if the QML property or QML method node is marked as attached.
Aggregate * parent() const
Returns the node's parent pointer.
static bool fromFlagValue(FlagValue fv, bool defaultValue)
Converts the enum fv back to a boolean value.
virtual bool isDeprecated() const
Returns true if this node's status is Deprecated.
virtual bool isAggregate() const
Returns true if this node is an aggregate, which means it inherits Aggregate and can therefore have c...
NodeType nodeType() const
Returns this node's type.
FlagValue
A value used in PropertyNode and QmlPropertyNode that can be -1, 0, or +1.
static bool nodeNameLessThan(const Node *first, const Node *second)
Returns true if the node n1 is less than node n2.
const Location & location() const
If this node's definition location is empty, this function returns this node's declaration location.
bool isProxyNode() const
Returns true if the node type is Proxy.
Access access() const
Returns the node's Access setting, which can be Public, Protected, or Private.
ThreadSafeness threadSafeness() const
Returns the thread safeness value for whatever this node represents.
virtual bool isMarkedReimp() const
Returns true if the FunctionNode is marked as a reimplemented function.
bool isProperty() const
Returns true if the node type is Property.
bool isModule() const
Returns true if the node type is Module.
virtual bool isPropertyGroup() const
Returns true if the node is a SharedCommentNode for documenting multiple C++ properties or multiple Q...
Genus genus() const
Returns this node's Genus.
ThreadSafeness
An unsigned char that specifies the degree of thread-safeness of the element.
bool isSharingComment() const
This function returns true if the node is sharing a comment with other nodes.
bool hasDoc() const
Returns true if this node is documented, or it represents a documented node read from the index ('had...
static FlagValue toFlagValue(bool b)
Converts the boolean value b to an enum representation of the boolean type, which includes an enum va...
LinkType
An unsigned char value that probably should be moved out of the Node base class.
virtual bool isClassNode() const
Returns true if this is an instance of ClassNode.
virtual bool isCollectionNode() const
Returns true if this is an instance of CollectionNode.
bool isQmlModule() const
Returns true if the node type is QmlModule.
bool isExample() const
Returns true if the node type is Example.
bool isIndexNode() const
Returns true if this node was created from something in an index file.
Status status() const
Returns the node's status value.
bool isQmlProperty() const
Returns true if the node type is QmlProperty.
QString numberString() const
OpenedList(const Location &location, const QString &hint)
QString styleString() const
OpenedList(ListStyle style)
A PageNode is a Node that generates a documentation page.
bool noAutoList() const
Returns the value of the no auto-list flag.
This class describes one instance of using the Q_PROPERTY macro.
PropertyType propertyType() const
This class provides exclusive access to the qdoc database, which consists of a forrest of trees and a...
static QDocDatabase * qdocDB()
Creates the singleton.
NamespaceNode * primaryTreeRoot()
Returns a pointer to the root node of the primary tree.
const CollectionNode * getModuleNode(const Node *relative)
Returns the collection node representing the module that relative node belongs to,...
void mergeCollections(CollectionNode *c)
Finds all the collection nodes with the same name and type as c and merges their members into the mem...
const QString & dataType() const
const EnumNode * enumNode() const
Returns the node representing the C++ enumeration associated with this property, or \nullptr.
const QString & enumPrefix() const
Returns the prefix to use for documentated enumerators from the associated C++ enum for this property...
bool isDefault() const override
Returns true if the QML property node is marked as default.
QString qmlTypeName() const override
If this is a QmlPropertyNode or a FunctionNode representing a QML method, this function returns the q...
QString element() const override
If this node is a QmlPropertyNode or a FunctionNode, this function returns the name of the parent nod...
const QString & defaultValue() const
void markReadOnly(bool flag) override
If this node is a QmlPropertyNode, then the property's read-only flag is set to flag.
QString logicalModuleIdentifier() const override
If this is a CollectionNode, this function returns the logical module identifier.
void markDefault() override
If this node is a QmlPropertyNode, it is marked as the default property.
QmlPropertyNode(Aggregate *parent, const QString &name, QString type, bool attached)
Constructor for the QML property node.
void setDefaultValue(const QString &value)
bool isReadOnly() const
Returns true if this QML property node is marked as a read-only property.
bool isRequired()
Returns true if this QML property is marked with \required or the corresponding C++ property uses the...
QString logicalModuleName() const override
If this is a CollectionNode, this function returns the logical module name.
void setStored(bool stored)
bool setEnumNode(const QString &path, const QString ®isteredQmlName)
Locates the node specified by path and sets it as the C++ enumeration associated with this property.
void setDataType(const QString &dataType) override
If this node is a PropertyNode or a QmlPropertyNode, its data type data member is set to dataType.
bool isReadOnly()
Returns true if this QML property or attached property is read-only.
bool isAlias() const override
Returns true if this QML property is marked as an alias.
QString logicalModuleVersion() const override
If this is a CollectionNode, this function returns the logical module version number.
bool isAttached() const override
Returns true if the QML property or QML method node is marked as attached.
QString quoteTo(const Location &docLocation, const QString &command, const QString &pattern)
QString quoteSnippet(const Location &docLocation, const QString &identifier)
QString quoteUntil(const Location &docLocation, const QString &command, const QString &pattern)
void quoteFromFile(const QString &userFriendlyFileName, const QString &plainCode, const QString &markedCode)
static QStringList splitLines(const QString &line)
QString quoteLine(const Location &docLocation, const QString &command, const QString &pattern)
const Atom * firstAtom() const
const QString & aliasedType() const
Node * clone(Aggregate *parent) override
Clone this node on the heap and make the clone a child of parent.
TypeAliasNode(Aggregate *parent, const QString &name, const QString &aliasedType)
const EnumNode * associatedEnum() const
TypedefNode(Aggregate *parent, const QString &name, NodeType type=Typedef)
bool hasAssociatedEnum() const
Node * clone(Aggregate *parent) override
Clone this node on the heap and make the clone a child of parent.
#define CONFIG_REDIRECTDOCUMENTATIONTODEVNULL
#define CONFIG_AUTOLINKERRORS
#define CONFIG_EXTRAIMAGES
#define CONFIG_OUTPUTSUFFIXES
#define CONFIG_OUTPUTPREFIXES
#define CONFIG_NOLINKERRORS
#define CONFIG_EXAMPLESINSTALLPATH
#define CONFIG_PRODUCTNAME
#define CONFIG_QUOTINGINFORMATION
#define CONFIG_STYLESHEETS
#define CONFIG_FORMATTING
QMultiMap< QString, QString > QStringMultiMap
QT_BEGIN_NAMESPACE int editDistance(const QString &s, const QString &t)
QString nearestName(const QString &actual, const QSet< QString > &candidates)
Combined button and popup list for selecting options.
QMap< QString, Node * > NodeMap
Q_DECLARE_TYPEINFO(OpenedList, Q_RELOCATABLE_TYPE)
Represents a file that is reachable by QDoc based on its current configuration.