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 | |
18 | void visit_type_Abort_members(Visitor *v, Abort *obj, Error **errp) |
19 | { |
20 | Error *err = NULL; |
21 | |
22 | error_propagate(errp, err); |
23 | } |
24 | |
25 | void 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); |
41 | out_obj: |
42 | visit_end_struct(v, (void **)obj); |
43 | if (err && visit_is_input(v)) { |
44 | qapi_free_Abort(*obj); |
45 | *obj = NULL; |
46 | } |
47 | out: |
48 | error_propagate(errp, err); |
49 | } |
50 | |
51 | void 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 | |
58 | void 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 | |
67 | out: |
68 | error_propagate(errp, err); |
69 | } |
70 | |
71 | void 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 | |
80 | out: |
81 | error_propagate(errp, err); |
82 | } |
83 | |
84 | void 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 | |
93 | out: |
94 | error_propagate(errp, err); |
95 | } |
96 | |
97 | void 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 | |
106 | out: |
107 | error_propagate(errp, err); |
108 | } |
109 | |
110 | void 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 | |
119 | out: |
120 | error_propagate(errp, err); |
121 | } |
122 | |
123 | void 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 | |
132 | out: |
133 | error_propagate(errp, err); |
134 | } |
135 | |
136 | void 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 | |
145 | out: |
146 | error_propagate(errp, err); |
147 | } |
148 | |
149 | void 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 | |
158 | out: |
159 | error_propagate(errp, err); |
160 | } |
161 | |
162 | void 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 | |
171 | out: |
172 | error_propagate(errp, err); |
173 | } |
174 | |
175 | void 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 | |
182 | void 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 | |
231 | out: |
232 | error_propagate(errp, err); |
233 | } |
234 | |
235 | void 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); |
251 | out_obj: |
252 | visit_end_struct(v, (void **)obj); |
253 | if (err && visit_is_input(v)) { |
254 | qapi_free_TransactionAction(*obj); |
255 | *obj = NULL; |
256 | } |
257 | out: |
258 | error_propagate(errp, err); |
259 | } |
260 | |
261 | void 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 | |
272 | out: |
273 | error_propagate(errp, err); |
274 | } |
275 | |
276 | void 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); |
292 | out_obj: |
293 | visit_end_struct(v, (void **)obj); |
294 | if (err && visit_is_input(v)) { |
295 | qapi_free_TransactionProperties(*obj); |
296 | *obj = NULL; |
297 | } |
298 | out: |
299 | error_propagate(errp, err); |
300 | } |
301 | |
302 | void 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 | } |
329 | out: |
330 | error_propagate(errp, err); |
331 | } |
332 | |
333 | void 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 | |
348 | out: |
349 | error_propagate(errp, err); |
350 | } |
351 | |
352 | /* Dummy declaration to prevent empty .o file */ |
353 | char qapi_dummy_qapi_visit_transaction_c; |
354 | |