Re: [Qemu-devel] [PATCH v5 04/18] qapi: add QAPI visitor core
On Tue, 5 Jul 2011 08:02:31 -0500 Michael Roth mdr...@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 mdr...@linux.vnet.ibm.com --- Makefile.objs |6 +++ configure |1 + qapi/qapi-types-core.h | 21 + qapi/qapi-visit-core.c | 114 qapi/qapi-visit-core.h | 68 5 files changed, 210 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 493c988..0077014 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -372,6 +372,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)) qapi-obj-y has to included in common-obj-y, no? I'd also move this up in this file (where others modulename-obj-y are located). + vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS) diff --git a/configure b/configure index 63156a2..02c552e 100755 --- a/configure +++ b/configure @@ -3486,6 +3486,7 @@ DIRS=tests tests/cris slirp audio block net pc-bios/optionrom DIRS=$DIRS pc-bios/spapr-rtas DIRS=$DIRS roms/seabios roms/vgabios DIRS=$DIRS fsdev ui +DIRS=$DIRS qapi FILES=Makefile tests/Makefile FILES=$FILES tests/cris/Makefile tests/cris/.gdbinit FILES=$FILES pc-bios/optionrom/Makefile pc-bios/keymaps diff --git a/qapi/qapi-types-core.h b/qapi/qapi-types-core.h new file mode 100644 index 000..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 aligu...@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 000..c8a7805 --- /dev/null +++ b/qapi/qapi-visit-core.c @@ -0,0 +1,114 @@ +/* + * Core Definitions for QAPI Visitor Classes + * + * Copyright IBM, Corp. 2011 + * + * Authors: + * Anthony Liguori aligu...@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. + * + */ + +#include qapi/qapi-visit-core.h + +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
Re: [Qemu-devel] [PATCH v5 04/18] qapi: add QAPI visitor core
On 07/07/2011 09:32 AM, Luiz Capitulino wrote: On Tue, 5 Jul 2011 08:02:31 -0500 Michael Rothmdr...@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 Rothmdr...@linux.vnet.ibm.com --- Makefile.objs |6 +++ configure |1 + qapi/qapi-types-core.h | 21 + qapi/qapi-visit-core.c | 114 qapi/qapi-visit-core.h | 68 5 files changed, 210 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 493c988..0077014 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -372,6 +372,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)) qapi-obj-y has to included in common-obj-y, no? I'd also move this up in this file (where others modulename-obj-y are located). Eventually, when we do the full QMP conversion. But for now, only the guest agent pulls these in. I'll move the block up. + vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS) diff --git a/configure b/configure index 63156a2..02c552e 100755 --- a/configure +++ b/configure @@ -3486,6 +3486,7 @@ DIRS=tests tests/cris slirp audio block net pc-bios/optionrom DIRS=$DIRS pc-bios/spapr-rtas DIRS=$DIRS roms/seabios roms/vgabios DIRS=$DIRS fsdev ui +DIRS=$DIRS qapi FILES=Makefile tests/Makefile FILES=$FILES tests/cris/Makefile tests/cris/.gdbinit FILES=$FILES pc-bios/optionrom/Makefile pc-bios/keymaps diff --git a/qapi/qapi-types-core.h b/qapi/qapi-types-core.h new file mode 100644 index 000..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 Liguorialigu...@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 + +#includestdbool.h +#includestdint.h +#include error.h + +#endif diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c new file mode 100644 index 000..c8a7805 --- /dev/null +++ b/qapi/qapi-visit-core.c @@ -0,0 +1,114 @@ +/* + * Core Definitions for QAPI Visitor Classes + * + * Copyright IBM, Corp. 2011 + * + * Authors: + * Anthony Liguorialigu...@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. + * + */ + +#include qapi/qapi-visit-core.h + +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,
[Qemu-devel] [PATCH v5 04/18] qapi: add QAPI visitor core
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 mdr...@linux.vnet.ibm.com --- Makefile.objs |6 +++ configure |1 + qapi/qapi-types-core.h | 21 + qapi/qapi-visit-core.c | 114 qapi/qapi-visit-core.h | 68 5 files changed, 210 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 493c988..0077014 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -372,6 +372,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)) + vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS) diff --git a/configure b/configure index 63156a2..02c552e 100755 --- a/configure +++ b/configure @@ -3486,6 +3486,7 @@ DIRS=tests tests/cris slirp audio block net pc-bios/optionrom DIRS=$DIRS pc-bios/spapr-rtas DIRS=$DIRS roms/seabios roms/vgabios DIRS=$DIRS fsdev ui +DIRS=$DIRS qapi FILES=Makefile tests/Makefile FILES=$FILES tests/cris/Makefile tests/cris/.gdbinit FILES=$FILES pc-bios/optionrom/Makefile pc-bios/keymaps diff --git a/qapi/qapi-types-core.h b/qapi/qapi-types-core.h new file mode 100644 index 000..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 aligu...@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 000..c8a7805 --- /dev/null +++ b/qapi/qapi-visit-core.c @@ -0,0 +1,114 @@ +/* + * Core Definitions for QAPI Visitor Classes + * + * Copyright IBM, Corp. 2011 + * + * Authors: + * Anthony Liguori aligu...@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. + * + */ + +#include qapi/qapi-visit-core.h + +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