diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-12-08 15:00:45 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-12-12 10:26:49 +0100 |
commit | 9cde3eafa776f1c942db6535fbf4303b35ccc73e (patch) | |
tree | 5c1c858b7fa62d265d3b5ace7c95ed38169af41c /sources/shiboken6/generator | |
parent | d8003770fc55c5bf6c0857797f5a416d01d73d94 (diff) |
DocGenerator: Further preparations for generating global functions/enums
QtDocGenerator::writeInjectDocumentation() previously had class and
function as parameters and was used for class documentation (function
== 0) as well as function documentation.
Split it into separate functions for both cases such that class can be
0 in the function case for global functions.
Remove the indentation, which appeared to be misguided.
Add separate functions for querying the XPATH modifications.
Task-number: PYSIDE-1106
Task-number: PYSIDE-2543
Change-Id: I78a25f100b810abb542d82be56c4473816bb8c82
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken6/generator')
-rw-r--r-- | sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp | 58 | ||||
-rw-r--r-- | sources/shiboken6/generator/qtdoc/qtdocgenerator.h | 10 |
2 files changed, 47 insertions, 21 deletions
diff --git a/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp index 59119b10e..49084eb86 100644 --- a/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp +++ b/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp @@ -403,8 +403,8 @@ void QtDocGenerator::generateClass(TextStream &s, const GeneratorContext &classC s << '\n' << headline("Detailed Description") << ".. _More:\n"; - writeInjectDocumentation(s, TypeSystem::DocModificationPrepend, metaClass, nullptr); - if (!writeInjectDocumentation(s, TypeSystem::DocModificationReplace, metaClass, nullptr)) + writeInjectDocumentation(s, TypeSystem::DocModificationPrepend, metaClass); + if (!writeInjectDocumentation(s, TypeSystem::DocModificationReplace, metaClass)) writeFormattedDetailedText(s, documentation, scope); if (!metaClass->isNamespace()) @@ -425,7 +425,7 @@ void QtDocGenerator::generateClass(TextStream &s, const GeneratorContext &classC writeFunction(s, func, metaClass, scope, indexed); } - writeInjectDocumentation(s, TypeSystem::DocModificationAppend, metaClass, nullptr); + writeInjectDocumentation(s, TypeSystem::DocModificationAppend, metaClass); } void QtDocGenerator::writeFunctionToc(TextStream &s, const QString &title, @@ -669,17 +669,12 @@ void QtDocGenerator::writeDocSnips(TextStream &s, } } -bool QtDocGenerator::writeInjectDocumentation(TextStream &s, - TypeSystem::DocModificationMode mode, - const AbstractMetaClassCPtr &cppClass, - const AbstractMetaFunctionCPtr &func) +bool QtDocGenerator::writeDocModifications(TextStream &s, + const DocModificationList &mods, + TypeSystem::DocModificationMode mode, + const QString &scope) const { - Indentation indentation(s); bool didSomething = false; - - const DocModificationList mods = DocParser::getDocModifications(cppClass, func); - const QString scope = classScope(cppClass); - for (const DocModification &mod : mods) { if (mod.mode() == mode) { switch (mod.format()) { @@ -696,17 +691,42 @@ bool QtDocGenerator::writeInjectDocumentation(TextStream &s, } } } + return didSomething; +} + +bool QtDocGenerator::writeInjectDocumentation(TextStream &s, + TypeSystem::DocModificationMode mode, + const AbstractMetaClassCPtr &cppClass) +{ + const bool didSomething = + writeDocModifications(s, DocParser::getDocModifications(cppClass), + mode, classScope(cppClass)); + s << '\n'; + // FIXME PYSIDE-7: Deprecate the use of doc string on glue code. + // This is pre "add-function" and "inject-documentation" tags. + const TypeSystem::CodeSnipPosition pos = mode == TypeSystem::DocModificationPrepend + ? TypeSystem::CodeSnipPositionBeginning : TypeSystem::CodeSnipPositionEnd; + writeDocSnips(s, cppClass->typeEntry()->codeSnips(), pos, TypeSystem::TargetLangCode); + return didSomething; +} + +bool QtDocGenerator::writeInjectDocumentation(TextStream &s, + TypeSystem::DocModificationMode mode, + const AbstractMetaFunctionCPtr &func, + const AbstractMetaClassCPtr &cppClass, + const QString &scope) +{ + const bool didSomething = + writeDocModifications(s, DocParser::getDocModifications(func, cppClass), + mode, scope); s << '\n'; // FIXME PYSIDE-7: Deprecate the use of doc string on glue code. // This is pre "add-function" and "inject-documentation" tags. const TypeSystem::CodeSnipPosition pos = mode == TypeSystem::DocModificationPrepend ? TypeSystem::CodeSnipPositionBeginning : TypeSystem::CodeSnipPositionEnd; - if (func) - writeDocSnips(s, func->injectedCodeSnips(), pos, TypeSystem::TargetLangCode); - else - writeDocSnips(s, cppClass->typeEntry()->codeSnips(), pos, TypeSystem::TargetLangCode); + writeDocSnips(s, func->injectedCodeSnips(), pos, TypeSystem::TargetLangCode); return didSomething; } @@ -861,12 +881,12 @@ void QtDocGenerator::writeFunction(TextStream &s, const AbstractMetaFunctionCPtr if (func->isDeprecated()) s << rstDeprecationNote("function"); } - writeInjectDocumentation(s, TypeSystem::DocModificationPrepend, cppClass, func); - if (!writeInjectDocumentation(s, TypeSystem::DocModificationReplace, cppClass, func)) { + writeInjectDocumentation(s, TypeSystem::DocModificationPrepend, func, cppClass, scope); + if (!writeInjectDocumentation(s, TypeSystem::DocModificationReplace, func, cppClass, scope)) { writeFormattedBriefText(s, func->documentation(), scope); writeFormattedDetailedText(s, func->documentation(), scope); } - writeInjectDocumentation(s, TypeSystem::DocModificationAppend, cppClass, func); + writeInjectDocumentation(s, TypeSystem::DocModificationAppend, func, cppClass, scope); if (auto propIndex = func->propertySpecIndex(); propIndex >= 0) { const QString name = cppClass->propertySpecs().at(propIndex).name(); diff --git a/sources/shiboken6/generator/qtdoc/qtdocgenerator.h b/sources/shiboken6/generator/qtdoc/qtdocgenerator.h index 0bdfa4f0a..79c2872c2 100644 --- a/sources/shiboken6/generator/qtdoc/qtdocgenerator.h +++ b/sources/shiboken6/generator/qtdoc/qtdocgenerator.h @@ -95,8 +95,14 @@ private: const QString &scope = {}) const; bool writeInjectDocumentation(TextStream &s, TypeSystem::DocModificationMode mode, - const AbstractMetaClassCPtr &cppClass, - const AbstractMetaFunctionCPtr &func); + const AbstractMetaClassCPtr &cppClass); + bool writeInjectDocumentation(TextStream &s, TypeSystem::DocModificationMode mode, + const AbstractMetaFunctionCPtr &func, + const AbstractMetaClassCPtr &cppClass = {}, + const QString &scope = {}); + 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); |