|
|
1.1 ! root 1: /* ! 2: * Core Definitions for QAPI Visitor Classes ! 3: * ! 4: * Copyright IBM, Corp. 2011 ! 5: * ! 6: * Authors: ! 7: * Anthony Liguori <[email protected]> ! 8: * ! 9: * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. ! 10: * See the COPYING.LIB file in the top-level directory. ! 11: * ! 12: */ ! 13: #ifndef QAPI_VISITOR_CORE_H ! 14: #define QAPI_VISITOR_CORE_H ! 15: ! 16: #include "qapi/qapi-types-core.h" ! 17: #include <stdlib.h> ! 18: ! 19: typedef struct GenericList ! 20: { ! 21: void *value; ! 22: struct GenericList *next; ! 23: } GenericList; ! 24: ! 25: typedef struct Visitor Visitor; ! 26: ! 27: struct Visitor ! 28: { ! 29: /* Must be set */ ! 30: void (*start_struct)(Visitor *v, void **obj, const char *kind, ! 31: const char *name, size_t size, Error **errp); ! 32: void (*end_struct)(Visitor *v, Error **errp); ! 33: ! 34: void (*start_list)(Visitor *v, const char *name, Error **errp); ! 35: GenericList *(*next_list)(Visitor *v, GenericList **list, Error **errp); ! 36: void (*end_list)(Visitor *v, Error **errp); ! 37: ! 38: void (*type_enum)(Visitor *v, int *obj, const char *strings[], ! 39: const char *kind, const char *name, Error **errp); ! 40: ! 41: void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp); ! 42: void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp); ! 43: void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp); ! 44: void (*type_number)(Visitor *v, double *obj, const char *name, ! 45: Error **errp); ! 46: ! 47: /* May be NULL */ ! 48: void (*start_optional)(Visitor *v, bool *present, const char *name, ! 49: Error **errp); ! 50: void (*end_optional)(Visitor *v, Error **errp); ! 51: ! 52: void (*start_handle)(Visitor *v, void **obj, const char *kind, ! 53: const char *name, Error **errp); ! 54: void (*end_handle)(Visitor *v, Error **errp); ! 55: }; ! 56: ! 57: void visit_start_handle(Visitor *v, void **obj, const char *kind, ! 58: const char *name, Error **errp); ! 59: void visit_end_handle(Visitor *v, Error **errp); ! 60: void visit_start_struct(Visitor *v, void **obj, const char *kind, ! 61: const char *name, size_t size, Error **errp); ! 62: void visit_end_struct(Visitor *v, Error **errp); ! 63: void visit_start_list(Visitor *v, const char *name, Error **errp); ! 64: GenericList *visit_next_list(Visitor *v, GenericList **list, Error **errp); ! 65: void visit_end_list(Visitor *v, Error **errp); ! 66: void visit_start_optional(Visitor *v, bool *present, const char *name, ! 67: Error **errp); ! 68: void visit_end_optional(Visitor *v, Error **errp); ! 69: void visit_type_enum(Visitor *v, int *obj, const char *strings[], ! 70: const char *kind, const char *name, Error **errp); ! 71: void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp); ! 72: void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp); ! 73: void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp); ! 74: void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp); ! 75: ! 76: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.