14#include "filesystem/fileresolver.h"
16#include <QtCore/QCoreApplication>
17#include <QtCore/qglobalstatic.h>
18#include <QtCore/qhash.h>
19#include <QtCore/qstack.h>
20#include <QtCore/qstring.h>
31 void parse(
const QString &source,
DocPrivate *docPrivate,
const QSet<QString> &metaCommandSet,
32 const QSet<QString> &possibleTopics);
49 enum class ArgumentParsingOptions {
56 QString detailsUnknownCommand(
const QSet<QString> &metaCommandSet,
const QString &str);
57 void insertTarget(
const QString &target);
58 void insertKeyword(
const QString &keyword);
59 void include(
const QString &fileName,
const QString &identifier,
const QStringList ¶meters);
60 void startFormat(
const QString &format,
int cmd);
61 bool openCommand(
int cmd);
62 bool closeCommand(
int endCmd);
64 void endSection(
int unit,
int endCmd);
66 void appendAtom(
const Atom&);
68 void appendChar(QChar ch);
69 void appendWord(
const QString &word);
70 void appendEscapedIdentifier();
71 void appendToCode(
const QString &code);
72 void appendToCode(
const QString &code,
Atom::
AtomType defaultType,
const QString &language);
77 void leaveValueList();
79 void quoteFromFile(
const QString& filename,
CodeMarker *marker =
nullptr);
80 bool expandMacro(ArgumentParsingOptions options);
81 void expandMacro(
const QString &def,
const QStringList &args);
82 QString expandMacroToString(
const QString &name,
const Macro ¯o);
84 QString getArgument(ArgumentParsingOptions options = ArgumentParsingOptions::Default);
85 QString getBracedArgument(ArgumentParsingOptions options);
86 QString getBracketedArgument();
87 QString getLanguageArgument(
CodeMarker **marker);
88 QStringList getMacroArguments(
const QString &name,
const Macro ¯o);
89 QString getOptionalArgument();
90 QString getRestOfLine();
91 QString getMetaCommandArgument(
const QString &cmdStr);
92 QString getUntilEnd(
int cmd);
93 QString getCode(
int cmd,
CodeMarker *marker,
const QString &argStr = QString());
95 CodeMarker *markerForLanguage(
const QString &language);
97 inline bool isAutoLinkString(
const QString &word);
98 bool isAutoLinkString(
const QString &word, qsizetype &curPos);
100 bool isLeftBraceAhead();
101 bool isLeftBracketAhead(
int maxNewlines = 1);
102 void skipSpacesOnLine();
103 void skipSpacesOrOneEndl();
104 void skipAllSpaces();
105 void skipToNextPreprocessorCommand();
106 static bool isCode(
const Atom *atom);
107 static bool isQuote(
const Atom *atom);
108 static void expandArgumentsInString(QString &str,
const QStringList &args);
109 void cmd_image(
int cmd);
112 QStack<qsizetype> m_openedInputs {};
115 qsizetype m_position {};
116 qsizetype m_backslashPosition {};
117 qsizetype m_endPosition {};
118 qsizetype m_inputLength {};
120 qsizetype m_cachedPosition {};
123 enum ParagraphState { OutsideParagraph, InSingleLineParagraph, InMultiLineParagraph };
124 ParagraphState m_paragraphState {};
125 bool m_inTableHeader {};
126 bool m_inTableRow {};
127 bool m_inTableItem {};
128 bool m_indexStartedParagraph {};
131 QString m_pendingParagraphString {};
135 QMap<QString, Location> m_targetMap {};
136 QMap<
int, QString> m_pendingFormats {};
137 QStack<
int> m_openedCommands {};
138 QStack<OpenedList> m_openedLists {};
140 Atom *m_lastAtom {
nullptr };
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 Config class contains the configuration variables for controlling how qdoc produces documentation...
static QString untabifyEtc(const QString &str)
static QStringList s_allowedLanguages
static QStringList s_ignoreWords
void parse(const QString &source, DocPrivate *docPrivate, const QSet< QString > &metaCommandSet, const QSet< QString > &possibleTopics)
Parse the source string to build a Text data structure in docPrivate.
static QString dedent(int level, const QString &str)
static QString cmdName(int cmd)
static int endCmdFor(int cmd)
static int indentLevel(const QString &str)
static void initialize(const Config &config, FileResolver &file_resolver)
static QString endCmdName(int cmd)
CommandMap m_metaCommandMap
QSet< QString > parameterNames() const
Text legaleseText() const
QList< Text > alsoList() const
const Location & location() const
Returns the starting location of a qdoc comment.
Doc & operator=(const Doc &doc)
Doc(const Location &start_loc, const Location &end_loc, const QString &source, const QSet< QString > &metaCommandSet, const QSet< QString > &topics)
Parse the qdoc comment source.
const QList< Atom * > & tableOfContents() const
const Text & title() const
bool isInternal() const
Returns true if the set of metacommands used in the doc comment contains {internal}...
bool hasTableOfContents() const
static void quoteFromFile(const Location &location, Quoter "er, ResolvedFile resolved_file, CodeMarker *marker=nullptr)
const QList< Atom * > & keywords() const
const Text & body() const
static void initialize(FileResolver &file_resolver)
QStringList omitEnumItemNames() const
const QList< Atom * > & targets() const
QMultiMap< ComparisonCategory, Text > * comparesWithMap() const
const QList< int > & tableOfContentsLevels() const
Text trimmedBriefText(const QString &className) const
ArgList metaCommandArgs(const QString &metaCommand) const
Text briefText(bool inclusive=false) const
const Location & startLocation() const
Returns the starting location of a qdoc comment.
bool isMarkedReimp() const
Returns true if the set of metacommands used in the doc comment contains {reimp}.
void markAutoGenerated()
Marks this documentation as auto-generated by QDoc.
bool isAutoGenerated() const
Returns true if this documentation was auto-generated by QDoc rather than written by an author.
static void terminate()
All the heap allocated variables are deleted.
QList< ArgPair > overloadList() const
Returns the list of arguments passed to the {\overload} command.
TopicList topicsUsed() const
Returns a reference to the list of topic commands used in the current qdoc comment.
QStringMultiMap * metaTagMap() const
QSet< QString > metaCommandsUsed() const
void constructExtra() const
const QString & source() const
QStringList enumItemNames() const
Encapsulate the logic that QDoc uses to find files whose path is provided by the user and that are re...
The Location class provides a way to mark a location in a file.
int columnNo() const
Returns the current column number.
void dump() const
Prints a human-readable version of the contained atoms to stderr.
Text subText(Atom::AtomType left, Atom::AtomType right, const Atom *from=nullptr, bool inclusive=false) const
QMultiMap< QString, QString > QStringMultiMap
Combined button and popup list for selecting options.
QHash_QString_Macro macroHash
QHash_QString_int cmdHash
Simple structure used by the Doc and DocParser classes.
Represents a file that is reachable by QDoc based on its current configuration.