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 <marcandre.lur...@redhat.com> --- scripts/qapi2texi.py | 23 +++++++++++++---------- tests/qapi-schema/doc-good.json | 2 +- tests/qapi-schema/doc-good.out | 1 + tests/qapi-schema/doc-good.texi | 2 ++ 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py index 755bd2f15d..76c336af34 100755 --- a/scripts/qapi2texi.py +++ b/scripts/qapi2texi.py @@ -174,7 +174,7 @@ def texi_members(doc, what, base, variants, member_func): return '\n@b{%s:}\n@table @asis\n%s@end 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 += '\n\n@b{If:} @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.QAPISchemaVisitor): @@ -207,7 +209,7 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor): doc = self.cur_doc self.out += 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): @@ -216,13 +218,14 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor): base = None self.out += TYPE_FMT(type='Object', name=doc.symbol, - body=texi_entity(doc, 'Members', base, variants)) + body=texi_entity(doc, 'Members', ifcond, + base, variants)) def visit_alternate_type(self, name, info, ifcond, variants): doc = self.cur_doc self.out += 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): @@ -231,9 +234,9 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor): body = texi_body(doc) body += ('\n@b{Arguments:} 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.out += MSG_FMT(type='Command', name=doc.symbol, body=body) @@ -242,7 +245,7 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor): doc = self.cur_doc self.out += 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.out: @@ -255,7 +258,7 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor): assert not doc.args if self.out: self.out += '\n' - self.out += texi_body(doc) + texi_sections(doc) + self.out += texi_body(doc) + texi_sections(doc, None) def texi_schema(schema): 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 e615b04281..8c75da180c 100644 --- a/tests/qapi-schema/doc-good.out +++ b/tests/qapi-schema/doc-good.out @@ -3,6 +3,7 @@ object Base enum Enum member one member two + if ['defined(IFCOND)'] object Object base Base tag base1 diff --git a/tests/qapi-schema/doc-good.texi b/tests/qapi-schema/doc-good.texi index 1778312581..cd422f8a8f 100644 --- a/tests/qapi-schema/doc-good.texi +++ b/tests/qapi-schema/doc-good.texi @@ -87,6 +87,8 @@ Not documented @end table @code{two} is undocumented + +@b{If:} @code{defined(IFCOND)} @end deftp -- 2.16.0.rc1.1.gef27df75a1