All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com, ehabkost@redhat.com, crosa@redhat.com
Subject: Re: [PATCH 10/11] qapi/commands: Simplify command registry generation
Date: Thu, 14 Jan 2021 21:15:50 -0500	[thread overview]
Message-ID: <608f3779-6266-00fc-328f-6eac272a84c0@redhat.com> (raw)
In-Reply-To: <20201218205407.1326907-11-armbru@redhat.com>

On 12/18/20 3:54 PM, Markus Armbruster wrote:
> QAPISchemaGenCommandVisitor.visit_command() needs to generate the
> marshalling function into the current module, and also generate its
> registration into the ./init system module.  The latter is done
> somewhat awkwardly: .__init__() creates a QAPIGenCCode that will not
> be written out, each .visit_command() adds its registration to it, and
> .visit_end() copies its contents into the ./init module it creates.
> 
> Instead provide the means to temporarily switch to another module.
> Create the ./init module in .visit_begin(), and generate its initial
> part.  Add registrations to it in .visit_command().  Finish it in
> .visit_end().
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>   scripts/qapi/commands.py | 49 ++++++++++++++++++----------------------
>   1 file changed, 22 insertions(+), 27 deletions(-)
> 
> diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py
> index 4911166339..396485cc1a 100644
> --- a/scripts/qapi/commands.py
> +++ b/scripts/qapi/commands.py
> @@ -23,7 +23,6 @@ from typing import (
>   from .common import c_name, mcgen
>   from .gen import (
>       QAPIGenC,
> -    QAPIGenCCode,
>       QAPISchemaModularCVisitor,
>       build_params,
>       ifcontext,
> @@ -237,28 +236,11 @@ def gen_register_command(name: str,
>       return ret
>   
>   
> -def gen_registry(registry: str, prefix: str) -> str:
> -    ret = mcgen('''
> -
> -void %(c_prefix)sqmp_init_marshal(QmpCommandList *cmds)
> -{
> -    QTAILQ_INIT(cmds);
> -
> -''',
> -                c_prefix=c_name(prefix, protect=False))
> -    ret += registry
> -    ret += mcgen('''
> -}
> -''')
> -    return ret
> -
> -
>   class QAPISchemaGenCommandVisitor(QAPISchemaModularCVisitor):
>       def __init__(self, prefix: str):
>           super().__init__(
>               prefix, 'qapi-commands',
>               ' * Schema-defined QAPI/QMP commands', None, __doc__)
> -        self._regy = QAPIGenCCode(None)
>           self._visited_ret_types: Dict[QAPIGenC, Set[QAPISchemaType]] = {}
>   
>       def _begin_user_module(self, name: str) -> None:
> @@ -285,7 +267,7 @@ class QAPISchemaGenCommandVisitor(QAPISchemaModularCVisitor):
>   ''',
>                                types=types))
>   
> -    def visit_end(self) -> None:
> +    def visit_begin(self, schema) -> None:

visit_begin(self, schema: QAPISchema) -> None: ...

:~)



  reply	other threads:[~2021-01-15  2:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-18 20:53 [PATCH 00/11] Drop support for QAPIGen without a file name Markus Armbruster
2020-12-18 20:53 ` [PATCH 01/11] qapi/commands: assert arg_type is not None Markus Armbruster
2020-12-18 20:53 ` [PATCH 02/11] qapi/events: fix visit_event typing Markus Armbruster
2020-12-18 20:53 ` [PATCH 03/11] qapi/main: handle theoretical None-return from re.match() Markus Armbruster
2020-12-18 20:54 ` [PATCH 04/11] qapi/gen: assert that _start_if is not None in _wrap_ifcond Markus Armbruster
2020-12-18 20:54 ` [PATCH 05/11] qapi/gen: use './builtin' for the built-in module name Markus Armbruster
2020-12-18 20:54 ` [PATCH 06/11] qapi/gen: write _genc/_genh access shims Markus Armbruster
2020-12-18 20:54 ` [PATCH 07/11] qapi/gen: Replace ._begin_system_module() Markus Armbruster
2020-12-18 20:54 ` [PATCH 08/11] qapi/gen: Expose a single module name space Markus Armbruster
2020-12-18 20:54 ` [PATCH 09/11] qapi/gen: Support for switching to another module temporarily Markus Armbruster
2021-01-15  2:07   ` John Snow
2020-12-18 20:54 ` [PATCH 10/11] qapi/commands: Simplify command registry generation Markus Armbruster
2021-01-15  2:15   ` John Snow [this message]
2020-12-18 20:54 ` [PATCH 11/11] qapi/gen: Drop support for QAPIGen without a file name Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=608f3779-6266-00fc-328f-6eac272a84c0@redhat.com \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.