1 | /* AUTOMATICALLY GENERATED, DO NOT MODIFY */ |
2 | |
3 | /* |
4 | * Schema-defined QAPI visitors |
5 | * |
6 | * Copyright IBM, Corp. 2011 |
7 | * Copyright (C) 2014-2018 Red Hat, Inc. |
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 | #include "qemu/osdep.h" |
14 | #include "qapi/error.h" |
15 | #include "qapi/qmp/qerror.h" |
16 | #include "qapi-visit-common.h" |
17 | |
18 | void visit_type_IoOperationType(Visitor *v, const char *name, IoOperationType *obj, Error **errp) |
19 | { |
20 | int value = *obj; |
21 | visit_type_enum(v, name, &value, &IoOperationType_lookup, errp); |
22 | *obj = value; |
23 | } |
24 | |
25 | void visit_type_OnOffAuto(Visitor *v, const char *name, OnOffAuto *obj, Error **errp) |
26 | { |
27 | int value = *obj; |
28 | visit_type_enum(v, name, &value, &OnOffAuto_lookup, errp); |
29 | *obj = value; |
30 | } |
31 | |
32 | void visit_type_OnOffSplit(Visitor *v, const char *name, OnOffSplit *obj, Error **errp) |
33 | { |
34 | int value = *obj; |
35 | visit_type_enum(v, name, &value, &OnOffSplit_lookup, errp); |
36 | *obj = value; |
37 | } |
38 | |
39 | void visit_type_String_members(Visitor *v, String *obj, Error **errp) |
40 | { |
41 | Error *err = NULL; |
42 | |
43 | visit_type_str(v, "str" , &obj->str, &err); |
44 | if (err) { |
45 | goto out; |
46 | } |
47 | |
48 | out: |
49 | error_propagate(errp, err); |
50 | } |
51 | |
52 | void visit_type_String(Visitor *v, const char *name, String **obj, Error **errp) |
53 | { |
54 | Error *err = NULL; |
55 | |
56 | visit_start_struct(v, name, (void **)obj, sizeof(String), &err); |
57 | if (err) { |
58 | goto out; |
59 | } |
60 | if (!*obj) { |
61 | goto out_obj; |
62 | } |
63 | visit_type_String_members(v, *obj, &err); |
64 | if (err) { |
65 | goto out_obj; |
66 | } |
67 | visit_check_struct(v, &err); |
68 | out_obj: |
69 | visit_end_struct(v, (void **)obj); |
70 | if (err && visit_is_input(v)) { |
71 | qapi_free_String(*obj); |
72 | *obj = NULL; |
73 | } |
74 | out: |
75 | error_propagate(errp, err); |
76 | } |
77 | |
78 | void visit_type_StrOrNull(Visitor *v, const char *name, StrOrNull **obj, Error **errp) |
79 | { |
80 | Error *err = NULL; |
81 | |
82 | visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj), |
83 | &err); |
84 | if (err) { |
85 | goto out; |
86 | } |
87 | if (!*obj) { |
88 | goto out_obj; |
89 | } |
90 | switch ((*obj)->type) { |
91 | case QTYPE_QSTRING: |
92 | visit_type_str(v, name, &(*obj)->u.s, &err); |
93 | break; |
94 | case QTYPE_QNULL: |
95 | visit_type_null(v, name, &(*obj)->u.n, &err); |
96 | break; |
97 | case QTYPE_NONE: |
98 | abort(); |
99 | default: |
100 | error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null" , |
101 | "StrOrNull" ); |
102 | } |
103 | out_obj: |
104 | visit_end_alternate(v, (void **)obj); |
105 | if (err && visit_is_input(v)) { |
106 | qapi_free_StrOrNull(*obj); |
107 | *obj = NULL; |
108 | } |
109 | out: |
110 | error_propagate(errp, err); |
111 | } |
112 | |
113 | void visit_type_OffAutoPCIBAR(Visitor *v, const char *name, OffAutoPCIBAR *obj, Error **errp) |
114 | { |
115 | int value = *obj; |
116 | visit_type_enum(v, name, &value, &OffAutoPCIBAR_lookup, errp); |
117 | *obj = value; |
118 | } |
119 | |
120 | void visit_type_PCIELinkSpeed(Visitor *v, const char *name, PCIELinkSpeed *obj, Error **errp) |
121 | { |
122 | int value = *obj; |
123 | visit_type_enum(v, name, &value, &PCIELinkSpeed_lookup, errp); |
124 | *obj = value; |
125 | } |
126 | |
127 | void visit_type_PCIELinkWidth(Visitor *v, const char *name, PCIELinkWidth *obj, Error **errp) |
128 | { |
129 | int value = *obj; |
130 | visit_type_enum(v, name, &value, &PCIELinkWidth_lookup, errp); |
131 | *obj = value; |
132 | } |
133 | |
134 | void visit_type_StringList(Visitor *v, const char *name, StringList **obj, Error **errp) |
135 | { |
136 | Error *err = NULL; |
137 | StringList *tail; |
138 | size_t size = sizeof(**obj); |
139 | |
140 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
141 | if (err) { |
142 | goto out; |
143 | } |
144 | |
145 | for (tail = *obj; tail; |
146 | tail = (StringList *)visit_next_list(v, (GenericList *)tail, size)) { |
147 | visit_type_String(v, NULL, &tail->value, &err); |
148 | if (err) { |
149 | break; |
150 | } |
151 | } |
152 | |
153 | if (!err) { |
154 | visit_check_list(v, &err); |
155 | } |
156 | visit_end_list(v, (void **)obj); |
157 | if (err && visit_is_input(v)) { |
158 | qapi_free_StringList(*obj); |
159 | *obj = NULL; |
160 | } |
161 | out: |
162 | error_propagate(errp, err); |
163 | } |
164 | |
165 | /* Dummy declaration to prevent empty .o file */ |
166 | char qapi_dummy_qapi_visit_common_c; |
167 | |