summaryrefslogtreecommitdiffstats
path: root/src/qdoc/docbookgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/docbookgenerator.cpp')
-rw-r--r--src/qdoc/docbookgenerator.cpp64
1 files changed, 47 insertions, 17 deletions
diff --git a/src/qdoc/docbookgenerator.cpp b/src/qdoc/docbookgenerator.cpp
index f6476c9ec..a7e5df290 100644
--- a/src/qdoc/docbookgenerator.cpp
+++ b/src/qdoc/docbookgenerator.cpp
@@ -2105,10 +2105,11 @@ void DocBookGenerator::generateBody(const Node *node)
writer->writeTextElement(dbNamespace, "para", t);
}
} else if (!node->isSharingComment()) {
- if (fn) {
- if (!fn->overridesThis().isEmpty())
- generateReimplementsClause(fn);
- }
+ // Reimplements clause and type alias info precede body text
+ if (fn && !fn->overridesThis().isEmpty())
+ generateReimplementsClause(fn);
+ else if (node->isTypeAlias())
+ generateAddendum(node, TypeAlias, nullptr, false);
if (!generateText(node->doc().body(), node)) {
if (node->isMarkedReimp())
@@ -2726,6 +2727,8 @@ void DocBookGenerator::generateDocBookSynopsis(const Node *node)
else if (functionNode->isDefault())
signature += " = default";
generateSynopsisInfo("signature", signature);
+ } else if (node->isTypedef()) {
+ writer->writeTextElement(dbNamespace, "type", node->plainName());
} else {
node->doc().location().warning(tr("Unexpected node type in generateDocBookSynopsis: %1")
.arg(node->nodeTypeString()));
@@ -3157,10 +3160,10 @@ void DocBookGenerator::generateSynopsis(const Node *node, const Node *relative,
// First generate the extra part if needed (condition from HtmlGenerator::generateSynopsis).
if (generateExtra) {
- if (node->nodeType() == Node::Function) {
- const auto func = static_cast<const FunctionNode *>(node);
- if (style != Section::Summary && style != Section::Accessors) {
- QStringList bracketed;
+ if (style != Section::Summary && style != Section::Accessors) {
+ QStringList bracketed;
+ if (node->isFunction()) {
+ const auto func = static_cast<const FunctionNode *>(node);
if (func->isStatic()) {
bracketed += "static";
} else if (!func->isNonvirtual()) {
@@ -3182,11 +3185,12 @@ void DocBookGenerator::generateSynopsis(const Node *node, const Node *relative,
bracketed += "signal";
else if (func->isSlot())
bracketed += "slot";
-
- if (!bracketed.isEmpty())
- writer->writeCharacters(QLatin1Char('[') + bracketed.join(' ')
- + QStringLiteral("] "));
+ } else if (node->isTypeAlias()) {
+ bracketed += "alias";
}
+ if (!bracketed.isEmpty())
+ writer->writeCharacters(QLatin1Char('[') + bracketed.join(' ')
+ + QStringLiteral("] "));
}
if (style == Section::Summary) {
@@ -3197,6 +3201,8 @@ void DocBookGenerator::generateSynopsis(const Node *node, const Node *relative,
extra = "(deprecated) ";
else if (node->isObsolete())
extra = "(obsolete) ";
+ else if (node->isTypeAlias())
+ extra = "(alias) ";
if (!extra.isEmpty())
writer->writeCharacters(extra);
@@ -3407,12 +3413,15 @@ void DocBookGenerator::generateOverloadedSignal(const Node *node)
Generates an addendum note of type \a type for \a node. \a marker
is unused in this generator.
*/
-void DocBookGenerator::generateAddendum(const Node *node, Addendum type, CodeMarker *marker)
+void DocBookGenerator::generateAddendum(const Node *node, Addendum type, CodeMarker *marker,
+ bool generateNote)
{
Q_UNUSED(marker);
Q_ASSERT(node && !node->name().isEmpty());
- writer->writeStartElement(dbNamespace, "note");
- newLine();
+ if (generateNote) {
+ writer->writeStartElement(dbNamespace, "note");
+ newLine();
+ }
switch (type) {
case Invokable:
writer->writeStartElement(dbNamespace, "para");
@@ -3475,12 +3484,33 @@ void DocBookGenerator::generateAddendum(const Node *node, Addendum type, CodeMar
}
break;
}
+ case TypeAlias:
+ {
+ if (!node->isTypeAlias())
+ return;
+ writer->writeStartElement(dbNamespace, "para");
+ const auto *ta = static_cast<const TypeAliasNode *>(node);
+ writer->writeCharacters("This is a type alias for ");
+ if (ta->aliasedNode() && ta->aliasedNode()->isInAPI())
+ generateSimpleLink(linkForNode(ta->aliasedNode(), nullptr),
+ ta->aliasedNode()->plainFullName(ta->parent()));
+ else
+ writer->writeTextElement(dbNamespace, "code", ta->aliasedType());
+
+ writer->writeCharacters(".");
+ writer->writeEndElement(); // para
+ newLine();
+ break;
+ }
+
default:
break;
}
- writer->writeEndElement(); // note
- newLine();
+ if (generateNote) {
+ writer->writeEndElement(); // note
+ newLine();
+ }
}
void DocBookGenerator::generateDetailedMember(const Node *node, const PageNode *relative)