All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: aliguori@linux.vnet.ibm.com, agl@linux.vnet.ibm.com,
	qemu-devel@nongnu.org, Jes.Sorensen@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 04/21] qapi: add QAPI visitor core
Date: Wed, 15 Jun 2011 09:54:20 -0500	[thread overview]
Message-ID: <4DF8C79C.3090802@linux.vnet.ibm.com> (raw)
In-Reply-To: <20110615113336.475a60b9@doriath>

On 06/15/2011 09:33 AM, Luiz Capitulino wrote:
> On Mon, 13 Jun 2011 21:31:09 -0500
> Michael Roth<mdroth@linux.vnet.ibm.com>  wrote:
>
>> Base definitions/includes for Visiter interface used by generated
>> visiter/marshalling code.
>>
>> Includes a GenericList type. Our lists require an embedded element.
>> Since these types are generated, if you want to use them in a different
>> type of data structure, there's no easy way to add another embedded
>> element. The solution is to have non-embedded lists and that what this is.
>>
>> Signed-off-by: Michael Roth<mdroth@linux.vnet.ibm.com>
>> ---
>>   Makefile.objs          |    6 +++
>>   qapi/qapi-types-core.h |   21 ++++++++++
>>   qapi/qapi-visit-core.c |  101 ++++++++++++++++++++++++++++++++++++++++++++++++
>>   qapi/qapi-visit-core.h |   68 ++++++++++++++++++++++++++++++++
>>   4 files changed, 196 insertions(+), 0 deletions(-)
>>   create mode 100644 qapi/qapi-types-core.h
>>   create mode 100644 qapi/qapi-visit-core.c
>>   create mode 100644 qapi/qapi-visit-core.h
>>
>> diff --git a/Makefile.objs b/Makefile.objs
>> index a7807e8..68d7b5a 100644
>> --- a/Makefile.objs
>> +++ b/Makefile.objs
>> @@ -364,6 +364,12 @@ endif
>>
>>   libcacard-y = cac.o event.o vcard.o vreader.o vcard_emul_nss.o vcard_emul_type.o card_7816.o
>>
>> +######################################################################
>> +# qapi
>> +
>> +qapi-nested-y = qapi-visit-core.o
>> +qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y))
>
> To build this I have to add qapi-obj-y to common-obj-y and add the
> qapi directory to the DIR variable in configure (so that it builds
> in a different directory).

Yah, nobody actually uses these right now except the unit tests/guest 
agent so for test builds you have to manually add qapi-obj-y to another 
target like qemu-img. I'll move the configure change to this patch in 
the next run.

>
> I saw that you send the configure change in a different patch, but it
> has to be done here.
>
>> +
>>   vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
>>
>>   vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
>> diff --git a/qapi/qapi-types-core.h b/qapi/qapi-types-core.h
>> new file mode 100644
>> index 0000000..de733ab
>> --- /dev/null
>> +++ b/qapi/qapi-types-core.h
>> @@ -0,0 +1,21 @@
>> +/*
>> + * Core Definitions for QAPI-generated Types
>> + *
>> + * Copyright IBM, Corp. 2011
>> + *
>> + * Authors:
>> + *  Anthony Liguori<aliguori@us.ibm.com>
>> + *
>> + * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
>> + * See the COPYING.LIB file in the top-level directory.
>> + *
>> + */
>> +
>> +#ifndef QAPI_TYPES_CORE_H
>> +#define QAPI_TYPES_CORE_H
>> +
>> +#include<stdbool.h>
>> +#include<stdint.h>
>> +#include "error.h"
>> +
>> +#endif
>> diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c
>> new file mode 100644
>> index 0000000..948818e
>> --- /dev/null
>> +++ b/qapi/qapi-visit-core.c
>> @@ -0,0 +1,101 @@
>> +#include "qapi/qapi-visit-core.h"
>
> No license info.
>

Doh! Something about the term "copyright header" frequently causes me to 
disregard non-.h files. These will all get fixed in the next run.

>> +
>> +void visit_start_handle(Visitor *v, void **obj, const char *kind, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)&&  v->start_handle) {
>> +        v->start_handle(v, obj, kind, name, errp);
>> +    }
>> +}
>> +
>> +void visit_end_handle(Visitor *v, Error **errp)
>> +{
>> +    if (!error_is_set(errp)&&  v->end_handle) {
>> +        v->end_handle(v, errp);
>> +    }
>> +}
>> +
>> +void visit_start_struct(Visitor *v, void **obj, const char *kind, const char *name, size_t size, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->start_struct(v, obj, kind, name, size, errp);
>> +    }
>> +}
>> +
>> +void visit_end_struct(Visitor *v, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->end_struct(v, errp);
>> +    }
>> +}
>> +
>> +void visit_start_list(Visitor *v, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->start_list(v, name, errp);
>> +    }
>> +}
>> +
>> +GenericList *visit_next_list(Visitor *v, GenericList **list, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        return v->next_list(v, list, errp);
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>> +void visit_end_list(Visitor *v, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->end_list(v, errp);
>> +    }
>> +}
>> +
>> +void visit_start_optional(Visitor *v, bool *present, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)&&  v->start_optional) {
>> +        v->start_optional(v, present, name, errp);
>> +    }
>> +}
>> +
>> +void visit_end_optional(Visitor *v, Error **errp)
>> +{
>> +    if (!error_is_set(errp)&&  v->end_optional) {
>> +        v->end_optional(v, errp);
>> +    }
>> +}
>> +
>> +void visit_type_enum(Visitor *v, int *obj, const char *kind, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->type_enum(v, obj, kind, name, errp);
>> +    }
>> +}
>> +
>> +void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->type_int(v, obj, name, errp);
>> +    }
>> +}
>> +
>> +void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->type_bool(v, obj, name, errp);
>> +    }
>> +}
>> +
>> +void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->type_str(v, obj, name, errp);
>> +    }
>> +}
>> +
>> +void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp)
>> +{
>> +    if (!error_is_set(errp)) {
>> +        v->type_number(v, obj, name, errp);
>> +    }
>> +}
>> diff --git a/qapi/qapi-visit-core.h b/qapi/qapi-visit-core.h
>> new file mode 100644
>> index 0000000..8350a6d
>> --- /dev/null
>> +++ b/qapi/qapi-visit-core.h
>> @@ -0,0 +1,68 @@
>> +/*
>> + * Core Definitions for QAPI Visitor Classes
>> + *
>> + * Copyright IBM, Corp. 2011
>> + *
>> + * Authors:
>> + *  Anthony Liguori<aliguori@us.ibm.com>
>> + *
>> + * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
>> + * See the COPYING.LIB file in the top-level directory.
>> + *
>> + */
>> +#ifndef QAPI_VISITOR_CORE_H
>> +#define QAPI_VISITOR_CORE_H
>> +
>> +#include "qapi/qapi-types-core.h"
>> +#include "error.h"
>> +#include<stdlib.h>
>> +
>> +typedef struct GenericList
>> +{
>> +    void *value;
>> +    struct GenericList *next;
>> +} GenericList;
>> +
>> +typedef struct Visitor Visitor;
>> +
>> +struct Visitor
>> +{
>> +    /* Must be set */
>> +    void (*start_struct)(Visitor *v, void **obj, const char *kind, const char *name, size_t size, Error **errp);
>> +    void (*end_struct)(Visitor *v, Error **errp);
>> +
>> +    void (*start_list)(Visitor *v, const char *name, Error **errp);
>> +    GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp);
>> +    void (*end_list)(Visitor *v, Error **errp);
>> +
>> +    void (*type_enum)(Visitor *v, int *obj, const char *kind, const char *name, Error **errp);
>> +
>> +    void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp);
>> +    void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp);
>> +    void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp);
>> +    void (*type_number)(Visitor *v, double *obj, const char *name, Error **errp);
>> +
>> +    /* May be NULL */
>> +    void (*start_optional)(Visitor *v, bool *present, const char *name, Error **errp);
>> +    void (*end_optional)(Visitor *v, Error **errp);
>> +
>> +    void (*start_handle)(Visitor *v, void **obj, const char *kind, const char *name, Error **errp);
>> +    void (*end_handle)(Visitor *v, Error **errp);
>> +};
>> +
>> +void visit_start_handle(Visitor *v, void **obj, const char *kind, const char *name, Error **errp);
>> +void visit_end_handle(Visitor *v, Error **errp);
>> +void visit_start_struct(Visitor *v, void **obj, const char *kind, const char *name, size_t size, Error **errp);
>> +void visit_end_struct(Visitor *v, Error **errp);
>> +void visit_start_list(Visitor *v, const char *name, Error **errp);
>> +GenericList *visit_next_list(Visitor *v, GenericList **list, Error **errp);
>> +void visit_end_list(Visitor *v, Error **errp);
>> +void visit_start_optional(Visitor *v, bool *present, const char *name, Error **errp);
>> +void visit_end_optional(Visitor *v, Error **errp);
>> +void visit_type_enum(Visitor *v, int *obj, const char *kind, const char *name, Error **errp);
>> +void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp);
>> +void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp);
>> +void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp);
>> +void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp);
>> +
>> +#endif
>

  reply	other threads:[~2011-06-15 14:55 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-14  2:31 [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v3 Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 01/21] Add hard build dependency on glib Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 02/21] qlist: add qlist_first()/qlist_next() Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 03/21] qapi: add module init types for qapi Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 04/21] qapi: add QAPI visitor core Michael Roth
2011-06-15 14:33   ` Luiz Capitulino
2011-06-15 14:54     ` Michael Roth [this message]
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 05/21] qapi: add QMP input visitor Michael Roth
2011-06-15 16:11   ` Luiz Capitulino
2011-06-15 16:56     ` Michael Roth
2011-06-15 17:02       ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 06/21] qapi: add QMP output visitor Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 07/21] qapi: add QAPI dealloc visitor Michael Roth
2011-06-15 18:25   ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 08/21] qapi: add QMP command registration/lookup functions Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 09/21] qapi: add QMP dispatch functions Michael Roth
2011-06-15 19:33   ` Luiz Capitulino
2011-06-15 19:45     ` Anthony Liguori
2011-06-15 20:12       ` Luiz Capitulino
2011-06-15 20:45         ` Michael Roth
2011-06-15 20:48           ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 10/21] qapi: add ordereddict.py helper library Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 11/21] qapi: add qapi.py helper libraries Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 12/21] qapi: add qapi-types.py code generator Michael Roth
2011-06-15 19:11   ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 13/21] qapi: add qapi-visit.py " Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 14/21] qapi: add qapi-commands.py " Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 15/21] qapi: test schema used for unit tests Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 16/21] qapi: add test-visitor, tests for gen. visitor code Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 17/21] qapi: configure, Fix build issue when using seperate build dir Michael Roth
2011-06-15 19:34   ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 18/21] qapi: Makefile changes to build test-visitor Michael Roth
2011-06-15 19:35   ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 19/21] qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code Michael Roth
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 20/21] qapi: Makefile changes to build test-qmp-commands Michael Roth
2011-06-15 19:35   ` Luiz Capitulino
2011-06-14  2:31 ` [Qemu-devel] [PATCH v3 21/21] qapi: add QAPI code generation documentation Michael Roth

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=4DF8C79C.3090802@linux.vnet.ibm.com \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=Jes.Sorensen@redhat.com \
    --cc=agl@linux.vnet.ibm.com \
    --cc=aliguori@linux.vnet.ibm.com \
    --cc=lcapitulino@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.