[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 02/26] qapi: Clean up cgen() and mcgen()
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 02/26] qapi: Clean up cgen() and mcgen() |
Date: |
Tue, 04 Aug 2015 17:44:11 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Markus Armbruster <address@hidden> writes:
> Commit 05dfb26 added eatspace stripping to mcgen(). Move it to
> cgen(), just in case somebody gets tempted to use cgen() directly
> instead of via mcgen().
>
> cgen() indents blank lines. No such lines get generated right now,
> but fix it anyway.
>
> We use triple-quoted strings for program text, like this:
>
> '''
> Program text
> any number of lines
> '''
>
> Keeps the program text relatively readable, but puts an extra newline
> at either end. mcgen() "fixes" that by dropping the first and last
> line outright. Drop only the newlines.
>
> This unmasks a bug in qapi-commands.py: four quotes instead of three.
> Fix it up.
>
> Output doesn't change
>
> Signed-off-by: Markus Armbruster <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> ---
> scripts/qapi-commands.py | 2 +-
> scripts/qapi.py | 19 ++++++++++++-------
> 2 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
> index ca22acc..ce51408 100644
> --- a/scripts/qapi-commands.py
> +++ b/scripts/qapi-commands.py
> @@ -56,7 +56,7 @@ def gen_sync_call(name, args, ret_type, indent=0):
> name=c_name(name), args=arglist, retval=retval).rstrip()
> if ret_type:
> ret += "\n" + gen_err_check('local_err')
> - ret += "\n" + mcgen(''''
> + ret += "\n" + mcgen('''
> %(marshal_output_call)s
> ''',
>
> marshal_output_call=gen_marshal_output_call(name, ret_type)).rstrip()
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index 06d7fc2..20383ef 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -943,16 +943,21 @@ def pop_indent(indent_amount=4):
> global indent_level
> indent_level -= indent_amount
>
> +# Generate @code with @kwds interpolated.
> +# Obey indent_level, and strip eatspace.
> def cgen(code, **kwds):
> - indent = genindent(indent_level)
> - lines = code.split('\n')
> - lines = map(lambda x: indent + x, lines)
> - return '\n'.join(lines) % kwds + '\n'
> -
> -def mcgen(code, **kwds):
> - raw = cgen('\n'.join(code.split('\n')[1:-1]), **kwds)
> + raw = code % kwds
> + if indent_level:
> + indent = genindent(indent_level)
> + raw = re.subn("^.", indent + '\g<0>', raw, 0, re.MULTILINE)
pylint wants us to use r'\g<0>'. If nothing else comes up, I'll fix
this up for my pull.
> + raw = raw[0]
> return re.sub(re.escape(eatspace) + ' *', '', raw)
>
> +def mcgen(code, **kwds):
> + if code[0] == '\n':
> + code = code[1:]
> + return cgen(code, **kwds)
> +
> def basename(filename):
> return filename.split("/")[-1]
- [Qemu-devel] [PATCH 00/26] qapi: Another round of fixes and cleanups, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 04/26] qapi-event: Clean up how name of enum QAPIEvent is made, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 01/26] qapi: Clarify docs on including the same file multiple times, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 05/26] qapi: Reject -p arguments that break qapi-event.py, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 08/26] qapi: Generate a nicer struct for flat unions, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 10/26] qapi-visit: Replace list implicit_structs by set, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 15/26] qapi: Document shortcoming with union 'data' branch, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 02/26] qapi: Clean up cgen() and mcgen(), Markus Armbruster, 2015/08/04
- Re: [Qemu-devel] [PATCH 02/26] qapi: Clean up cgen() and mcgen(),
Markus Armbruster <=
- [Qemu-devel] [PATCH 07/26] qapi: Fix generated code when flat union has member 'kind', Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 20/26] qapi: Fix to reject union command and event arguments, Markus Armbruster, 2015/08/04
- [Qemu-devel] [PATCH 25/26] qapi-commands: Drop useless initialization, Markus Armbruster, 2015/08/04