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-transaction.h"
17
18void visit_type_Abort_members(Visitor *v, Abort *obj, Error **errp)
19{
20 Error *err = NULL;
21
22 error_propagate(errp, err);
23}
24
25void visit_type_Abort(Visitor *v, const char *name, Abort **obj, Error **errp)
26{
27 Error *err = NULL;
28
29 visit_start_struct(v, name, (void **)obj, sizeof(Abort), &err);
30 if (err) {
31 goto out;
32 }
33 if (!*obj) {
34 goto out_obj;
35 }
36 visit_type_Abort_members(v, *obj, &err);
37 if (err) {
38 goto out_obj;
39 }
40 visit_check_struct(v, &err);
41out_obj:
42 visit_end_struct(v, (void **)obj);
43 if (err && visit_is_input(v)) {
44 qapi_free_Abort(*obj);
45 *obj = NULL;
46 }
47out:
48 error_propagate(errp, err);
49}
50
51void visit_type_ActionCompletionMode(Visitor *v, const char *name, ActionCompletionMode *obj, Error **errp)
52{
53 int value = *obj;
54 visit_type_enum(v, name, &value, &ActionCompletionMode_lookup, errp);
55 *obj = value;
56}
57
58void visit_type_q_obj_Abort_wrapper_members(Visitor *v, q_obj_Abort_wrapper *obj, Error **errp)
59{
60 Error *err = NULL;
61
62 visit_type_Abort(v, "data", &obj->data, &err);
63 if (err) {
64 goto out;
65 }
66
67out:
68 error_propagate(errp, err);
69}
70
71void visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmapAdd_wrapper *obj, Error **errp)
72{
73 Error *err = NULL;
74
75 visit_type_BlockDirtyBitmapAdd(v, "data", &obj->data, &err);
76 if (err) {
77 goto out;
78 }
79
80out:
81 error_propagate(errp, err);
82}
83
84void visit_type_q_obj_BlockDirtyBitmap_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmap_wrapper *obj, Error **errp)
85{
86 Error *err = NULL;
87
88 visit_type_BlockDirtyBitmap(v, "data", &obj->data, &err);
89 if (err) {
90 goto out;
91 }
92
93out:
94 error_propagate(errp, err);
95}
96
97void visit_type_q_obj_BlockDirtyBitmapMerge_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmapMerge_wrapper *obj, Error **errp)
98{
99 Error *err = NULL;
100
101 visit_type_BlockDirtyBitmapMerge(v, "data", &obj->data, &err);
102 if (err) {
103 goto out;
104 }
105
106out:
107 error_propagate(errp, err);
108}
109
110void visit_type_q_obj_BlockdevBackup_wrapper_members(Visitor *v, q_obj_BlockdevBackup_wrapper *obj, Error **errp)
111{
112 Error *err = NULL;
113
114 visit_type_BlockdevBackup(v, "data", &obj->data, &err);
115 if (err) {
116 goto out;
117 }
118
119out:
120 error_propagate(errp, err);
121}
122
123void visit_type_q_obj_BlockdevSnapshot_wrapper_members(Visitor *v, q_obj_BlockdevSnapshot_wrapper *obj, Error **errp)
124{
125 Error *err = NULL;
126
127 visit_type_BlockdevSnapshot(v, "data", &obj->data, &err);
128 if (err) {
129 goto out;
130 }
131
132out:
133 error_propagate(errp, err);
134}
135
136void visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotInternal_wrapper *obj, Error **errp)
137{
138 Error *err = NULL;
139
140 visit_type_BlockdevSnapshotInternal(v, "data", &obj->data, &err);
141 if (err) {
142 goto out;
143 }
144
145out:
146 error_propagate(errp, err);
147}
148
149void visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotSync_wrapper *obj, Error **errp)
150{
151 Error *err = NULL;
152
153 visit_type_BlockdevSnapshotSync(v, "data", &obj->data, &err);
154 if (err) {
155 goto out;
156 }
157
158out:
159 error_propagate(errp, err);
160}
161
162void visit_type_q_obj_DriveBackup_wrapper_members(Visitor *v, q_obj_DriveBackup_wrapper *obj, Error **errp)
163{
164 Error *err = NULL;
165
166 visit_type_DriveBackup(v, "data", &obj->data, &err);
167 if (err) {
168 goto out;
169 }
170
171out:
172 error_propagate(errp, err);
173}
174
175void visit_type_TransactionActionKind(Visitor *v, const char *name, TransactionActionKind *obj, Error **errp)
176{
177 int value = *obj;
178 visit_type_enum(v, name, &value, &TransactionActionKind_lookup, errp);
179 *obj = value;
180}
181
182void visit_type_TransactionAction_members(Visitor *v, TransactionAction *obj, Error **errp)
183{
184 Error *err = NULL;
185
186 visit_type_TransactionActionKind(v, "type", &obj->type, &err);
187 if (err) {
188 goto out;
189 }
190 switch (obj->type) {
191 case TRANSACTION_ACTION_KIND_ABORT:
192 visit_type_q_obj_Abort_wrapper_members(v, &obj->u.abort, &err);
193 break;
194 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ADD:
195 visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(v, &obj->u.block_dirty_bitmap_add, &err);
196 break;
197 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_REMOVE:
198 visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_remove, &err);
199 break;
200 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR:
201 visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_clear, &err);
202 break;
203 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ENABLE:
204 visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_enable, &err);
205 break;
206 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_DISABLE:
207 visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_disable, &err);
208 break;
209 case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_MERGE:
210 visit_type_q_obj_BlockDirtyBitmapMerge_wrapper_members(v, &obj->u.block_dirty_bitmap_merge, &err);
211 break;
212 case TRANSACTION_ACTION_KIND_BLOCKDEV_BACKUP:
213 visit_type_q_obj_BlockdevBackup_wrapper_members(v, &obj->u.blockdev_backup, &err);
214 break;
215 case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT:
216 visit_type_q_obj_BlockdevSnapshot_wrapper_members(v, &obj->u.blockdev_snapshot, &err);
217 break;
218 case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC:
219 visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(v, &obj->u.blockdev_snapshot_internal_sync, &err);
220 break;
221 case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC:
222 visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(v, &obj->u.blockdev_snapshot_sync, &err);
223 break;
224 case TRANSACTION_ACTION_KIND_DRIVE_BACKUP:
225 visit_type_q_obj_DriveBackup_wrapper_members(v, &obj->u.drive_backup, &err);
226 break;
227 default:
228 abort();
229 }
230
231out:
232 error_propagate(errp, err);
233}
234
235void visit_type_TransactionAction(Visitor *v, const char *name, TransactionAction **obj, Error **errp)
236{
237 Error *err = NULL;
238
239 visit_start_struct(v, name, (void **)obj, sizeof(TransactionAction), &err);
240 if (err) {
241 goto out;
242 }
243 if (!*obj) {
244 goto out_obj;
245 }
246 visit_type_TransactionAction_members(v, *obj, &err);
247 if (err) {
248 goto out_obj;
249 }
250 visit_check_struct(v, &err);
251out_obj:
252 visit_end_struct(v, (void **)obj);
253 if (err && visit_is_input(v)) {
254 qapi_free_TransactionAction(*obj);
255 *obj = NULL;
256 }
257out:
258 error_propagate(errp, err);
259}
260
261void visit_type_TransactionProperties_members(Visitor *v, TransactionProperties *obj, Error **errp)
262{
263 Error *err = NULL;
264
265 if (visit_optional(v, "completion-mode", &obj->has_completion_mode)) {
266 visit_type_ActionCompletionMode(v, "completion-mode", &obj->completion_mode, &err);
267 if (err) {
268 goto out;
269 }
270 }
271
272out:
273 error_propagate(errp, err);
274}
275
276void visit_type_TransactionProperties(Visitor *v, const char *name, TransactionProperties **obj, Error **errp)
277{
278 Error *err = NULL;
279
280 visit_start_struct(v, name, (void **)obj, sizeof(TransactionProperties), &err);
281 if (err) {
282 goto out;
283 }
284 if (!*obj) {
285 goto out_obj;
286 }
287 visit_type_TransactionProperties_members(v, *obj, &err);
288 if (err) {
289 goto out_obj;
290 }
291 visit_check_struct(v, &err);
292out_obj:
293 visit_end_struct(v, (void **)obj);
294 if (err && visit_is_input(v)) {
295 qapi_free_TransactionProperties(*obj);
296 *obj = NULL;
297 }
298out:
299 error_propagate(errp, err);
300}
301
302void visit_type_TransactionActionList(Visitor *v, const char *name, TransactionActionList **obj, Error **errp)
303{
304 Error *err = NULL;
305 TransactionActionList *tail;
306 size_t size = sizeof(**obj);
307
308 visit_start_list(v, name, (GenericList **)obj, size, &err);
309 if (err) {
310 goto out;
311 }
312
313 for (tail = *obj; tail;
314 tail = (TransactionActionList *)visit_next_list(v, (GenericList *)tail, size)) {
315 visit_type_TransactionAction(v, NULL, &tail->value, &err);
316 if (err) {
317 break;
318 }
319 }
320
321 if (!err) {
322 visit_check_list(v, &err);
323 }
324 visit_end_list(v, (void **)obj);
325 if (err && visit_is_input(v)) {
326 qapi_free_TransactionActionList(*obj);
327 *obj = NULL;
328 }
329out:
330 error_propagate(errp, err);
331}
332
333void visit_type_q_obj_transaction_arg_members(Visitor *v, q_obj_transaction_arg *obj, Error **errp)
334{
335 Error *err = NULL;
336
337 visit_type_TransactionActionList(v, "actions", &obj->actions, &err);
338 if (err) {
339 goto out;
340 }
341 if (visit_optional(v, "properties", &obj->has_properties)) {
342 visit_type_TransactionProperties(v, "properties", &obj->properties, &err);
343 if (err) {
344 goto out;
345 }
346 }
347
348out:
349 error_propagate(errp, err);
350}
351
352/* Dummy declaration to prevent empty .o file */
353char qapi_dummy_qapi_visit_transaction_c;
354