summaryrefslogtreecommitdiffstats
path: root/src/qdoc/qdoc/src/qdoc/codemarker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/codemarker.h')
-rw-r--r--src/qdoc/qdoc/src/qdoc/codemarker.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/codemarker.h b/src/qdoc/qdoc/src/qdoc/codemarker.h
new file mode 100644
index 000000000..af668b650
--- /dev/null
+++ b/src/qdoc/qdoc/src/qdoc/codemarker.h
@@ -0,0 +1,67 @@
+// 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 CODEMARKER_H
+#define CODEMARKER_H
+
+#include "atom.h"
+#include "sections.h"
+
+QT_BEGIN_NAMESPACE
+
+class CodeMarker
+{
+public:
+ CodeMarker();
+ virtual ~CodeMarker();
+
+ virtual void initializeMarker();
+ virtual void terminateMarker();
+ virtual bool recognizeCode(const QString & /*code*/) { return true; }
+ virtual bool recognizeExtension(const QString & /*extension*/) { return true; }
+ virtual bool recognizeLanguage(const QString & /*language*/) { return false; }
+ [[nodiscard]] virtual Atom::AtomType atomType() const { return Atom::Code; }
+ virtual QString markedUpCode(const QString &code, const Node * /*relative*/,
+ const Location & /*location*/)
+ {
+ return protect(code);
+ }
+ virtual QString markedUpSynopsis(const Node * /*node*/, const Node * /*relative*/,
+ Section::Style /*style*/)
+ {
+ return QString();
+ }
+ virtual QString markedUpQmlItem(const Node *, bool) { return QString(); }
+ virtual QString markedUpName(const Node * /*node*/) { return QString(); }
+ virtual QString markedUpEnumValue(const QString & /*enumValue*/, const Node * /*relative*/)
+ {
+ return QString();
+ }
+ virtual QString markedUpInclude(const QString & /*include*/) { return QString(); }
+
+ static void initialize();
+ static void terminate();
+ static CodeMarker *markerForCode(const QString &code);
+ static CodeMarker *markerForFileName(const QString &fileName);
+ static CodeMarker *markerForLanguage(const QString &lang);
+ static const Node *nodeForString(const QString &string);
+ static QString stringForNode(const Node *node);
+ static QString extraSynopsis(const Node *node, Section::Style style);
+
+ QString typified(const QString &string, bool trailingSpace = false);
+
+protected:
+ static QString protect(const QString &string);
+ static void appendProtectedString(QString *output, QStringView str);
+ QString taggedNode(const Node *node);
+ QString taggedQmlNode(const Node *node);
+ QString linkTag(const Node *node, const QString &body);
+
+private:
+ static QString s_defaultLang;
+ static QList<CodeMarker *> s_markers;
+};
+
+QT_END_NAMESPACE
+
+#endif