Il 16/07/2013 12:37, Amos Kong ha scritto: > So here I defined a 'DataObject' type in qapi-schema.json, > it's used to describe the dynamical dictionary/list/string. > > { 'type': 'DataObject', > 'data': { '*key': 'str', '*type': 'str', '*data': ['DataObject'] } }
This is missing '*optional': 'bool'. Also, how do you distinguish these: { 'command': 'query-tpm-types', 'returns': 'TpmType] } { 'command': 'query-tpm-types', 'returns': ['TpmType'] } Could it have to be like this? 'data': { '*key': 'str', '*type': 'str', '*list': 'bool', '*optional': 'bool', '*data': ['DataObject'] } } Can you document, in the commit message or the code, how you avoid infinite loops (possible with optional or list fields)? Paolo > Not all the keys in data will be used. > # List: type > # Dict: key, type > # nested List: type, data > # nested Dict: key, type, data > > The DataObject is described in docs/qmp-full-introspection.txt in > detail. > > The following content gives an example of query-tpm-types: > > ## Define example in qapi-schema.json: > > { 'enum': 'TpmType', 'data': [ 'passthrough' ] } > { 'command': 'query-tpm-types', 'returns': ['TpmType'] } > > ## Returned description: > > { > "name": "query-tpm-types", > "type": "Command", > "returns": [ > { > "type": "TpmType", > "data": [ > { > "type": "passthrough" > } > ] > } > ] > },