summaryrefslogtreecommitdiffstats
path: root/src/qdoc/qdoc/src/qdoc/doc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/doc.h')
-rw-r--r--src/qdoc/qdoc/src/qdoc/doc.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/doc.h b/src/qdoc/qdoc/src/qdoc/doc.h
new file mode 100644
index 000000000..50e88c72f
--- /dev/null
+++ b/src/qdoc/qdoc/src/qdoc/doc.h
@@ -0,0 +1,92 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#ifndef DOC_H
+#define DOC_H
+
+#include "location.h"
+#include "comparisoncategory.h"
+#include "docutilities.h"
+#include "topic.h"
+
+#include "filesystem/fileresolver.h"
+#include "boundaries/filesystem/resolvedfile.h"
+
+#include <QtCore/qmap.h>
+#include <QtCore/qset.h>
+#include <QtCore/qstring.h>
+
+QT_BEGIN_NAMESPACE
+
+class Atom;
+class DocPrivate;
+class Quoter;
+class Text;
+
+typedef std::pair<QString, QString> ArgPair;
+typedef QList<ArgPair> ArgList;
+typedef QMultiMap<QString, QString> QStringMultiMap;
+
+class Doc
+{
+public:
+ // the order is important
+ enum Sections {
+ NoSection = -1,
+ Section1 = 1,
+ Section2 = 2,
+ Section3 = 3,
+ Section4 = 4
+ };
+
+ Doc() = default;
+ Doc(const Location &start_loc, const Location &end_loc, const QString &source,
+ const QSet<QString> &metaCommandSet, const QSet<QString> &topics);
+ Doc(const Doc &doc);
+ ~Doc();
+
+ Doc &operator=(const Doc &doc);
+
+ [[nodiscard]] const Location &location() const;
+ [[nodiscard]] const Location &startLocation() const;
+ [[nodiscard]] bool isEmpty() const;
+ [[nodiscard]] const QString &source() const;
+ [[nodiscard]] const Text &body() const;
+ [[nodiscard]] Text briefText(bool inclusive = false) const;
+ [[nodiscard]] Text trimmedBriefText(const QString &className) const;
+ [[nodiscard]] Text legaleseText() const;
+ [[nodiscard]] QSet<QString> parameterNames() const;
+ [[nodiscard]] QStringList enumItemNames() const;
+ [[nodiscard]] QStringList omitEnumItemNames() const;
+ [[nodiscard]] QSet<QString> metaCommandsUsed() const;
+ [[nodiscard]] TopicList topicsUsed() const;
+ [[nodiscard]] ArgList metaCommandArgs(const QString &metaCommand) const;
+ [[nodiscard]] QList<Text> alsoList() const;
+ [[nodiscard]] bool hasTableOfContents() const;
+ [[nodiscard]] bool hasKeywords() const;
+ [[nodiscard]] bool hasTargets() const;
+ [[nodiscard]] bool isInternal() const;
+ [[nodiscard]] bool isMarkedReimp() const;
+ [[nodiscard]] const QList<Atom *> &tableOfContents() const;
+ [[nodiscard]] const QList<int> &tableOfContentsLevels() const;
+ [[nodiscard]] const QList<Atom *> &keywords() const;
+ [[nodiscard]] const QList<Atom *> &targets() const;
+ [[nodiscard]] QStringMultiMap *metaTagMap() const;
+ [[nodiscard]] QMultiMap<ComparisonCategory, Text> *comparesWithMap() const;
+
+ static void initialize(FileResolver& file_resolver);
+ static void terminate();
+ static void trimCStyleComment(Location &location, QString &str);
+ static void quoteFromFile(const Location &location, Quoter &quoter,
+ ResolvedFile resolved_file);
+
+private:
+ DocPrivate *m_priv { nullptr };
+ static DocUtilities &m_utilities;
+};
+Q_DECLARE_TYPEINFO(Doc, Q_RELOCATABLE_TYPE);
+typedef QList<Doc> DocList;
+
+QT_END_NAMESPACE
+
+#endif