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
18void 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
25void 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 }
52out:
53 error_propagate(errp, err);
54}
55
56void 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
63void 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 }
90out:
91 error_propagate(errp, err);
92}
93
94void 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
111out:
112 error_propagate(errp, err);
113}
114
115void 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);
131out_obj:
132 visit_end_struct(v, (void **)obj);
133 if (err && visit_is_input(v)) {
134 qapi_free_TPMPassthroughOptions(*obj);
135 *obj = NULL;
136 }
137out:
138 error_propagate(errp, err);
139}
140
141void 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
150out:
151 error_propagate(errp, err);
152}
153
154void 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);
170out_obj:
171 visit_end_struct(v, (void **)obj);
172 if (err && visit_is_input(v)) {
173 qapi_free_TPMEmulatorOptions(*obj);
174 *obj = NULL;
175 }
176out:
177 error_propagate(errp, err);
178}
179
180void 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
189out:
190 error_propagate(errp, err);
191}
192
193void 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
202out:
203 error_propagate(errp, err);
204}
205
206void 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
213void 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
232out:
233 error_propagate(errp, err);
234}
235
236void 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);
252out_obj:
253 visit_end_struct(v, (void **)obj);
254 if (err && visit_is_input(v)) {
255 qapi_free_TpmTypeOptions(*obj);
256 *obj = NULL;
257 }
258out:
259 error_propagate(errp, err);
260}
261
262void 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
279out:
280 error_propagate(errp, err);
281}
282
283void 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);
299out_obj:
300 visit_end_struct(v, (void **)obj);
301 if (err && visit_is_input(v)) {
302 qapi_free_TPMInfo(*obj);
303 *obj = NULL;
304 }
305out:
306 error_propagate(errp, err);
307}
308
309void 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 }
336out:
337 error_propagate(errp, err);
338}
339
340/* Dummy declaration to prevent empty .o file */
341char qapi_dummy_qapi_visit_tpm_c;
342