• E
    qapi: Drop tests for inline nested structs · 6446a592
    Eric Blake 提交于
    A future patch will be using a 'name':{dictionary} entry in the
    QAPI schema to specify a default value for an optional argument;
    but existing use of inline nested structs conflicts with that goal.
    
    More precisely, a definition in the QAPI schema associates a name
    with a set of properties:
    
    Example 1: { 'struct': 'Foo', 'data': { MEMBERS... } }
    associates the global name 'Foo' with properties (meta-type struct)
    and MEMBERS...
    
    Example 2: 'mumble': TYPE
    within MEMBERS... above associates 'mumble' with properties (type
    TYPE) and (optional false) within type Foo
    
    The syntax of example 1 is extensible; if we need another property,
    we add another name/value pair to the dictionary (such as
    'base':TYPE).  The syntax of example 2 is not extensible, because
    the right hand side can only be a type.
    
    We have used name encoding to add a property: "'*mumble': 'int'"
    associates 'mumble' with (type int) and (optional true).  Nice,
    but doesn't scale.  So the solution is to change our existing uses
    to be syntactic sugar to an extensible form:
    
       NAME: TYPE   --> NAME:  { 'type': TYPE, 'optional': false }
       *ONAME: TYPE --> ONAME: { 'type': TYPE, 'optional': true }
    
    This patch fixes the testsuite to avoid inline nested types, by
    breaking the nesting into explicit types; it means that the type
    is now boxed instead of unboxed in C code, but makes no difference
    on the wire (and if desired, a later patch could change the
    generator to not do so much boxing in C).  When touching code to
    add new allocations, also convert existing allocations to
    consistently prefer typesafe g_new0 over g_malloc0 when a type
    name is involved.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    6446a592
test-qmp-output-visitor.c 28.5 KB