qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: berto@igalia.com, akong@redhat.com, qemu-devel@nongnu.org,
	mdroth@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH RFC 19/19] qapi: New QMP command query-schema for QMP schema introspection
Date: Thu, 23 Apr 2015 15:13:03 +0200	[thread overview]
Message-ID: <20150423131303.GJ5289@noname.redhat.com> (raw)
In-Reply-To: <1427995743-7865-20-git-send-email-armbru@redhat.com>

One question in addition to what Eric already asked:

Am 02.04.2015 um 19:29 hat Markus Armbruster geschrieben:
> +{ 'enum': 'SchemaMetaType',
> +  'data': [ 'builtin', 'enum', 'array', 'object', 'alternate',
> +            'command', 'event' ] }
> +
> +{ 'type': 'SchemaInfoBase',
> +  'data': { 'name': 'str', 'meta-type': 'SchemaMetaType' } }
> +
> +{ 'enum': 'JSONPrimitiveType',
> +  'data': [ 'str', 'int', 'number', 'bool', 'null' ] }
> +
> +{ 'type': 'SchemaInfoBuiltin',
> +  'data': { 'json-type': 'JSONPrimitiveType' } }
> +
> +{ 'type': 'SchemaInfoEnum',
> +  'data': { 'values': ['str'] } }
> +
> +{ 'type': 'SchemaInfoArray',
> +  'data': { 'element-type': 'str' } }
> +
> +{ 'alternate': 'Value',
> +  'data': { 'int': 'int', 'number': 'number', 'str': 'str', 'bool': 'bool' } }
> +
> +{ 'type': 'SchemaInfoObjectMember',
> +  'data': { 'name': 'str', 'type': 'str', '*default': 'Value' } }
> +# @default's type must match @type
> +# can only default simple types, not objects or arrays
> +
> +{ 'type': 'SchemaInfoObjectVariant',
> +  'data': { 'case': 'str',
> +            'members': [ 'SchemaInfoObjectMember' ] } }
> +
> +{ 'type': 'SchemaInfoObject',
> +  'data': { 'members': [ 'SchemaInfoObjectMember' ],
> +            '*discriminator': 'str',
> +            '*variants': [ 'SchemaInfoObjectVariant' ] } }
> +
> +{ 'type': 'SchemaInfoAlternate',
> +  'data': { 'members': [ 'SchemaInfoObjectMember' ] } }

I'm not sure if I understand correctly how this one works. My guess
would be this:

- The elements in members describe the different variants. That is, you
  choose of the members, whereas in SchemaInfoObject all of the members
  exist. Perhaps they should be using different names then?

- The type (= discriminator) of a variant is indirectly specified by the
  'type' of the SchemaInfoObjectMember: This is a QAPI type, but the
  JSON type can be resolved by checking 'meta-type' of the QAPI type
  (and SchemaInfoBuiltin if necessary)

- The 'name' in SchemaInfoObjectMember could be the key name of the
  variant in the alternate definition. However, this name isn't used
  anywhere in the QMP protocol, so maybe it is better kept internal.
  'name' isn't optional, though.

- The 'default' of SchemaInfoObjectMember must be omitted.

Do I understand the intention reasonably right? If so, maybe it would be
better to use a separate type for alternate variants.

Kevin

  parent reply	other threads:[~2015-04-23 13:13 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-02 17:28 [Qemu-devel] [PATCH RFC 00/19] qapi: QMP introspection Markus Armbruster
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 01/19] tests: Add missing dependencies on $(qapi-py) Markus Armbruster
2015-04-02 19:40   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 02/19] qapi: Fix C identifiers generated for names containing '.' Markus Armbruster
2015-04-02 21:48   ` Eric Blake
2015-04-29  7:08     ` Markus Armbruster
2015-04-06 23:25   ` Eric Blake
2015-04-11 18:36     ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 03/19] qapi: Rename _generate_enum_string() to camel_to_upper() Markus Armbruster
2015-04-10 22:17   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 04/19] qapi: Rename generate_enum_full_value() to c_enum_const() Markus Armbruster
2015-04-11 18:37   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 05/19] qapi: Simplify c_enum_const() Markus Armbruster
2015-04-13 14:40   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 06/19] qapi: Use c_enum_const() in generate_alternate_qtypes() Markus Armbruster
2015-04-13 19:03   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 07/19] qapi: Move camel_to_upper(), c_enum_const() to closely related code Markus Armbruster
2015-04-13 19:06   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 08/19] qapi: qapi-event.py option -b does nothing, drop it Markus Armbruster
2015-04-13 19:07   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 09/19] qapi: qapi-commands.py option --type is unused, " Markus Armbruster
2015-04-13 19:12   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 10/19] qapi: Factor parse_command_line() out of the generators Markus Armbruster
2015-04-13 19:14   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 11/19] qapi: Fix generators to report command line errors decently Markus Armbruster
2015-04-13 19:15   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 12/19] qapi: Turn generators' mandatory option -i into an argument Markus Armbruster
2015-04-13 19:17   ` Eric Blake
2015-04-29  7:11     ` Markus Armbruster
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 13/19] qapi: Factor open_output(), close_output() out of generators Markus Armbruster
2015-04-13 19:44   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 14/19] qapi: Drop pointless flush() before close() Markus Armbruster
2015-04-13 20:29   ` Eric Blake
2015-04-02 17:28 ` [Qemu-devel] [PATCH RFC 15/19] qapi: Inline gen_command_decl_prologue(), gen_command_def_prologue() Markus Armbruster
2015-04-13 20:34   ` Eric Blake
2015-04-02 17:29 ` [Qemu-devel] [PATCH RFC 16/19] qobject: Clean up around qtype_code Markus Armbruster
2015-04-14  3:32   ` Eric Blake
2015-04-02 17:29 ` [Qemu-devel] [PATCH RFC 17/19] qobject: Add a special null QObject Markus Armbruster
2015-04-14  3:44   ` Eric Blake
2015-04-29  7:15     ` Markus Armbruster
2015-04-02 17:29 ` [Qemu-devel] [PATCH RFC 18/19] json-parser: Fix to recognize null Markus Armbruster
2015-04-14  3:45   ` Eric Blake
2015-04-02 17:29 ` [Qemu-devel] [PATCH RFC 19/19] qapi: New QMP command query-schema for QMP schema introspection Markus Armbruster
2015-04-10 23:06   ` Eric Blake
2015-04-15  9:16     ` Alberto Garcia
2015-04-15 12:56       ` Eric Blake
2015-04-23 12:55         ` Kevin Wolf
2015-04-23 19:29           ` Eric Blake
2015-04-29  8:46     ` Markus Armbruster
2015-04-23 13:13   ` Kevin Wolf [this message]
2015-04-29  9:02     ` Markus Armbruster
2015-05-01 21:41   ` Eric Blake
2015-05-04  7:17     ` Markus Armbruster
2015-04-02 19:29 ` [Qemu-devel] [PATCH RFC 00/19] qapi: QMP introspection Eric Blake
2015-04-06 23:20 ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150423131303.GJ5289@noname.redhat.com \
    --to=kwolf@redhat.com \
    --cc=akong@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berto@igalia.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).