2 * Core Definitions for QAPI Visitor Classes
4 * Copyright IBM, Corp. 2011
7 * Anthony Liguori <aliguori@us.ibm.com>
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.
14 #include "qapi/qapi-visit-core.h"
16 void visit_start_handle(Visitor
*v
, void **obj
, const char *kind
, const char *name
, Error
**errp
)
18 if (!error_is_set(errp
) && v
->start_handle
) {
19 v
->start_handle(v
, obj
, kind
, name
, errp
);
23 void visit_end_handle(Visitor
*v
, Error
**errp
)
25 if (!error_is_set(errp
) && v
->end_handle
) {
26 v
->end_handle(v
, errp
);
30 void visit_start_struct(Visitor
*v
, void **obj
, const char *kind
, const char *name
, size_t size
, Error
**errp
)
32 if (!error_is_set(errp
)) {
33 v
->start_struct(v
, obj
, kind
, name
, size
, errp
);
37 void visit_end_struct(Visitor
*v
, Error
**errp
)
39 if (!error_is_set(errp
)) {
40 v
->end_struct(v
, errp
);
44 void visit_start_list(Visitor
*v
, const char *name
, Error
**errp
)
46 if (!error_is_set(errp
)) {
47 v
->start_list(v
, name
, errp
);
51 GenericList
*visit_next_list(Visitor
*v
, GenericList
**list
, Error
**errp
)
53 if (!error_is_set(errp
)) {
54 return v
->next_list(v
, list
, errp
);
60 void visit_end_list(Visitor
*v
, Error
**errp
)
62 if (!error_is_set(errp
)) {
67 void visit_start_optional(Visitor
*v
, bool *present
, const char *name
, Error
**errp
)
69 if (!error_is_set(errp
) && v
->start_optional
) {
70 v
->start_optional(v
, present
, name
, errp
);
74 void visit_end_optional(Visitor
*v
, Error
**errp
)
76 if (!error_is_set(errp
) && v
->end_optional
) {
77 v
->end_optional(v
, errp
);
81 void visit_type_enum(Visitor
*v
, int *obj
, const char *kind
, const char *name
, Error
**errp
)
83 if (!error_is_set(errp
)) {
84 v
->type_enum(v
, obj
, kind
, name
, errp
);
88 void visit_type_int(Visitor
*v
, int64_t *obj
, const char *name
, Error
**errp
)
90 if (!error_is_set(errp
)) {
91 v
->type_int(v
, obj
, name
, errp
);
95 void visit_type_bool(Visitor
*v
, bool *obj
, const char *name
, Error
**errp
)
97 if (!error_is_set(errp
)) {
98 v
->type_bool(v
, obj
, name
, errp
);
102 void visit_type_str(Visitor
*v
, char **obj
, const char *name
, Error
**errp
)
104 if (!error_is_set(errp
)) {
105 v
->type_str(v
, obj
, name
, errp
);
111 void visit_type_number(Visitor
*v
, double *obj
, const char *name
, Error
**errp
)
113 if (!error_is_set(errp
)) {
114 v
->type_number(v
, obj
, name
, errp
);