diff mbox

[RFC,v2,46/47] qapi-introspect: Map all integer types to 'int'

Message ID 1435782155-31412-47-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster July 1, 2015, 8:22 p.m. UTC
How many bits we use internally is an implementation detail.  It could
be pressed into external interface service as a very approximate range
information, but that's probably a bad idea.  If we need range
information, we better do it properly.

Reduces output of query-schema by a negligible 0.5 out of 80KiB.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 scripts/qapi-introspect.py | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Eric Blake July 24, 2015, 3:33 a.m. UTC | #1
On 07/01/2015 02:22 PM, Markus Armbruster wrote:
> How many bits we use internally is an implementation detail.  It could
> be pressed into external interface service as a very approximate range
> information, but that's probably a bad idea.  If we need range
> information, we better do it properly.
> 
> Reduces output of query-schema by a negligible 0.5 out of 80KiB.

But also makes us more conservative - it's easier to add things later
than to be forced to support forever; and mapping everything to 'int' in
introspection lets us change from 'int8' to 'uint8' internally without
affecting introspection-visible API.  I'm in favor of this for more than
just the string size savings.

> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  scripts/qapi-introspect.py | 7 +++++++
>  1 file changed, 7 insertions(+)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py
> index e7efc4a..961fe88 100644
> --- a/scripts/qapi-introspect.py
> +++ b/scripts/qapi-introspect.py
> @@ -46,6 +46,13 @@ char %(c_name)s[] = "["
>          self.used_types = None
>  
>      def _use_type(self, typ):
> +        # Map the various integer types to plain int
> +        if typ.json_type() == 'int':
> +            typ = self.schema.lookup_type('int')
> +        elif isinstance(typ, QAPISchemaArrayType) \
> +             and typ.element_type.json_type() == 'int':
> +            typ = self.schema.lookup_type('intList')
> +        # Add type to work queue if new
>          if typ not in self.used_types:
>              self.used_types.append(typ)
>          return typ.name
>
diff mbox

Patch

diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py
index e7efc4a..961fe88 100644
--- a/scripts/qapi-introspect.py
+++ b/scripts/qapi-introspect.py
@@ -46,6 +46,13 @@  char %(c_name)s[] = "["
         self.used_types = None
 
     def _use_type(self, typ):
+        # Map the various integer types to plain int
+        if typ.json_type() == 'int':
+            typ = self.schema.lookup_type('int')
+        elif isinstance(typ, QAPISchemaArrayType) \
+             and typ.element_type.json_type() == 'int':
+            typ = self.schema.lookup_type('intList')
+        # Add type to work queue if new
         if typ not in self.used_types:
             self.used_types.append(typ)
         return typ.name