diff mbox

[RFC,1/5] qapi: Generate a sed script to help eliminate camel_to_upper()

Message ID 1446737402-15597-2-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster Nov. 5, 2015, 3:29 p.m. UTC
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 <armbru@redhat.com>
---
 scripts/qapi.py | 6 ++++++
 1 file changed, 6 insertions(+)
diff mbox

Patch

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