qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code
@ 2014-06-10 11:25 Amos Kong
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 1/3] qapi: fix coding style in parameters list Amos Kong
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Amos Kong @ 2014-06-10 11:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: mdroth, armbru, lcapitulino

Not a serious issue, but it's helpful if we can fix it.

V2: split change of scripts/qapi-visit.py to a split patch,
    eat space by using a special char as Markus suggested
V3: update commitlog, update special string, fix of adding
    const replace string by pattern
V4: fix pattern to cleanup special string (Paolo)
V5: fix string checking bug (Luiz), update commitlog (Eric)
    add comments for c_type() function
V6: add is_c_ptr() and fix lost endswith (Markus)

Amos Kong (3):
  qapi: fix coding style in parameters list
  qapi: add const prefix to 'char *' insider c_type()
  qapi: Suppress unwanted space between type and identifier

 scripts/qapi-commands.py |  8 +++-----
 scripts/qapi-visit.py    | 20 ++++++++++----------
 scripts/qapi.py          | 25 +++++++++++++++++++------
 3 files changed, 32 insertions(+), 21 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH v6 1/3] qapi: fix coding style in parameters list
  2014-06-10 11:25 [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Amos Kong
@ 2014-06-10 11:25 ` Amos Kong
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type() Amos Kong
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Amos Kong @ 2014-06-10 11:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: mdroth, armbru, lcapitulino

A space after * when declaring a pointer type is redundant.

Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
---
 scripts/qapi-visit.py | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index 06a79f1..c129697 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -77,7 +77,7 @@ static void visit_type_%(full_name)s_field_%(c_name)s(Visitor *m, %(name)s **obj
 
     ret += mcgen('''
 
-static void visit_type_%(full_name)s_fields(Visitor *m, %(name)s ** obj, Error **errp)
+static void visit_type_%(full_name)s_fields(Visitor *m, %(name)s **obj, Error **errp)
 {
     Error *err = NULL;
 ''',
@@ -186,7 +186,7 @@ def generate_visit_struct(expr):
 
     ret += mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **errp)
+void visit_type_%(name)s(Visitor *m, %(name)s **obj, const char *name, Error **errp)
 {
 ''',
                 name=name)
@@ -201,7 +201,7 @@ void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **
 def generate_visit_list(name, members):
     return mcgen('''
 
-void visit_type_%(name)sList(Visitor *m, %(name)sList ** obj, const char *name, Error **errp)
+void visit_type_%(name)sList(Visitor *m, %(name)sList **obj, const char *name, Error **errp)
 {
     Error *err = NULL;
     GenericList *i, **prev;
@@ -230,7 +230,7 @@ out:
 def generate_visit_enum(name, members):
     return mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s * obj, const char *name, Error **errp)
+void visit_type_%(name)s(Visitor *m, %(name)s *obj, const char *name, Error **errp)
 {
     visit_type_enum(m, (int *)obj, %(name)s_lookup, "%(name)s", name, errp);
 }
@@ -240,7 +240,7 @@ void visit_type_%(name)s(Visitor *m, %(name)s * obj, const char *name, Error **e
 def generate_visit_anon_union(name, members):
     ret = mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **errp)
+void visit_type_%(name)s(Visitor *m, %(name)s **obj, const char *name, Error **errp)
 {
     Error *err = NULL;
 
@@ -327,7 +327,7 @@ def generate_visit_union(expr):
 
     ret += mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **errp)
+void visit_type_%(name)s(Visitor *m, %(name)s **obj, const char *name, Error **errp)
 {
     Error *err = NULL;
 
@@ -399,13 +399,13 @@ def generate_declaration(name, members, genlist=True, builtin_type=False):
     if not builtin_type:
         ret += mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **errp);
+void visit_type_%(name)s(Visitor *m, %(name)s **obj, const char *name, Error **errp);
 ''',
                     name=name)
 
     if genlist:
         ret += mcgen('''
-void visit_type_%(name)sList(Visitor *m, %(name)sList ** obj, const char *name, Error **errp);
+void visit_type_%(name)sList(Visitor *m, %(name)sList **obj, const char *name, Error **errp);
 ''',
                  name=name)
 
@@ -415,7 +415,7 @@ def generate_enum_declaration(name, members, genlist=True):
     ret = ""
     if genlist:
         ret += mcgen('''
-void visit_type_%(name)sList(Visitor *m, %(name)sList ** obj, const char *name, Error **errp);
+void visit_type_%(name)sList(Visitor *m, %(name)sList **obj, const char *name, Error **errp);
 ''',
                      name=name)
 
@@ -424,7 +424,7 @@ void visit_type_%(name)sList(Visitor *m, %(name)sList ** obj, const char *name,
 def generate_decl_enum(name, members, genlist=True):
     return mcgen('''
 
-void visit_type_%(name)s(Visitor *m, %(name)s * obj, const char *name, Error **errp);
+void visit_type_%(name)s(Visitor *m, %(name)s *obj, const char *name, Error **errp);
 ''',
                 name=name)
 
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type()
  2014-06-10 11:25 [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Amos Kong
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 1/3] qapi: fix coding style in parameters list Amos Kong
@ 2014-06-10 11:25 ` Amos Kong
  2014-06-18  3:51   ` Eric Blake
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 3/3] qapi: Suppress unwanted space between type and identifier Amos Kong
  2014-06-19 14:40 ` [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Luiz Capitulino
  3 siblings, 1 reply; 7+ messages in thread
From: Amos Kong @ 2014-06-10 11:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: mdroth, armbru, lcapitulino

It's ugly to add const prefix for parameter type by an if statement
outside c_type(). This patch adds a parameter to do it.

Signed-off-by: Amos Kong <akong@redhat.com>
Suggested-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
---
 scripts/qapi-commands.py | 4 +---
 scripts/qapi.py          | 4 +++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index 7d93d01..34f200a 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -29,9 +29,7 @@ def type_visitor(name):
 def generate_command_decl(name, args, ret_type):
     arglist=""
     for argname, argtype, optional, structured in parse_args(args):
-        argtype = c_type(argtype)
-        if argtype == "char *":
-            argtype = "const char *"
+        argtype = c_type(argtype, is_param=True)
         if optional:
             arglist += "bool has_%s, " % c_var(argname)
         arglist += "%s %s, " % (argtype, c_var(argname))
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 86e9608..dc690bb 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -470,8 +470,10 @@ def find_enum(name):
 def is_enum(name):
     return find_enum(name) != None
 
-def c_type(name):
+def c_type(name, is_param=False):
     if name == 'str':
+        if is_param:
+            return 'const char *'
         return 'char *'
     elif name == 'int':
         return 'int64_t'
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH v6 3/3] qapi: Suppress unwanted space between type and identifier
  2014-06-10 11:25 [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Amos Kong
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 1/3] qapi: fix coding style in parameters list Amos Kong
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type() Amos Kong
@ 2014-06-10 11:25 ` Amos Kong
  2014-06-19 14:40 ` [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Luiz Capitulino
  3 siblings, 0 replies; 7+ messages in thread
From: Amos Kong @ 2014-06-10 11:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: mdroth, armbru, lcapitulino

We always generate a space between type and identifier in parameter
and variable declarations, even when idiomatic C style doesn't have
a space there.  Suppress it.

Signed-off-by: Amos Kong <akong@redhat.com>
---
 scripts/qapi-commands.py |  4 ++--
 scripts/qapi.py          | 23 +++++++++++++++++------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index 34f200a..053ba85 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -102,7 +102,7 @@ def gen_visitor_input_vars_decl(args):
 bool has_%(argname)s = false;
 ''',
                          argname=c_var(argname))
-        if c_type(argtype).endswith("*"):
+        if is_c_ptr(argtype):
             ret += mcgen('''
 %(argtype)s %(argname)s = NULL;
 ''',
@@ -227,7 +227,7 @@ def gen_marshal_input(name, args, ret_type, middle_mode):
 ''')
 
     if ret_type:
-        if c_type(ret_type).endswith("*"):
+        if is_c_ptr(ret_type):
             retval = "    %s retval = NULL;" % c_type(ret_type)
         else:
             retval = "    %s retval;" % c_type(ret_type)
diff --git a/scripts/qapi.py b/scripts/qapi.py
index dc690bb..0079194 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -470,11 +470,17 @@ def find_enum(name):
 def is_enum(name):
     return find_enum(name) != None
 
+eatspace = '\033EATSPACE.'
+
+# A special suffix is added in c_type() for pointer types, and it's
+# stripped in mcgen(). So please notice this when you check the return
+# value of c_type() outside mcgen().
 def c_type(name, is_param=False):
     if name == 'str':
         if is_param:
-            return 'const char *'
-        return 'char *'
+            return 'const char *' + eatspace
+        return 'char *' + eatspace
+
     elif name == 'int':
         return 'int64_t'
     elif (name == 'int8' or name == 'int16' or name == 'int32' or
@@ -488,15 +494,19 @@ def c_type(name, is_param=False):
     elif name == 'number':
         return 'double'
     elif type(name) == list:
-        return '%s *' % c_list_type(name[0])
+        return '%s *%s' % (c_list_type(name[0]), eatspace)
     elif is_enum(name):
         return name
     elif name == None or len(name) == 0:
         return 'void'
     elif name == name.upper():
-        return '%sEvent *' % camel_case(name)
+        return '%sEvent *%s' % (camel_case(name), eatspace)
     else:
-        return '%s *' % name
+        return '%s *%s' % (name, eatspace)
+
+def is_c_ptr(name):
+    suffix = "*" + eatspace
+    return c_type(name).endswith(suffix)
 
 def genindent(count):
     ret = ""
@@ -521,7 +531,8 @@ def cgen(code, **kwds):
     return '\n'.join(lines) % kwds + '\n'
 
 def mcgen(code, **kwds):
-    return cgen('\n'.join(code.split('\n')[1:-1]), **kwds)
+    raw = cgen('\n'.join(code.split('\n')[1:-1]), **kwds)
+    return re.sub(re.escape(eatspace) + ' *', '', raw)
 
 def basename(filename):
     return filename.split("/")[-1]
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type()
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type() Amos Kong
@ 2014-06-18  3:51   ` Eric Blake
  2014-06-18  7:54     ` Amos Kong
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Blake @ 2014-06-18  3:51 UTC (permalink / raw)
  To: Amos Kong, qemu-devel; +Cc: lcapitulino, mdroth, armbru

[-- Attachment #1: Type: text/plain, Size: 1456 bytes --]

On 06/10/2014 05:25 AM, Amos Kong wrote:
> It's ugly to add const prefix for parameter type by an if statement
> outside c_type(). This patch adds a parameter to do it.
> 
> Signed-off-by: Amos Kong <akong@redhat.com>
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> ---
>  scripts/qapi-commands.py | 4 +---
>  scripts/qapi.py          | 4 +++-
>  2 files changed, 4 insertions(+), 4 deletions(-)

Wenchao's series introduces another client that needs this treatment:
https://lists.gnu.org/archive/html/qemu-devel/2014-06/msg01225.html

Depending on what order things get merged in, you may need followup
patches or conflict resolution.

> 
> diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
> index 7d93d01..34f200a 100644
> --- a/scripts/qapi-commands.py
> +++ b/scripts/qapi-commands.py
> @@ -29,9 +29,7 @@ def type_visitor(name):
>  def generate_command_decl(name, args, ret_type):
>      arglist=""
>      for argname, argtype, optional, structured in parse_args(args):
> -        argtype = c_type(argtype)
> -        if argtype == "char *":
> -            argtype = "const char *"
> +        argtype = c_type(argtype, is_param=True)

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type()
  2014-06-18  3:51   ` Eric Blake
@ 2014-06-18  7:54     ` Amos Kong
  0 siblings, 0 replies; 7+ messages in thread
From: Amos Kong @ 2014-06-18  7:54 UTC (permalink / raw)
  To: Eric Blake; +Cc: armbru, lcapitulino, qemu-devel, wenchaoqemu, mdroth

[-- Attachment #1: Type: text/plain, Size: 1770 bytes --]

On Tue, Jun 17, 2014 at 09:51:21PM -0600, Eric Blake wrote:
> On 06/10/2014 05:25 AM, Amos Kong wrote:
> > It's ugly to add const prefix for parameter type by an if statement
> > outside c_type(). This patch adds a parameter to do it.
> > 
> > Signed-off-by: Amos Kong <akong@redhat.com>
> > Suggested-by: Markus Armbruster <armbru@redhat.com>
> > Reviewed-by: Eric Blake <eblake@redhat.com>
> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> > Reviewed-by: Markus Armbruster <armbru@redhat.com>
> > ---
> >  scripts/qapi-commands.py | 4 +---
> >  scripts/qapi.py          | 4 +++-
> >  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> Wenchao's series introduces another client that needs this treatment:
> https://lists.gnu.org/archive/html/qemu-devel/2014-06/msg01225.html
> 
> Depending on what order things get merged in, you may need followup
> patches or conflict resolution.

Thanks for the reminder.

I just checked the patch, c_type() is only used once, and the output
is used insider mcgen().

So it's safe to apply my patchset.

> > diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
> > index 7d93d01..34f200a 100644
> > --- a/scripts/qapi-commands.py
> > +++ b/scripts/qapi-commands.py
> > @@ -29,9 +29,7 @@ def type_visitor(name):
> >  def generate_command_decl(name, args, ret_type):
> >      arglist=""
> >      for argname, argtype, optional, structured in parse_args(args):
> > -        argtype = c_type(argtype)
> > -        if argtype == "char *":
> > -            argtype = "const char *"
> > +        argtype = c_type(argtype, is_param=True)
> 
> -- 
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 



-- 
			Amos.

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code
  2014-06-10 11:25 [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Amos Kong
                   ` (2 preceding siblings ...)
  2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 3/3] qapi: Suppress unwanted space between type and identifier Amos Kong
@ 2014-06-19 14:40 ` Luiz Capitulino
  3 siblings, 0 replies; 7+ messages in thread
From: Luiz Capitulino @ 2014-06-19 14:40 UTC (permalink / raw)
  To: Amos Kong; +Cc: mdroth, qemu-devel, armbru

On Tue, 10 Jun 2014 19:25:50 +0800
Amos Kong <akong@redhat.com> wrote:

> Not a serious issue, but it's helpful if we can fix it.

Applied to the qmp branch, thanks.

> 
> V2: split change of scripts/qapi-visit.py to a split patch,
>     eat space by using a special char as Markus suggested
> V3: update commitlog, update special string, fix of adding
>     const replace string by pattern
> V4: fix pattern to cleanup special string (Paolo)
> V5: fix string checking bug (Luiz), update commitlog (Eric)
>     add comments for c_type() function
> V6: add is_c_ptr() and fix lost endswith (Markus)
> 
> Amos Kong (3):
>   qapi: fix coding style in parameters list
>   qapi: add const prefix to 'char *' insider c_type()
>   qapi: Suppress unwanted space between type and identifier
> 
>  scripts/qapi-commands.py |  8 +++-----
>  scripts/qapi-visit.py    | 20 ++++++++++----------
>  scripts/qapi.py          | 25 +++++++++++++++++++------
>  3 files changed, 32 insertions(+), 21 deletions(-)
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-06-19 19:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-10 11:25 [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Amos Kong
2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 1/3] qapi: fix coding style in parameters list Amos Kong
2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 2/3] qapi: add const prefix to 'char *' insider c_type() Amos Kong
2014-06-18  3:51   ` Eric Blake
2014-06-18  7:54     ` Amos Kong
2014-06-10 11:25 ` [Qemu-devel] [PATCH v6 3/3] qapi: Suppress unwanted space between type and identifier Amos Kong
2014-06-19 14:40 ` [Qemu-devel] [PATCH v6 0/3] qapi: fix coding style in generated code Luiz Capitulino

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).