qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH RFC v3 32/32] qapi-introspect: Hide type names


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH RFC v3 32/32] qapi-introspect: Hide type names
Date: Thu, 06 Aug 2015 08:49:04 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 08/04/2015 09:58 AM, Markus Armbruster wrote:
>> To eliminate the temptation for clients to look up types by name
>> (which are not ABI), replace all type names by meaningless strings.
>> 
>> Reduces output of query-schema by 13 out of 85KiB.
>
> I'm starting to be more in favor of this patch, both for ABI reasons and
> for size shavings.  It definitely looks better than in v2, where munged
> names are just an arbitrary number, and where builtins are not munged.

Yes, much easier to read, and smaller, too.  Review pays :)

>> TODO Either generate comments with the true type names, or provide an
>> option to generate without type name hiding.
>
> See also my comments on 30/32 about whether we should mask array types
> differently (and yes, the lack of comments made it a bit harder to chase
> down types for my commentary in that mail).
>
>> 
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>>  docs/qapi-code-gen.txt     | 14 +++++++-------
>>  scripts/qapi-introspect.py | 24 +++++++++++++++++++++---
>>  2 files changed, 28 insertions(+), 10 deletions(-)
>> 
>
> If we don't do anything to array names, then:
> Reviewed-by: Eric Blake <address@hidden>
>
> If we DO touch array names, I suspect this will look a lot different,
> and have to drop R-b for v4.
>
>> diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt
>> index ed04770..3a78cf4 100644
>> --- a/docs/qapi-code-gen.txt
>> +++ b/docs/qapi-code-gen.txt
>> @@ -868,13 +868,13 @@ Example:
>>  [Uninteresting stuff omitted...]
>>  
>>      const char example_qmp_schema_json[] = "["
>> -        "{ \"arg-type\": \":empty\", \"name\": \"MY_EVENT\", \"meta-type\": 
>> \"event\" }, "
>> -        "{ \"meta-type\": \"builtin\", \"name\": \"int\", \"json-type\": 
>> \"int\" }, "
>> -        "{ \"meta-type\": \"builtin\", \"name\": \"str\", \"json-type\": 
>> \"string\" }, "
>> -        "{ \"meta-type\": \"object\", \"name\": \":empty\", \"members\": [ 
>> ] }, "
>> -        "{ \"meta-type\": \"object\", \"name\": \":obj-my-command-arg\", 
>> \"members\": [{ \"type\": \"UserDefOne\", \"name\": \"arg1\" } ] }, "
>> -        "{ \"meta-type\": \"object\", \"name\": \"UserDefOne\", 
>> \"members\": [{ \"type\": \"int\", \"name\": \"integer\" }, { \"type\": 
>> \"str\", \"name\": \"string\" } ] }, "
>> -        "{ \"arg-type\": \":obj-my-command-arg\", \"ret-type\": 
>> \"UserDefOne\", \"name\": \"my-command\", \"meta-type\": \"command\" } ]";
>> +        "{ \"arg-type\": \"0\", \"meta-type\": \"event\", \"name\": 
>> \"MY_EVENT\" }, "
>> +        "{ \"arg-type\": \"1\", \"meta-type\": \"command\", \"name\": 
>> \"my-command\", \"ret-type\": \"2\" }, "
>> +        "{ \"members\": [ ], \"meta-type\": \"object\", \"name\": \"0\" }, "
>> +        "{ \"members\": [{ \"name\": \"arg1\", \"type\": \"2\" } ], 
>> \"meta-type\": \"object\", \"name\": \"1\" }, "
>> +        "{ \"members\": [{ \"name\": \"integer\", \"type\": \"int\" }, { 
>> \"name\": \"string\", \"type\": \"str\" } ], \"meta-type\": \"object\", 
>> \"name\": \"2\" }, "
>> +        "{ \"json-type\": \"int\", \"meta-type\": \"builtin\", \"name\": 
>> \"int\" }, "
>> +        "{ \"json-type\": \"string\", \"meta-type\": \"builtin\", \"name\": 
>> \"str\" } ]";
>
> Some churn here once you fix the sorting in 30.
>
>> +
>> +    def _name(self, name):
>> +        if name not in self.name_map:
>> +            n = len(self.name_map)
>> +            self.name_map[name] = '%s' % n
>
> When string-izing an integer, isn't it better to use:
>
> self.name_map[name] = '%d' % len(self.name_map)

Yes, will change.

Thanks!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]