aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/docparser.cpp17
-rw-r--r--sources/shiboken6/ApiExtractor/docparser.h1
-rw-r--r--sources/shiboken6/ApiExtractor/qtdocparser.cpp12
3 files changed, 29 insertions, 1 deletions
diff --git a/sources/shiboken6/ApiExtractor/docparser.cpp b/sources/shiboken6/ApiExtractor/docparser.cpp
index 9f5d06af5..b15dd52e6 100644
--- a/sources/shiboken6/ApiExtractor/docparser.cpp
+++ b/sources/shiboken6/ApiExtractor/docparser.cpp
@@ -3,12 +3,14 @@
#include "docparser.h"
#include "abstractmetaargument.h"
+#include "abstractmetaenum.h"
#include "abstractmetafunction.h"
#include "abstractmetalang.h"
#include "abstractmetatype.h"
#include "messages.h"
#include "modifications.h"
#include "reporthandler.h"
+#include "enumtypeentry.h"
#include "complextypeentry.h"
#include "xmlutils.h"
@@ -103,6 +105,21 @@ DocModificationList DocParser::getDocModifications(const AbstractMetaClass* cppC
return result;
}
+QString DocParser::enumBaseClass(const AbstractMetaEnum &e)
+{
+ switch (e.typeEntry()->pythonEnumType()) {
+ case TypeSystem::PythonEnumType::IntEnum:
+ return u"IntEnum"_s;
+ case TypeSystem::PythonEnumType::Flag:
+ return u"Flag"_s;
+ case TypeSystem::PythonEnumType::IntFlag:
+ return u"IntFlag"_s;
+ default:
+ break;
+ }
+ return e.typeEntry()->flags() != nullptr ? u"Flag"_s : u"Enum"_s;
+}
+
AbstractMetaFunctionCList DocParser::documentableFunctions(const AbstractMetaClass *metaClass)
{
auto result = metaClass->functionsInTargetLang();
diff --git a/sources/shiboken6/ApiExtractor/docparser.h b/sources/shiboken6/ApiExtractor/docparser.h
index 4884c5eec..d674d045a 100644
--- a/sources/shiboken6/ApiExtractor/docparser.h
+++ b/sources/shiboken6/ApiExtractor/docparser.h
@@ -96,6 +96,7 @@ public:
static DocModificationList getDocModifications(const AbstractMetaClass* cppClass,
const AbstractMetaFunctionCPtr &func = {});
+ static QString enumBaseClass(const AbstractMetaEnum &e);
protected:
static QString getDocumentation(const XQueryPtr &xquery,
diff --git a/sources/shiboken6/ApiExtractor/qtdocparser.cpp b/sources/shiboken6/ApiExtractor/qtdocparser.cpp
index 3829c3463..236ca4c31 100644
--- a/sources/shiboken6/ApiExtractor/qtdocparser.cpp
+++ b/sources/shiboken6/ApiExtractor/qtdocparser.cpp
@@ -292,7 +292,17 @@ void QtDocParser::fillDocumentation(AbstractMetaClass* metaClass)
Documentation enumDoc;
const auto index = classDocumentation.indexOfEnum(meta_enum.name());
if (index != -1) {
- enumDoc.setValue(classDocumentation.enums.at(index).description);
+ QString doc = classDocumentation.enums.at(index).description;
+ const auto firstPara = doc.indexOf(u"<para>");
+ if (firstPara != -1) {
+ const QString baseClass = QtDocParser::enumBaseClass(meta_enum);
+ if (baseClass != u"Enum") {
+ const QString note = u"(inherits <teletype>enum."_s + baseClass
+ + u"</teletype>) "_s;
+ doc.insert(firstPara + 6, note);
+ }
+ }
+ enumDoc.setValue(doc);
meta_enum.setDocumentation(enumDoc);
} else {
qCWarning(lcShibokenDoc, "%s",