Please first take a look at patch 7 to see what is supported by this series.
Patch 1 ~ 3 allows some useful basic types in schema. Patch 4 ~ 6 implements the new syntax. Note: The introduced '@arg' sigil, just like the preexisting '*arg', is reducing the cleanness of the syntax. We should get rid of both of them in long term. Here, this series compromises on this and introduces '@arg' because: - We have to distinguish the argument property dictionary from nested struct: I.e.: 'data': { 'arg1': { 'member1': 'int', 'member2': 'str' } '@arg2': { 'type': 'int', 'default': 100 } } Until we completely drop and forbid the 'arg1' nested struct use case. - Forbidding 'arg1' it's doable, but doing it now means we pull in many distractive patches to this series. Basically we need to: * converting existing nested structs to named structs in qapi-schema.json. * converting C code that references these structs because member structures become member structure pointers. * coverting qapi-schema test cases on nested structure. * updating docs/qapi-code-gen.txt. - So let's focus on the default value requirement for now, because it's not making the above change harder. Test cases, documentation, more data types of default value, and conversion of more qmp commands will come later, if we could agree on the schema design and framework. Thanks, Fam Fam Zheng (7): qapi: Allow decimal values qapi: Allow true, false and null in schema json tests: Add decimal test cases for qapi-schema qapi: Add c_val(t, val) for int qapi: Add @arg property dictionary syntax qapi: Initialize argument value in generated code if has 'default' qmp: Convert block-commit speed to arg property dict blockdev.c | 6 +-- qapi-schema.json | 2 +- scripts/qapi-commands.py | 55 +++++++++++++++---------- scripts/qapi-types.py | 2 +- scripts/qapi-visit.py | 4 +- scripts/qapi.py | 60 +++++++++++++++++++++++++--- tests/Makefile | 3 +- tests/qapi-schema/integers-leading-zero.err | 1 + tests/qapi-schema/integers-leading-zero.exit | 1 + tests/qapi-schema/integers-leading-zero.json | 1 + tests/qapi-schema/integers-leading-zero.out | 0 tests/qapi-schema/integers-overflow.err | 1 + tests/qapi-schema/integers-overflow.exit | 1 + tests/qapi-schema/integers-overflow.json | 1 + tests/qapi-schema/integers-overflow.out | 0 tests/qapi-schema/integers.err | 0 tests/qapi-schema/integers.exit | 1 + tests/qapi-schema/integers.json | 10 +++++ tests/qapi-schema/integers.out | 3 ++ 19 files changed, 117 insertions(+), 35 deletions(-) create mode 100644 tests/qapi-schema/integers-leading-zero.err create mode 100644 tests/qapi-schema/integers-leading-zero.exit create mode 100644 tests/qapi-schema/integers-leading-zero.json create mode 100644 tests/qapi-schema/integers-leading-zero.out create mode 100644 tests/qapi-schema/integers-overflow.err create mode 100644 tests/qapi-schema/integers-overflow.exit create mode 100644 tests/qapi-schema/integers-overflow.json create mode 100644 tests/qapi-schema/integers-overflow.out create mode 100644 tests/qapi-schema/integers.err create mode 100644 tests/qapi-schema/integers.exit create mode 100644 tests/qapi-schema/integers.json create mode 100644 tests/qapi-schema/integers.out -- 1.9.2