qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH RFC 1/5] qapi: Generate a sed script to help elimina


From: Markus Armbruster
Subject: [Qemu-devel] [PATCH RFC 1/5] qapi: Generate a sed script to help eliminate camel_to_upper()
Date: Thu, 5 Nov 2015 16:29:58 +0100

Temporary patch, will be reverted right away.

Out of laziness, generate it right into the C code, in comments.

To generate the sed script, use

    $ make
    $ make check
    $ enum_gen_files='qapi-event.c qapi-types.c 
qga/qapi-generated/qga-qapi-types.c tests/test-qapi-event.c 
tests/test-qapi-types.c'
    $ sed -n 's,// @@@ ,,p' $enum_gen_files >enum-mangle.sed

To find the files to patch, use

    $ enum_mangle_regexp=`sed -n 's,// ### ,,p' $enum_gen_files | tr '\n' '|' | 
sed 's/|$//'`
    $ git-grep -El "$enum_mangle_regexp" $srcdir >enum-mangle-files

where $srcdir is the root of your source tree.

To patch them, use

    $ xargs sed -ri --file enum-mangle.sed <enum-mangle-files

Signed-off-by: Markus Armbruster <address@hidden>
---
 scripts/qapi.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 843e364..c2e3057 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1517,20 +1517,26 @@ def gen_enum_lookup(name, values, prefix=None):
     ret = mcgen('''
 
 const char *const %(c_name)s_lookup[] = {
+// ### %(prefix)s
 ''',
+                prefix=camel_to_upper(prefix or name),
                 c_name=c_name(name))
     for value in values:
         index = c_enum_const(name, value, prefix)
         ret += mcgen('''
     [%(index)s] = "%(value)s",
+// @@@ s/(^|[^A-Za-z0-9_])%(index)s($|[^A-Za-z0-9_])/\\1%(new)s\\2/g
 ''',
+                     new=c_name((prefix or name) + '_' + value),
                      index=index, value=value)
 
     max_index = c_enum_const(name, 'MAX', prefix)
     ret += mcgen('''
     [%(max_index)s] = NULL,
+// @@@ s/(^|[^A-Za-z0-9_])%(max_index)s($|[^A-Za-z0-9_])/\\1%(new)s\\2/g
 };
 ''',
+                 new=c_name((prefix or name) + '_' + 'MAX'),
                  max_index=max_index)
     return ret
 
-- 
2.4.3




reply via email to

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