aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/generator/qtdoc/qtdocgenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/generator/qtdoc/qtdocgenerator.h')
-rw-r--r--sources/shiboken6/generator/qtdoc/qtdocgenerator.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/sources/shiboken6/generator/qtdoc/qtdocgenerator.h b/sources/shiboken6/generator/qtdoc/qtdocgenerator.h
new file mode 100644
index 000000000..3b1c82e74
--- /dev/null
+++ b/sources/shiboken6/generator/qtdoc/qtdocgenerator.h
@@ -0,0 +1,129 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+#ifndef DOCGENERATOR_H
+#define DOCGENERATOR_H
+
+#include <QtCore/QStringList>
+#include <QtCore/QMap>
+#include <QtCore/QScopedPointer>
+
+#include "generator.h"
+#include "documentation.h"
+#include <optionsparser.h>
+#include "typesystem_enums.h"
+#include "modifications_typedefs.h"
+#include "qtxmltosphinxinterface.h"
+
+class DocParser;
+struct DocGeneratorOptions;
+struct GeneratorDocumentation;
+struct DocPackage;
+
+/**
+* The DocGenerator generates documentation from library being binded.
+*/
+class QtDocGenerator : public Generator, public QtXmlToSphinxDocGeneratorInterface
+{
+public:
+ Q_DISABLE_COPY_MOVE(QtDocGenerator)
+
+ QtDocGenerator();
+ ~QtDocGenerator();
+
+ bool doSetup() override;
+
+ const char* name() const override
+ {
+ return "QtDocGenerator";
+ }
+
+ static QList<OptionDescription> options();
+ static std::shared_ptr<OptionsParser> createOptionsParser();
+
+ // QtXmlToSphinxDocGeneratorInterface
+ QString expandFunction(const QString &function) const override;
+ QString expandClass(const QString &context,
+ const QString &name) const override;
+ QString resolveContextForMethod(const QString &context,
+ const QString &methodName) const override;
+ const QLoggingCategory &loggingCategory() const override;
+ QtXmlToSphinxLink resolveLink(const QtXmlToSphinxLink &) const override;
+
+ static QString getFuncName(const AbstractMetaFunctionCPtr &cppFunc);
+ static QString formatArgs(const AbstractMetaFunctionCPtr &func);
+
+protected:
+ bool shouldGenerate(const TypeEntryCPtr &) const override;
+ static QString fileNameSuffix();
+ QString fileNameForContext(const GeneratorContext &context) const override;
+ void generateClass(TextStream &ts, const GeneratorContext &classContext) override;
+ bool finishGeneration() override;
+
+private:
+ void writeEnums(TextStream &s, const AbstractMetaEnumList &enums,
+ const QString &scope) const;
+
+ void writeFields(TextStream &s, const AbstractMetaClassCPtr &cppClass) const;
+ void writeFunctions(TextStream &s, const AbstractMetaFunctionCList &funcs,
+ const AbstractMetaClassCPtr &cppClass, const QString &scope);
+ void writeFunction(TextStream &s, const AbstractMetaFunctionCPtr &func,
+ const AbstractMetaClassCPtr &cppClass = {},
+ const QString &scope = {}, bool indexed = true);
+ void writeFunctionDocumentation(TextStream &s, const AbstractMetaFunctionCPtr &func,
+ const DocModificationList &modifications,
+ const QString &scope) const;
+ void writeFunctionParametersType(TextStream &s, const AbstractMetaClassCPtr &cppClass,
+ const AbstractMetaFunctionCPtr &func) const;
+ static void writeFunctionToc(TextStream &s, const QString &title,
+ const AbstractMetaFunctionCList &functions);
+ static void writePropertyToc(TextStream &s,
+ const GeneratorDocumentation &doc);
+ void writeProperties(TextStream &s,
+ const GeneratorDocumentation &doc,
+ const AbstractMetaClassCPtr &cppClass) const;
+ void writeParameterType(TextStream &s, const AbstractMetaClassCPtr &cppClass,
+ const AbstractMetaArgument &arg) const;
+ void writeFormattedText(TextStream &s, const QString &doc,
+ Documentation::Format format,
+ const QString &scope = {}) const;
+ void writeFormattedBriefText(TextStream &s, const Documentation &doc,
+ const QString &scope = {}) const;
+ void writeFormattedDetailedText(TextStream &s, const Documentation &doc,
+ const QString &scope = {}) const;
+
+ bool writeInjectDocumentation(TextStream &s, TypeSystem::DocModificationMode mode,
+ const AbstractMetaClassCPtr &cppClass) const;
+ bool writeInjectDocumentation(TextStream &s, TypeSystem::DocModificationMode mode,
+ const DocModificationList &modifications,
+ const AbstractMetaFunctionCPtr &func,
+ const QString &scope = {}) const;
+ bool writeDocModifications(TextStream &s, const DocModificationList &mods,
+ TypeSystem::DocModificationMode mode,
+ const QString &scope = {}) const;
+ static void writeDocSnips(TextStream &s, const CodeSnipList &codeSnips,
+ TypeSystem::CodeSnipPosition position, TypeSystem::Language language);
+
+ void writeModuleDocumentation();
+ void writeGlobals(const QString &package, const QString &fileName,
+ const DocPackage &docPackage);
+ void writeAdditionalDocumentation() const;
+ bool writeInheritanceFile();
+
+ QString translateToPythonType(const AbstractMetaType &type,
+ const AbstractMetaClassCPtr &cppClass,
+ bool createRef = true) const;
+
+ bool convertToRst(const QString &sourceFileName,
+ const QString &targetFileName,
+ const QString &context = QString(),
+ QString *errorMessage = nullptr) const;
+
+ static GeneratorDocumentation generatorDocumentation(const AbstractMetaClassCPtr &cppClass);
+
+ QStringList m_functionList;
+ QMap<QString, DocPackage> m_packages;
+ QScopedPointer<DocParser> m_docParser;
+ static DocGeneratorOptions m_options;
+};
+
+#endif // DOCGENERATOR_H