@@ -127,3 +127,10 @@ Explicit cross-referencing syntax for QAPI modules is available with
is treated solely as a read-only manifest of blocks to copy.
:value always: The bitmap is always synchronized with the operation,
regardless of whether or not the operation was successful.
+
+.. qapi:alternate:: BlockDirtyBitmapOrStr
+ :since: 4.1
+
+ :choice str local: name of the bitmap, attached to the same node as
+ target bitmap.
+ :choice BlockDirtyBitmap external: bitmap with specified node
@@ -305,6 +305,22 @@ class QAPIEnum(QAPIObject):
)
+class QAPIAlternate(QAPIObject):
+ """Description of a QAPI Alternate."""
+
+ doc_field_types = QAPIObject.doc_field_types.copy()
+ doc_field_types.extend(
+ [
+ TypedField(
+ "choice",
+ label=_("Choices"),
+ names=("choice",),
+ can_collapse=True,
+ ),
+ ]
+ )
+
+
class QAPIModule(SphinxDirective):
"""
Directive to mark description of a new module.
@@ -458,6 +474,7 @@ class QAPIDomain(Domain):
"module": ObjType(_("module"), "mod", "obj"),
"command": ObjType(_("command"), "cmd", "obj"),
"enum": ObjType(_("enum"), "enum", "obj", "type"),
+ "alternate": ObjType(_("alternate"), "alt", "obj", "type"),
}
# Each of these provides a ReST directive,
@@ -466,6 +483,7 @@ class QAPIDomain(Domain):
"module": QAPIModule,
"command": QAPICommand,
"enum": QAPIEnum,
+ "alternate": QAPIAlternate,
}
# These are all cross-reference roles; e.g.
@@ -475,6 +493,7 @@ class QAPIDomain(Domain):
"mod": QAPIXRefRole(),
"cmd": QAPIXRefRole(),
"enum": QAPIXRefRole(),
+ "alt": QAPIXRefRole(),
"type": QAPIXRefRole(), # reference any data type (excludes modules, commands, events)
"obj": QAPIXRefRole(), # reference *any* type of QAPI object.
}
Add the .. qapi:alternate:: directive, object, and qapi:alt:`name` cross-reference role. Add the "Choices:" field list for describing alternate choices. Like other field lists that reference QAPI types, a forthcoming commit will add cross-referencing support to this field. RFC: In the future, it would be nice to directly inline Alternates as part of the type information in the containing object (i.e. directly in arguments/members) - but that's a task for another series. For now, the branch "names" are documented just like qapidoc.py does, even though this information is superfluous for user documentation. Room for future improvement, but not now. Signed-off-by: John Snow <jsnow@redhat.com> --- docs/qapi/index.rst | 7 +++++++ docs/sphinx/qapi-domain.py | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+)