[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/14] qapi: add 'If:' section to generated documenta
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 12/14] qapi: add 'If:' section to generated documentation |
Date: |
Tue, 3 Jul 2018 23:06:11 +0200 |
From: Marc-André Lureau <address@hidden>
The documentation is generated only once, and doesn't know C
pre-conditions. Add 'If:' sections for top-level entities.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
---
scripts/qapi/doc.py | 22 ++++++++++++----------
tests/qapi-schema/doc-good.json | 2 +-
tests/qapi-schema/doc-good.out | 1 +
tests/qapi-schema/doc-good.texi | 2 ++
4 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/scripts/qapi/doc.py b/scripts/qapi/doc.py
index 4db6674dc3..987fd3c943 100755
--- a/scripts/qapi/doc.py
+++ b/scripts/qapi/doc.py
@@ -174,7 +174,7 @@ def texi_members(doc, what, base, variants, member_func):
return 'address@hidden:address@hidden @address@hidden table\n' % (what,
items)
-def texi_sections(doc):
+def texi_sections(doc, ifcond):
"""Format additional sections following arguments"""
body = ''
for section in doc.sections:
@@ -185,14 +185,16 @@ def texi_sections(doc):
body += texi_example(section.text)
else:
body += texi_format(section.text)
+ if ifcond:
+ body += 'address@hidden:} @code{%s}' % ", ".join(ifcond)
return body
-def texi_entity(doc, what, base=None, variants=None,
+def texi_entity(doc, what, ifcond, base=None, variants=None,
member_func=texi_member):
return (texi_body(doc)
+ texi_members(doc, what, base, variants, member_func)
- + texi_sections(doc))
+ + texi_sections(doc, ifcond))
class QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
@@ -208,7 +210,7 @@ class
QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
doc = self.cur_doc
self._gen.add(TYPE_FMT(type='Enum',
name=doc.symbol,
- body=texi_entity(doc, 'Values',
+ body=texi_entity(doc, 'Values', ifcond,
member_func=texi_enum_value)))
def visit_object_type(self, name, info, ifcond, base, members, variants):
@@ -217,14 +219,14 @@ class
QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
base = None
self._gen.add(TYPE_FMT(type='Object',
name=doc.symbol,
- body=texi_entity(doc, 'Members',
+ body=texi_entity(doc, 'Members', ifcond,
base, variants)))
def visit_alternate_type(self, name, info, ifcond, variants):
doc = self.cur_doc
self._gen.add(TYPE_FMT(type='Alternate',
name=doc.symbol,
- body=texi_entity(doc, 'Members')))
+ body=texi_entity(doc, 'Members', ifcond)))
def visit_command(self, name, info, ifcond, arg_type, ret_type, gen,
success_response, boxed, allow_oob, allow_preconfig):
@@ -233,9 +235,9 @@ class
QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
body = texi_body(doc)
body += ('address@hidden:} the members of @code{%s}\n'
% arg_type.name)
- body += texi_sections(doc)
+ body += texi_sections(doc, ifcond)
else:
- body = texi_entity(doc, 'Arguments')
+ body = texi_entity(doc, 'Arguments', ifcond)
self._gen.add(MSG_FMT(type='Command',
name=doc.symbol,
body=body))
@@ -244,7 +246,7 @@ class
QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
doc = self.cur_doc
self._gen.add(MSG_FMT(type='Event',
name=doc.symbol,
- body=texi_entity(doc, 'Arguments')))
+ body=texi_entity(doc, 'Arguments', ifcond)))
def symbol(self, doc, entity):
if self._gen._body:
@@ -257,7 +259,7 @@ class
QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVisitor):
assert not doc.args
if self._gen._body:
self._gen.add('\n')
- self._gen.add(texi_body(doc) + texi_sections(doc))
+ self._gen.add(texi_body(doc) + texi_sections(doc, None))
def gen_doc(schema, output_dir, prefix):
diff --git a/tests/qapi-schema/doc-good.json b/tests/qapi-schema/doc-good.json
index 97ab4625ff..984cd8ed06 100644
--- a/tests/qapi-schema/doc-good.json
+++ b/tests/qapi-schema/doc-good.json
@@ -55,7 +55,7 @@
#
# @two is undocumented
##
-{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
+{ 'enum': 'Enum', 'data': [ 'one', 'two' ], 'if': 'defined(IFCOND)' }
##
# @Base:
diff --git a/tests/qapi-schema/doc-good.out b/tests/qapi-schema/doc-good.out
index 9c8a4838e1..35f3f1164c 100644
--- a/tests/qapi-schema/doc-good.out
+++ b/tests/qapi-schema/doc-good.out
@@ -3,6 +3,7 @@ enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict',
'qlist', 'qbool']
prefix QTYPE
module doc-good.json
enum Enum ['one', 'two']
+ if ['defined(IFCOND)']
object Base
member base1: Enum optional=False
object Variant1
diff --git a/tests/qapi-schema/doc-good.texi b/tests/qapi-schema/doc-good.texi
index 0aed2300a5..e42eace474 100644
--- a/tests/qapi-schema/doc-good.texi
+++ b/tests/qapi-schema/doc-good.texi
@@ -89,6 +89,8 @@ Not documented
@end table
@code{two} is undocumented
+
address@hidden:} @code{defined(IFCOND)}
@end deftp
--
2.17.1
- [Qemu-devel] [PULL 03/14] qapi: leave the ifcond attribute undefined until check(), (continued)
- [Qemu-devel] [PULL 03/14] qapi: leave the ifcond attribute undefined until check(), Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 09/14] qapi/commands: add #if conditions to commands, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 04/14] qapi: add 'ifcond' to visitor methods, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 13/14] qapi: add conditions to VNC type/commands/events on the schema, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 06/14] qapi: add #if/#endif helpers, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 10/14] qapi/events: add #if conditions to events, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 14/14] qapi: add conditions to SPICE type/commands/events on the schema, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 05/14] qapi: mcgen() shouldn't indent # lines, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 01/14] qapi: add 'if' to top-level expressions, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 07/14] qapi-introspect: modify to_qlit() to append ', ' on level > 0, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 12/14] qapi: add 'If:' section to generated documentation,
Markus Armbruster <=
- [Qemu-devel] [PULL 02/14] qapi: pass 'if' condition into QAPISchemaEntity objects, Markus Armbruster, 2018/07/03
- [Qemu-devel] [PULL 08/14] qapi-introspect: add preprocessor conditions to generated QLit, Markus Armbruster, 2018/07/03
- Re: [Qemu-devel] [PULL 00/14] QAPI patches for 2018-07-03, Peter Maydell, 2018/07/05