mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00

The include directive permits modular QAPI schemata, but the generated code is monolithic all the same. To permit generating modular code, the front end needs to pass more information on inclusions to the back ends. The commit before last added the necessary information to the parse tree. This commit adds it to the intermediate representation and its QAPISchemaVisitor. A later commit will use this to to generate modular code. New entity QAPISchemaInclude represents inclusions. Call new visitor method visit_include() for it, so visitors can see the sub-modules a module includes. Note that unlike other entities, QAPISchemaInclude has no name, and is therefore not added to entity_dict. New QAPISchemaEntity attribute @module names the entity's source file. Call new visitor method visit_module() when it changes during a visit, so visitors can keep track of the module being visited. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20180211093607.27351-18-armbru@redhat.com> [eblake: avoid accidental deletion of self._predefining] Signed-off-by: Eric Blake <eblake@redhat.com>
149 lines
2.3 KiB
Text
149 lines
2.3 KiB
Text
object q_empty
|
|
enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
|
|
prefix QTYPE
|
|
module doc-good.json
|
|
enum Enum ['one', 'two']
|
|
object Base
|
|
member base1: Enum optional=False
|
|
object Variant1
|
|
member var1: str optional=False
|
|
object Variant2
|
|
object Object
|
|
base Base
|
|
tag base1
|
|
case one: Variant1
|
|
case two: Variant2
|
|
object q_obj_Variant1-wrapper
|
|
member data: Variant1 optional=False
|
|
object q_obj_Variant2-wrapper
|
|
member data: Variant2 optional=False
|
|
enum SugaredUnionKind ['one', 'two']
|
|
object SugaredUnion
|
|
member type: SugaredUnionKind optional=False
|
|
tag type
|
|
case one: q_obj_Variant1-wrapper
|
|
case two: q_obj_Variant2-wrapper
|
|
object q_obj_cmd-arg
|
|
member arg1: int optional=False
|
|
member arg2: str optional=True
|
|
member arg3: bool optional=False
|
|
command cmd q_obj_cmd-arg -> Object
|
|
gen=True success_response=True boxed=False
|
|
command cmd-boxed Object -> None
|
|
gen=True success_response=True boxed=True
|
|
doc freeform
|
|
body=
|
|
= Section
|
|
|
|
== Subsection
|
|
|
|
*strong* _with emphasis_
|
|
@var {in braces}
|
|
* List item one
|
|
- Two, multiple
|
|
lines
|
|
|
|
3. Three
|
|
Still in list
|
|
|
|
Not in list
|
|
- Second list
|
|
Note: still in list
|
|
|
|
Note: not in list
|
|
1. Third list
|
|
is numbered
|
|
|
|
- another item
|
|
|
|
| example
|
|
| multiple lines
|
|
|
|
Returns: the King
|
|
Since: the first age
|
|
Notes:
|
|
|
|
1. Lorem ipsum dolor sit amet
|
|
|
|
2. Ut enim ad minim veniam
|
|
|
|
Duis aute irure dolor
|
|
|
|
Example:
|
|
|
|
-> in
|
|
<- out
|
|
Examples:
|
|
- *verbatim*
|
|
- {braces}
|
|
doc symbol=Enum
|
|
body=
|
|
|
|
arg=one
|
|
The _one_ {and only}
|
|
arg=two
|
|
|
|
section=None
|
|
@two is undocumented
|
|
doc symbol=Base
|
|
body=
|
|
|
|
arg=base1
|
|
the first member
|
|
doc symbol=Variant1
|
|
body=
|
|
A paragraph
|
|
|
|
Another paragraph (but no @var: line)
|
|
arg=var1
|
|
|
|
doc symbol=Variant2
|
|
body=
|
|
|
|
doc symbol=Object
|
|
body=
|
|
|
|
doc symbol=SugaredUnion
|
|
body=
|
|
|
|
arg=type
|
|
|
|
doc freeform
|
|
body=
|
|
== Another subsection
|
|
doc symbol=cmd
|
|
body=
|
|
|
|
arg=arg1
|
|
the first argument
|
|
arg=arg2
|
|
the second
|
|
argument
|
|
arg=arg3
|
|
|
|
section=Note
|
|
@arg3 is undocumented
|
|
section=Returns
|
|
@Object
|
|
section=TODO
|
|
frobnicate
|
|
section=Notes
|
|
- Lorem ipsum dolor sit amet
|
|
- Ut enim ad minim veniam
|
|
|
|
Duis aute irure dolor
|
|
section=Example
|
|
-> in
|
|
<- out
|
|
section=Examples
|
|
- *verbatim*
|
|
- {braces}
|
|
section=Since
|
|
2.10
|
|
doc symbol=cmd-boxed
|
|
body=
|
|
If you're bored enough to read this, go see a video of boxed cats
|
|
section=Example
|
|
-> in
|
|
|
|
<- out
|