These patches apply on top of qemu.git master, and can also be obtained from: git://github.com/mdroth/qemu.git qapi-native-lists
Sending this now since a number of series have popped up in the past that wanted this, and Amos has some pending patches (query-mac-tables) that rely on this as well. These patches add support for specifying lists of native qapi types (int/bool/str/number/int8/uint8/etc) like so: { 'type': 'foo', 'data': { 'bar': ['int'] }} for a 'bar' field that is a list of type 'int', { 'type': 'foo2', 'data': { 'bar2': ['str'] }} for a 'bar2' field that is a list of type 'str', and so on. This uses linked list types for the native C representations, just as we do for complex schema-defined types. In the future we may add schema annotations of some sort to specify a more natural/efficient array type for the C representations, but this should serve the majority of uses-cases for now. v2->v3: * added native list support for fixed-width integer types (Amos) * added fixed-width integer list coverage to serialization, QMPOutputVisitor, and QmpInputVisitor unit tests * added unit test to QmpInputVisitor to test new overflow handling when integers types are expected (Eric) * clarified terminology/documentation in json parser fix (Laszlo) * fixed whitespace/newlines in code generator output (Luiz) v1->v2: * fixed do-nothing float tests in pre-existing code and updated new unit tests accordingly (Laszlo) * added a fix for a bug in json parser that was exposed by above change * fixed misuse of string format parameters for float testing (Laszlo) * fixed extra characters in comment (Laszlo) * removed unused variant from UserDefNativeListUnion QAPI type Makefile | 6 +- qapi-schema-test.json | 15 ++ qobject/json-parser.c | 26 +- scripts/qapi-types.py | 45 +++- scripts/qapi-visit.py | 36 ++- scripts/qapi.py | 23 ++ tests/test-qmp-input-visitor.c | 358 ++++++++++++++++++++++++++ tests/test-qmp-output-visitor.c | 332 ++++++++++++++++++++++++ tests/test-visitor-serialization.c | 485 +++++++++++++++++++++++++++++++++--- 9 files changed, 1274 insertions(+), 52 deletions(-)