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-tpm.h" |
17 | |
18 | void visit_type_TpmModel(Visitor *v, const char *name, TpmModel *obj, Error **errp) |
19 | { |
20 | int value = *obj; |
21 | visit_type_enum(v, name, &value, &TpmModel_lookup, errp); |
22 | *obj = value; |
23 | } |
24 | |
25 | void visit_type_TpmModelList(Visitor *v, const char *name, TpmModelList **obj, Error **errp) |
26 | { |
27 | Error *err = NULL; |
28 | TpmModelList *tail; |
29 | size_t size = sizeof(**obj); |
30 | |
31 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
32 | if (err) { |
33 | goto out; |
34 | } |
35 | |
36 | for (tail = *obj; tail; |
37 | tail = (TpmModelList *)visit_next_list(v, (GenericList *)tail, size)) { |
38 | visit_type_TpmModel(v, NULL, &tail->value, &err); |
39 | if (err) { |
40 | break; |
41 | } |
42 | } |
43 | |
44 | if (!err) { |
45 | visit_check_list(v, &err); |
46 | } |
47 | visit_end_list(v, (void **)obj); |
48 | if (err && visit_is_input(v)) { |
49 | qapi_free_TpmModelList(*obj); |
50 | *obj = NULL; |
51 | } |
52 | out: |
53 | error_propagate(errp, err); |
54 | } |
55 | |
56 | void visit_type_TpmType(Visitor *v, const char *name, TpmType *obj, Error **errp) |
57 | { |
58 | int value = *obj; |
59 | visit_type_enum(v, name, &value, &TpmType_lookup, errp); |
60 | *obj = value; |
61 | } |
62 | |
63 | void visit_type_TpmTypeList(Visitor *v, const char *name, TpmTypeList **obj, Error **errp) |
64 | { |
65 | Error *err = NULL; |
66 | TpmTypeList *tail; |
67 | size_t size = sizeof(**obj); |
68 | |
69 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
70 | if (err) { |
71 | goto out; |
72 | } |
73 | |
74 | for (tail = *obj; tail; |
75 | tail = (TpmTypeList *)visit_next_list(v, (GenericList *)tail, size)) { |
76 | visit_type_TpmType(v, NULL, &tail->value, &err); |
77 | if (err) { |
78 | break; |
79 | } |
80 | } |
81 | |
82 | if (!err) { |
83 | visit_check_list(v, &err); |
84 | } |
85 | visit_end_list(v, (void **)obj); |
86 | if (err && visit_is_input(v)) { |
87 | qapi_free_TpmTypeList(*obj); |
88 | *obj = NULL; |
89 | } |
90 | out: |
91 | error_propagate(errp, err); |
92 | } |
93 | |
94 | void visit_type_TPMPassthroughOptions_members(Visitor *v, TPMPassthroughOptions *obj, Error **errp) |
95 | { |
96 | Error *err = NULL; |
97 | |
98 | if (visit_optional(v, "path" , &obj->has_path)) { |
99 | visit_type_str(v, "path" , &obj->path, &err); |
100 | if (err) { |
101 | goto out; |
102 | } |
103 | } |
104 | if (visit_optional(v, "cancel-path" , &obj->has_cancel_path)) { |
105 | visit_type_str(v, "cancel-path" , &obj->cancel_path, &err); |
106 | if (err) { |
107 | goto out; |
108 | } |
109 | } |
110 | |
111 | out: |
112 | error_propagate(errp, err); |
113 | } |
114 | |
115 | void visit_type_TPMPassthroughOptions(Visitor *v, const char *name, TPMPassthroughOptions **obj, Error **errp) |
116 | { |
117 | Error *err = NULL; |
118 | |
119 | visit_start_struct(v, name, (void **)obj, sizeof(TPMPassthroughOptions), &err); |
120 | if (err) { |
121 | goto out; |
122 | } |
123 | if (!*obj) { |
124 | goto out_obj; |
125 | } |
126 | visit_type_TPMPassthroughOptions_members(v, *obj, &err); |
127 | if (err) { |
128 | goto out_obj; |
129 | } |
130 | visit_check_struct(v, &err); |
131 | out_obj: |
132 | visit_end_struct(v, (void **)obj); |
133 | if (err && visit_is_input(v)) { |
134 | qapi_free_TPMPassthroughOptions(*obj); |
135 | *obj = NULL; |
136 | } |
137 | out: |
138 | error_propagate(errp, err); |
139 | } |
140 | |
141 | void visit_type_TPMEmulatorOptions_members(Visitor *v, TPMEmulatorOptions *obj, Error **errp) |
142 | { |
143 | Error *err = NULL; |
144 | |
145 | visit_type_str(v, "chardev" , &obj->chardev, &err); |
146 | if (err) { |
147 | goto out; |
148 | } |
149 | |
150 | out: |
151 | error_propagate(errp, err); |
152 | } |
153 | |
154 | void visit_type_TPMEmulatorOptions(Visitor *v, const char *name, TPMEmulatorOptions **obj, Error **errp) |
155 | { |
156 | Error *err = NULL; |
157 | |
158 | visit_start_struct(v, name, (void **)obj, sizeof(TPMEmulatorOptions), &err); |
159 | if (err) { |
160 | goto out; |
161 | } |
162 | if (!*obj) { |
163 | goto out_obj; |
164 | } |
165 | visit_type_TPMEmulatorOptions_members(v, *obj, &err); |
166 | if (err) { |
167 | goto out_obj; |
168 | } |
169 | visit_check_struct(v, &err); |
170 | out_obj: |
171 | visit_end_struct(v, (void **)obj); |
172 | if (err && visit_is_input(v)) { |
173 | qapi_free_TPMEmulatorOptions(*obj); |
174 | *obj = NULL; |
175 | } |
176 | out: |
177 | error_propagate(errp, err); |
178 | } |
179 | |
180 | void visit_type_q_obj_TPMPassthroughOptions_wrapper_members(Visitor *v, q_obj_TPMPassthroughOptions_wrapper *obj, Error **errp) |
181 | { |
182 | Error *err = NULL; |
183 | |
184 | visit_type_TPMPassthroughOptions(v, "data" , &obj->data, &err); |
185 | if (err) { |
186 | goto out; |
187 | } |
188 | |
189 | out: |
190 | error_propagate(errp, err); |
191 | } |
192 | |
193 | void visit_type_q_obj_TPMEmulatorOptions_wrapper_members(Visitor *v, q_obj_TPMEmulatorOptions_wrapper *obj, Error **errp) |
194 | { |
195 | Error *err = NULL; |
196 | |
197 | visit_type_TPMEmulatorOptions(v, "data" , &obj->data, &err); |
198 | if (err) { |
199 | goto out; |
200 | } |
201 | |
202 | out: |
203 | error_propagate(errp, err); |
204 | } |
205 | |
206 | void visit_type_TpmTypeOptionsKind(Visitor *v, const char *name, TpmTypeOptionsKind *obj, Error **errp) |
207 | { |
208 | int value = *obj; |
209 | visit_type_enum(v, name, &value, &TpmTypeOptionsKind_lookup, errp); |
210 | *obj = value; |
211 | } |
212 | |
213 | void visit_type_TpmTypeOptions_members(Visitor *v, TpmTypeOptions *obj, Error **errp) |
214 | { |
215 | Error *err = NULL; |
216 | |
217 | visit_type_TpmTypeOptionsKind(v, "type" , &obj->type, &err); |
218 | if (err) { |
219 | goto out; |
220 | } |
221 | switch (obj->type) { |
222 | case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH: |
223 | visit_type_q_obj_TPMPassthroughOptions_wrapper_members(v, &obj->u.passthrough, &err); |
224 | break; |
225 | case TPM_TYPE_OPTIONS_KIND_EMULATOR: |
226 | visit_type_q_obj_TPMEmulatorOptions_wrapper_members(v, &obj->u.emulator, &err); |
227 | break; |
228 | default: |
229 | abort(); |
230 | } |
231 | |
232 | out: |
233 | error_propagate(errp, err); |
234 | } |
235 | |
236 | void visit_type_TpmTypeOptions(Visitor *v, const char *name, TpmTypeOptions **obj, Error **errp) |
237 | { |
238 | Error *err = NULL; |
239 | |
240 | visit_start_struct(v, name, (void **)obj, sizeof(TpmTypeOptions), &err); |
241 | if (err) { |
242 | goto out; |
243 | } |
244 | if (!*obj) { |
245 | goto out_obj; |
246 | } |
247 | visit_type_TpmTypeOptions_members(v, *obj, &err); |
248 | if (err) { |
249 | goto out_obj; |
250 | } |
251 | visit_check_struct(v, &err); |
252 | out_obj: |
253 | visit_end_struct(v, (void **)obj); |
254 | if (err && visit_is_input(v)) { |
255 | qapi_free_TpmTypeOptions(*obj); |
256 | *obj = NULL; |
257 | } |
258 | out: |
259 | error_propagate(errp, err); |
260 | } |
261 | |
262 | void visit_type_TPMInfo_members(Visitor *v, TPMInfo *obj, Error **errp) |
263 | { |
264 | Error *err = NULL; |
265 | |
266 | visit_type_str(v, "id" , &obj->id, &err); |
267 | if (err) { |
268 | goto out; |
269 | } |
270 | visit_type_TpmModel(v, "model" , &obj->model, &err); |
271 | if (err) { |
272 | goto out; |
273 | } |
274 | visit_type_TpmTypeOptions(v, "options" , &obj->options, &err); |
275 | if (err) { |
276 | goto out; |
277 | } |
278 | |
279 | out: |
280 | error_propagate(errp, err); |
281 | } |
282 | |
283 | void visit_type_TPMInfo(Visitor *v, const char *name, TPMInfo **obj, Error **errp) |
284 | { |
285 | Error *err = NULL; |
286 | |
287 | visit_start_struct(v, name, (void **)obj, sizeof(TPMInfo), &err); |
288 | if (err) { |
289 | goto out; |
290 | } |
291 | if (!*obj) { |
292 | goto out_obj; |
293 | } |
294 | visit_type_TPMInfo_members(v, *obj, &err); |
295 | if (err) { |
296 | goto out_obj; |
297 | } |
298 | visit_check_struct(v, &err); |
299 | out_obj: |
300 | visit_end_struct(v, (void **)obj); |
301 | if (err && visit_is_input(v)) { |
302 | qapi_free_TPMInfo(*obj); |
303 | *obj = NULL; |
304 | } |
305 | out: |
306 | error_propagate(errp, err); |
307 | } |
308 | |
309 | void visit_type_TPMInfoList(Visitor *v, const char *name, TPMInfoList **obj, Error **errp) |
310 | { |
311 | Error *err = NULL; |
312 | TPMInfoList *tail; |
313 | size_t size = sizeof(**obj); |
314 | |
315 | visit_start_list(v, name, (GenericList **)obj, size, &err); |
316 | if (err) { |
317 | goto out; |
318 | } |
319 | |
320 | for (tail = *obj; tail; |
321 | tail = (TPMInfoList *)visit_next_list(v, (GenericList *)tail, size)) { |
322 | visit_type_TPMInfo(v, NULL, &tail->value, &err); |
323 | if (err) { |
324 | break; |
325 | } |
326 | } |
327 | |
328 | if (!err) { |
329 | visit_check_list(v, &err); |
330 | } |
331 | visit_end_list(v, (void **)obj); |
332 | if (err && visit_is_input(v)) { |
333 | qapi_free_TPMInfoList(*obj); |
334 | *obj = NULL; |
335 | } |
336 | out: |
337 | error_propagate(errp, err); |
338 | } |
339 | |
340 | /* Dummy declaration to prevent empty .o file */ |
341 | char qapi_dummy_qapi_visit_tpm_c; |
342 | |