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-char.h"
17
18void visit_type_ChardevInfo_members(Visitor *v, ChardevInfo *obj, Error **errp)
19{
20 Error *err = NULL;
21
22 visit_type_str(v, "label", &obj->label, &err);
23 if (err) {
24 goto out;
25 }
26 visit_type_str(v, "filename", &obj->filename, &err);
27 if (err) {
28 goto out;
29 }
30 visit_type_bool(v, "frontend-open", &obj->frontend_open, &err);
31 if (err) {
32 goto out;
33 }
34
35out:
36 error_propagate(errp, err);
37}
38
39void visit_type_ChardevInfo(Visitor *v, const char *name, ChardevInfo **obj, Error **errp)
40{
41 Error *err = NULL;
42
43 visit_start_struct(v, name, (void **)obj, sizeof(ChardevInfo), &err);
44 if (err) {
45 goto out;
46 }
47 if (!*obj) {
48 goto out_obj;
49 }
50 visit_type_ChardevInfo_members(v, *obj, &err);
51 if (err) {
52 goto out_obj;
53 }
54 visit_check_struct(v, &err);
55out_obj:
56 visit_end_struct(v, (void **)obj);
57 if (err && visit_is_input(v)) {
58 qapi_free_ChardevInfo(*obj);
59 *obj = NULL;
60 }
61out:
62 error_propagate(errp, err);
63}
64
65void visit_type_ChardevInfoList(Visitor *v, const char *name, ChardevInfoList **obj, Error **errp)
66{
67 Error *err = NULL;
68 ChardevInfoList *tail;
69 size_t size = sizeof(**obj);
70
71 visit_start_list(v, name, (GenericList **)obj, size, &err);
72 if (err) {
73 goto out;
74 }
75
76 for (tail = *obj; tail;
77 tail = (ChardevInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
78 visit_type_ChardevInfo(v, NULL, &tail->value, &err);
79 if (err) {
80 break;
81 }
82 }
83
84 if (!err) {
85 visit_check_list(v, &err);
86 }
87 visit_end_list(v, (void **)obj);
88 if (err && visit_is_input(v)) {
89 qapi_free_ChardevInfoList(*obj);
90 *obj = NULL;
91 }
92out:
93 error_propagate(errp, err);
94}
95
96void visit_type_ChardevBackendInfo_members(Visitor *v, ChardevBackendInfo *obj, Error **errp)
97{
98 Error *err = NULL;
99
100 visit_type_str(v, "name", &obj->name, &err);
101 if (err) {
102 goto out;
103 }
104
105out:
106 error_propagate(errp, err);
107}
108
109void visit_type_ChardevBackendInfo(Visitor *v, const char *name, ChardevBackendInfo **obj, Error **errp)
110{
111 Error *err = NULL;
112
113 visit_start_struct(v, name, (void **)obj, sizeof(ChardevBackendInfo), &err);
114 if (err) {
115 goto out;
116 }
117 if (!*obj) {
118 goto out_obj;
119 }
120 visit_type_ChardevBackendInfo_members(v, *obj, &err);
121 if (err) {
122 goto out_obj;
123 }
124 visit_check_struct(v, &err);
125out_obj:
126 visit_end_struct(v, (void **)obj);
127 if (err && visit_is_input(v)) {
128 qapi_free_ChardevBackendInfo(*obj);
129 *obj = NULL;
130 }
131out:
132 error_propagate(errp, err);
133}
134
135void visit_type_ChardevBackendInfoList(Visitor *v, const char *name, ChardevBackendInfoList **obj, Error **errp)
136{
137 Error *err = NULL;
138 ChardevBackendInfoList *tail;
139 size_t size = sizeof(**obj);
140
141 visit_start_list(v, name, (GenericList **)obj, size, &err);
142 if (err) {
143 goto out;
144 }
145
146 for (tail = *obj; tail;
147 tail = (ChardevBackendInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
148 visit_type_ChardevBackendInfo(v, NULL, &tail->value, &err);
149 if (err) {
150 break;
151 }
152 }
153
154 if (!err) {
155 visit_check_list(v, &err);
156 }
157 visit_end_list(v, (void **)obj);
158 if (err && visit_is_input(v)) {
159 qapi_free_ChardevBackendInfoList(*obj);
160 *obj = NULL;
161 }
162out:
163 error_propagate(errp, err);
164}
165
166void visit_type_DataFormat(Visitor *v, const char *name, DataFormat *obj, Error **errp)
167{
168 int value = *obj;
169 visit_type_enum(v, name, &value, &DataFormat_lookup, errp);
170 *obj = value;
171}
172
173void visit_type_q_obj_ringbuf_write_arg_members(Visitor *v, q_obj_ringbuf_write_arg *obj, Error **errp)
174{
175 Error *err = NULL;
176
177 visit_type_str(v, "device", &obj->device, &err);
178 if (err) {
179 goto out;
180 }
181 visit_type_str(v, "data", &obj->data, &err);
182 if (err) {
183 goto out;
184 }
185 if (visit_optional(v, "format", &obj->has_format)) {
186 visit_type_DataFormat(v, "format", &obj->format, &err);
187 if (err) {
188 goto out;
189 }
190 }
191
192out:
193 error_propagate(errp, err);
194}
195
196void visit_type_q_obj_ringbuf_read_arg_members(Visitor *v, q_obj_ringbuf_read_arg *obj, Error **errp)
197{
198 Error *err = NULL;
199
200 visit_type_str(v, "device", &obj->device, &err);
201 if (err) {
202 goto out;
203 }
204 visit_type_int(v, "size", &obj->size, &err);
205 if (err) {
206 goto out;
207 }
208 if (visit_optional(v, "format", &obj->has_format)) {
209 visit_type_DataFormat(v, "format", &obj->format, &err);
210 if (err) {
211 goto out;
212 }
213 }
214
215out:
216 error_propagate(errp, err);
217}
218
219void visit_type_ChardevCommon_members(Visitor *v, ChardevCommon *obj, Error **errp)
220{
221 Error *err = NULL;
222
223 if (visit_optional(v, "logfile", &obj->has_logfile)) {
224 visit_type_str(v, "logfile", &obj->logfile, &err);
225 if (err) {
226 goto out;
227 }
228 }
229 if (visit_optional(v, "logappend", &obj->has_logappend)) {
230 visit_type_bool(v, "logappend", &obj->logappend, &err);
231 if (err) {
232 goto out;
233 }
234 }
235
236out:
237 error_propagate(errp, err);
238}
239
240void visit_type_ChardevCommon(Visitor *v, const char *name, ChardevCommon **obj, Error **errp)
241{
242 Error *err = NULL;
243
244 visit_start_struct(v, name, (void **)obj, sizeof(ChardevCommon), &err);
245 if (err) {
246 goto out;
247 }
248 if (!*obj) {
249 goto out_obj;
250 }
251 visit_type_ChardevCommon_members(v, *obj, &err);
252 if (err) {
253 goto out_obj;
254 }
255 visit_check_struct(v, &err);
256out_obj:
257 visit_end_struct(v, (void **)obj);
258 if (err && visit_is_input(v)) {
259 qapi_free_ChardevCommon(*obj);
260 *obj = NULL;
261 }
262out:
263 error_propagate(errp, err);
264}
265
266void visit_type_ChardevFile_members(Visitor *v, ChardevFile *obj, Error **errp)
267{
268 Error *err = NULL;
269
270 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
271 if (err) {
272 goto out;
273 }
274 if (visit_optional(v, "in", &obj->has_in)) {
275 visit_type_str(v, "in", &obj->in, &err);
276 if (err) {
277 goto out;
278 }
279 }
280 visit_type_str(v, "out", &obj->out, &err);
281 if (err) {
282 goto out;
283 }
284 if (visit_optional(v, "append", &obj->has_append)) {
285 visit_type_bool(v, "append", &obj->append, &err);
286 if (err) {
287 goto out;
288 }
289 }
290
291out:
292 error_propagate(errp, err);
293}
294
295void visit_type_ChardevFile(Visitor *v, const char *name, ChardevFile **obj, Error **errp)
296{
297 Error *err = NULL;
298
299 visit_start_struct(v, name, (void **)obj, sizeof(ChardevFile), &err);
300 if (err) {
301 goto out;
302 }
303 if (!*obj) {
304 goto out_obj;
305 }
306 visit_type_ChardevFile_members(v, *obj, &err);
307 if (err) {
308 goto out_obj;
309 }
310 visit_check_struct(v, &err);
311out_obj:
312 visit_end_struct(v, (void **)obj);
313 if (err && visit_is_input(v)) {
314 qapi_free_ChardevFile(*obj);
315 *obj = NULL;
316 }
317out:
318 error_propagate(errp, err);
319}
320
321void visit_type_ChardevHostdev_members(Visitor *v, ChardevHostdev *obj, Error **errp)
322{
323 Error *err = NULL;
324
325 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
326 if (err) {
327 goto out;
328 }
329 visit_type_str(v, "device", &obj->device, &err);
330 if (err) {
331 goto out;
332 }
333
334out:
335 error_propagate(errp, err);
336}
337
338void visit_type_ChardevHostdev(Visitor *v, const char *name, ChardevHostdev **obj, Error **errp)
339{
340 Error *err = NULL;
341
342 visit_start_struct(v, name, (void **)obj, sizeof(ChardevHostdev), &err);
343 if (err) {
344 goto out;
345 }
346 if (!*obj) {
347 goto out_obj;
348 }
349 visit_type_ChardevHostdev_members(v, *obj, &err);
350 if (err) {
351 goto out_obj;
352 }
353 visit_check_struct(v, &err);
354out_obj:
355 visit_end_struct(v, (void **)obj);
356 if (err && visit_is_input(v)) {
357 qapi_free_ChardevHostdev(*obj);
358 *obj = NULL;
359 }
360out:
361 error_propagate(errp, err);
362}
363
364void visit_type_ChardevSocket_members(Visitor *v, ChardevSocket *obj, Error **errp)
365{
366 Error *err = NULL;
367
368 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
369 if (err) {
370 goto out;
371 }
372 visit_type_SocketAddressLegacy(v, "addr", &obj->addr, &err);
373 if (err) {
374 goto out;
375 }
376 if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
377 visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
378 if (err) {
379 goto out;
380 }
381 }
382 if (visit_optional(v, "tls-authz", &obj->has_tls_authz)) {
383 visit_type_str(v, "tls-authz", &obj->tls_authz, &err);
384 if (err) {
385 goto out;
386 }
387 }
388 if (visit_optional(v, "server", &obj->has_server)) {
389 visit_type_bool(v, "server", &obj->server, &err);
390 if (err) {
391 goto out;
392 }
393 }
394 if (visit_optional(v, "wait", &obj->has_wait)) {
395 visit_type_bool(v, "wait", &obj->wait, &err);
396 if (err) {
397 goto out;
398 }
399 }
400 if (visit_optional(v, "nodelay", &obj->has_nodelay)) {
401 visit_type_bool(v, "nodelay", &obj->nodelay, &err);
402 if (err) {
403 goto out;
404 }
405 }
406 if (visit_optional(v, "telnet", &obj->has_telnet)) {
407 visit_type_bool(v, "telnet", &obj->telnet, &err);
408 if (err) {
409 goto out;
410 }
411 }
412 if (visit_optional(v, "tn3270", &obj->has_tn3270)) {
413 visit_type_bool(v, "tn3270", &obj->tn3270, &err);
414 if (err) {
415 goto out;
416 }
417 }
418 if (visit_optional(v, "websocket", &obj->has_websocket)) {
419 visit_type_bool(v, "websocket", &obj->websocket, &err);
420 if (err) {
421 goto out;
422 }
423 }
424 if (visit_optional(v, "reconnect", &obj->has_reconnect)) {
425 visit_type_int(v, "reconnect", &obj->reconnect, &err);
426 if (err) {
427 goto out;
428 }
429 }
430
431out:
432 error_propagate(errp, err);
433}
434
435void visit_type_ChardevSocket(Visitor *v, const char *name, ChardevSocket **obj, Error **errp)
436{
437 Error *err = NULL;
438
439 visit_start_struct(v, name, (void **)obj, sizeof(ChardevSocket), &err);
440 if (err) {
441 goto out;
442 }
443 if (!*obj) {
444 goto out_obj;
445 }
446 visit_type_ChardevSocket_members(v, *obj, &err);
447 if (err) {
448 goto out_obj;
449 }
450 visit_check_struct(v, &err);
451out_obj:
452 visit_end_struct(v, (void **)obj);
453 if (err && visit_is_input(v)) {
454 qapi_free_ChardevSocket(*obj);
455 *obj = NULL;
456 }
457out:
458 error_propagate(errp, err);
459}
460
461void visit_type_ChardevUdp_members(Visitor *v, ChardevUdp *obj, Error **errp)
462{
463 Error *err = NULL;
464
465 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
466 if (err) {
467 goto out;
468 }
469 visit_type_SocketAddressLegacy(v, "remote", &obj->remote, &err);
470 if (err) {
471 goto out;
472 }
473 if (visit_optional(v, "local", &obj->has_local)) {
474 visit_type_SocketAddressLegacy(v, "local", &obj->local, &err);
475 if (err) {
476 goto out;
477 }
478 }
479
480out:
481 error_propagate(errp, err);
482}
483
484void visit_type_ChardevUdp(Visitor *v, const char *name, ChardevUdp **obj, Error **errp)
485{
486 Error *err = NULL;
487
488 visit_start_struct(v, name, (void **)obj, sizeof(ChardevUdp), &err);
489 if (err) {
490 goto out;
491 }
492 if (!*obj) {
493 goto out_obj;
494 }
495 visit_type_ChardevUdp_members(v, *obj, &err);
496 if (err) {
497 goto out_obj;
498 }
499 visit_check_struct(v, &err);
500out_obj:
501 visit_end_struct(v, (void **)obj);
502 if (err && visit_is_input(v)) {
503 qapi_free_ChardevUdp(*obj);
504 *obj = NULL;
505 }
506out:
507 error_propagate(errp, err);
508}
509
510void visit_type_ChardevMux_members(Visitor *v, ChardevMux *obj, Error **errp)
511{
512 Error *err = NULL;
513
514 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
515 if (err) {
516 goto out;
517 }
518 visit_type_str(v, "chardev", &obj->chardev, &err);
519 if (err) {
520 goto out;
521 }
522
523out:
524 error_propagate(errp, err);
525}
526
527void visit_type_ChardevMux(Visitor *v, const char *name, ChardevMux **obj, Error **errp)
528{
529 Error *err = NULL;
530
531 visit_start_struct(v, name, (void **)obj, sizeof(ChardevMux), &err);
532 if (err) {
533 goto out;
534 }
535 if (!*obj) {
536 goto out_obj;
537 }
538 visit_type_ChardevMux_members(v, *obj, &err);
539 if (err) {
540 goto out_obj;
541 }
542 visit_check_struct(v, &err);
543out_obj:
544 visit_end_struct(v, (void **)obj);
545 if (err && visit_is_input(v)) {
546 qapi_free_ChardevMux(*obj);
547 *obj = NULL;
548 }
549out:
550 error_propagate(errp, err);
551}
552
553void visit_type_ChardevStdio_members(Visitor *v, ChardevStdio *obj, Error **errp)
554{
555 Error *err = NULL;
556
557 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
558 if (err) {
559 goto out;
560 }
561 if (visit_optional(v, "signal", &obj->has_signal)) {
562 visit_type_bool(v, "signal", &obj->signal, &err);
563 if (err) {
564 goto out;
565 }
566 }
567
568out:
569 error_propagate(errp, err);
570}
571
572void visit_type_ChardevStdio(Visitor *v, const char *name, ChardevStdio **obj, Error **errp)
573{
574 Error *err = NULL;
575
576 visit_start_struct(v, name, (void **)obj, sizeof(ChardevStdio), &err);
577 if (err) {
578 goto out;
579 }
580 if (!*obj) {
581 goto out_obj;
582 }
583 visit_type_ChardevStdio_members(v, *obj, &err);
584 if (err) {
585 goto out_obj;
586 }
587 visit_check_struct(v, &err);
588out_obj:
589 visit_end_struct(v, (void **)obj);
590 if (err && visit_is_input(v)) {
591 qapi_free_ChardevStdio(*obj);
592 *obj = NULL;
593 }
594out:
595 error_propagate(errp, err);
596}
597
598#if defined(CONFIG_SPICE)
599void visit_type_ChardevSpiceChannel_members(Visitor *v, ChardevSpiceChannel *obj, Error **errp)
600{
601 Error *err = NULL;
602
603 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
604 if (err) {
605 goto out;
606 }
607 visit_type_str(v, "type", &obj->type, &err);
608 if (err) {
609 goto out;
610 }
611
612out:
613 error_propagate(errp, err);
614}
615
616void visit_type_ChardevSpiceChannel(Visitor *v, const char *name, ChardevSpiceChannel **obj, Error **errp)
617{
618 Error *err = NULL;
619
620 visit_start_struct(v, name, (void **)obj, sizeof(ChardevSpiceChannel), &err);
621 if (err) {
622 goto out;
623 }
624 if (!*obj) {
625 goto out_obj;
626 }
627 visit_type_ChardevSpiceChannel_members(v, *obj, &err);
628 if (err) {
629 goto out_obj;
630 }
631 visit_check_struct(v, &err);
632out_obj:
633 visit_end_struct(v, (void **)obj);
634 if (err && visit_is_input(v)) {
635 qapi_free_ChardevSpiceChannel(*obj);
636 *obj = NULL;
637 }
638out:
639 error_propagate(errp, err);
640}
641#endif /* defined(CONFIG_SPICE) */
642
643#if defined(CONFIG_SPICE)
644void visit_type_ChardevSpicePort_members(Visitor *v, ChardevSpicePort *obj, Error **errp)
645{
646 Error *err = NULL;
647
648 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
649 if (err) {
650 goto out;
651 }
652 visit_type_str(v, "fqdn", &obj->fqdn, &err);
653 if (err) {
654 goto out;
655 }
656
657out:
658 error_propagate(errp, err);
659}
660
661void visit_type_ChardevSpicePort(Visitor *v, const char *name, ChardevSpicePort **obj, Error **errp)
662{
663 Error *err = NULL;
664
665 visit_start_struct(v, name, (void **)obj, sizeof(ChardevSpicePort), &err);
666 if (err) {
667 goto out;
668 }
669 if (!*obj) {
670 goto out_obj;
671 }
672 visit_type_ChardevSpicePort_members(v, *obj, &err);
673 if (err) {
674 goto out_obj;
675 }
676 visit_check_struct(v, &err);
677out_obj:
678 visit_end_struct(v, (void **)obj);
679 if (err && visit_is_input(v)) {
680 qapi_free_ChardevSpicePort(*obj);
681 *obj = NULL;
682 }
683out:
684 error_propagate(errp, err);
685}
686#endif /* defined(CONFIG_SPICE) */
687
688void visit_type_ChardevVC_members(Visitor *v, ChardevVC *obj, Error **errp)
689{
690 Error *err = NULL;
691
692 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
693 if (err) {
694 goto out;
695 }
696 if (visit_optional(v, "width", &obj->has_width)) {
697 visit_type_int(v, "width", &obj->width, &err);
698 if (err) {
699 goto out;
700 }
701 }
702 if (visit_optional(v, "height", &obj->has_height)) {
703 visit_type_int(v, "height", &obj->height, &err);
704 if (err) {
705 goto out;
706 }
707 }
708 if (visit_optional(v, "cols", &obj->has_cols)) {
709 visit_type_int(v, "cols", &obj->cols, &err);
710 if (err) {
711 goto out;
712 }
713 }
714 if (visit_optional(v, "rows", &obj->has_rows)) {
715 visit_type_int(v, "rows", &obj->rows, &err);
716 if (err) {
717 goto out;
718 }
719 }
720
721out:
722 error_propagate(errp, err);
723}
724
725void visit_type_ChardevVC(Visitor *v, const char *name, ChardevVC **obj, Error **errp)
726{
727 Error *err = NULL;
728
729 visit_start_struct(v, name, (void **)obj, sizeof(ChardevVC), &err);
730 if (err) {
731 goto out;
732 }
733 if (!*obj) {
734 goto out_obj;
735 }
736 visit_type_ChardevVC_members(v, *obj, &err);
737 if (err) {
738 goto out_obj;
739 }
740 visit_check_struct(v, &err);
741out_obj:
742 visit_end_struct(v, (void **)obj);
743 if (err && visit_is_input(v)) {
744 qapi_free_ChardevVC(*obj);
745 *obj = NULL;
746 }
747out:
748 error_propagate(errp, err);
749}
750
751void visit_type_ChardevRingbuf_members(Visitor *v, ChardevRingbuf *obj, Error **errp)
752{
753 Error *err = NULL;
754
755 visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
756 if (err) {
757 goto out;
758 }
759 if (visit_optional(v, "size", &obj->has_size)) {
760 visit_type_int(v, "size", &obj->size, &err);
761 if (err) {
762 goto out;
763 }
764 }
765
766out:
767 error_propagate(errp, err);
768}
769
770void visit_type_ChardevRingbuf(Visitor *v, const char *name, ChardevRingbuf **obj, Error **errp)
771{
772 Error *err = NULL;
773
774 visit_start_struct(v, name, (void **)obj, sizeof(ChardevRingbuf), &err);
775 if (err) {
776 goto out;
777 }
778 if (!*obj) {
779 goto out_obj;
780 }
781 visit_type_ChardevRingbuf_members(v, *obj, &err);
782 if (err) {
783 goto out_obj;
784 }
785 visit_check_struct(v, &err);
786out_obj:
787 visit_end_struct(v, (void **)obj);
788 if (err && visit_is_input(v)) {
789 qapi_free_ChardevRingbuf(*obj);
790 *obj = NULL;
791 }
792out:
793 error_propagate(errp, err);
794}
795
796void visit_type_q_obj_ChardevFile_wrapper_members(Visitor *v, q_obj_ChardevFile_wrapper *obj, Error **errp)
797{
798 Error *err = NULL;
799
800 visit_type_ChardevFile(v, "data", &obj->data, &err);
801 if (err) {
802 goto out;
803 }
804
805out:
806 error_propagate(errp, err);
807}
808
809void visit_type_q_obj_ChardevHostdev_wrapper_members(Visitor *v, q_obj_ChardevHostdev_wrapper *obj, Error **errp)
810{
811 Error *err = NULL;
812
813 visit_type_ChardevHostdev(v, "data", &obj->data, &err);
814 if (err) {
815 goto out;
816 }
817
818out:
819 error_propagate(errp, err);
820}
821
822void visit_type_q_obj_ChardevSocket_wrapper_members(Visitor *v, q_obj_ChardevSocket_wrapper *obj, Error **errp)
823{
824 Error *err = NULL;
825
826 visit_type_ChardevSocket(v, "data", &obj->data, &err);
827 if (err) {
828 goto out;
829 }
830
831out:
832 error_propagate(errp, err);
833}
834
835void visit_type_q_obj_ChardevUdp_wrapper_members(Visitor *v, q_obj_ChardevUdp_wrapper *obj, Error **errp)
836{
837 Error *err = NULL;
838
839 visit_type_ChardevUdp(v, "data", &obj->data, &err);
840 if (err) {
841 goto out;
842 }
843
844out:
845 error_propagate(errp, err);
846}
847
848void visit_type_q_obj_ChardevCommon_wrapper_members(Visitor *v, q_obj_ChardevCommon_wrapper *obj, Error **errp)
849{
850 Error *err = NULL;
851
852 visit_type_ChardevCommon(v, "data", &obj->data, &err);
853 if (err) {
854 goto out;
855 }
856
857out:
858 error_propagate(errp, err);
859}
860
861void visit_type_q_obj_ChardevMux_wrapper_members(Visitor *v, q_obj_ChardevMux_wrapper *obj, Error **errp)
862{
863 Error *err = NULL;
864
865 visit_type_ChardevMux(v, "data", &obj->data, &err);
866 if (err) {
867 goto out;
868 }
869
870out:
871 error_propagate(errp, err);
872}
873
874void visit_type_q_obj_ChardevStdio_wrapper_members(Visitor *v, q_obj_ChardevStdio_wrapper *obj, Error **errp)
875{
876 Error *err = NULL;
877
878 visit_type_ChardevStdio(v, "data", &obj->data, &err);
879 if (err) {
880 goto out;
881 }
882
883out:
884 error_propagate(errp, err);
885}
886
887#if defined(CONFIG_SPICE)
888void visit_type_q_obj_ChardevSpiceChannel_wrapper_members(Visitor *v, q_obj_ChardevSpiceChannel_wrapper *obj, Error **errp)
889{
890 Error *err = NULL;
891
892 visit_type_ChardevSpiceChannel(v, "data", &obj->data, &err);
893 if (err) {
894 goto out;
895 }
896
897out:
898 error_propagate(errp, err);
899}
900#endif /* defined(CONFIG_SPICE) */
901
902#if defined(CONFIG_SPICE)
903void visit_type_q_obj_ChardevSpicePort_wrapper_members(Visitor *v, q_obj_ChardevSpicePort_wrapper *obj, Error **errp)
904{
905 Error *err = NULL;
906
907 visit_type_ChardevSpicePort(v, "data", &obj->data, &err);
908 if (err) {
909 goto out;
910 }
911
912out:
913 error_propagate(errp, err);
914}
915#endif /* defined(CONFIG_SPICE) */
916
917void visit_type_q_obj_ChardevVC_wrapper_members(Visitor *v, q_obj_ChardevVC_wrapper *obj, Error **errp)
918{
919 Error *err = NULL;
920
921 visit_type_ChardevVC(v, "data", &obj->data, &err);
922 if (err) {
923 goto out;
924 }
925
926out:
927 error_propagate(errp, err);
928}
929
930void visit_type_q_obj_ChardevRingbuf_wrapper_members(Visitor *v, q_obj_ChardevRingbuf_wrapper *obj, Error **errp)
931{
932 Error *err = NULL;
933
934 visit_type_ChardevRingbuf(v, "data", &obj->data, &err);
935 if (err) {
936 goto out;
937 }
938
939out:
940 error_propagate(errp, err);
941}
942
943void visit_type_ChardevBackendKind(Visitor *v, const char *name, ChardevBackendKind *obj, Error **errp)
944{
945 int value = *obj;
946 visit_type_enum(v, name, &value, &ChardevBackendKind_lookup, errp);
947 *obj = value;
948}
949
950void visit_type_ChardevBackend_members(Visitor *v, ChardevBackend *obj, Error **errp)
951{
952 Error *err = NULL;
953
954 visit_type_ChardevBackendKind(v, "type", &obj->type, &err);
955 if (err) {
956 goto out;
957 }
958 switch (obj->type) {
959 case CHARDEV_BACKEND_KIND_FILE:
960 visit_type_q_obj_ChardevFile_wrapper_members(v, &obj->u.file, &err);
961 break;
962 case CHARDEV_BACKEND_KIND_SERIAL:
963 visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.serial, &err);
964 break;
965 case CHARDEV_BACKEND_KIND_PARALLEL:
966 visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.parallel, &err);
967 break;
968 case CHARDEV_BACKEND_KIND_PIPE:
969 visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.pipe, &err);
970 break;
971 case CHARDEV_BACKEND_KIND_SOCKET:
972 visit_type_q_obj_ChardevSocket_wrapper_members(v, &obj->u.socket, &err);
973 break;
974 case CHARDEV_BACKEND_KIND_UDP:
975 visit_type_q_obj_ChardevUdp_wrapper_members(v, &obj->u.udp, &err);
976 break;
977 case CHARDEV_BACKEND_KIND_PTY:
978 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.pty, &err);
979 break;
980 case CHARDEV_BACKEND_KIND_NULL:
981 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.null, &err);
982 break;
983 case CHARDEV_BACKEND_KIND_MUX:
984 visit_type_q_obj_ChardevMux_wrapper_members(v, &obj->u.mux, &err);
985 break;
986 case CHARDEV_BACKEND_KIND_MSMOUSE:
987 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.msmouse, &err);
988 break;
989 case CHARDEV_BACKEND_KIND_WCTABLET:
990 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.wctablet, &err);
991 break;
992 case CHARDEV_BACKEND_KIND_BRAILLE:
993 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.braille, &err);
994 break;
995 case CHARDEV_BACKEND_KIND_TESTDEV:
996 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.testdev, &err);
997 break;
998 case CHARDEV_BACKEND_KIND_STDIO:
999 visit_type_q_obj_ChardevStdio_wrapper_members(v, &obj->u.stdio, &err);
1000 break;
1001 case CHARDEV_BACKEND_KIND_CONSOLE:
1002 visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.console, &err);
1003 break;
1004#if defined(CONFIG_SPICE)
1005 case CHARDEV_BACKEND_KIND_SPICEVMC:
1006 visit_type_q_obj_ChardevSpiceChannel_wrapper_members(v, &obj->u.spicevmc, &err);
1007 break;
1008#endif /* defined(CONFIG_SPICE) */
1009#if defined(CONFIG_SPICE)
1010 case CHARDEV_BACKEND_KIND_SPICEPORT:
1011 visit_type_q_obj_ChardevSpicePort_wrapper_members(v, &obj->u.spiceport, &err);
1012 break;
1013#endif /* defined(CONFIG_SPICE) */
1014 case CHARDEV_BACKEND_KIND_VC:
1015 visit_type_q_obj_ChardevVC_wrapper_members(v, &obj->u.vc, &err);
1016 break;
1017 case CHARDEV_BACKEND_KIND_RINGBUF:
1018 visit_type_q_obj_ChardevRingbuf_wrapper_members(v, &obj->u.ringbuf, &err);
1019 break;
1020 case CHARDEV_BACKEND_KIND_MEMORY:
1021 visit_type_q_obj_ChardevRingbuf_wrapper_members(v, &obj->u.memory, &err);
1022 break;
1023 default:
1024 abort();
1025 }
1026
1027out:
1028 error_propagate(errp, err);
1029}
1030
1031void visit_type_ChardevBackend(Visitor *v, const char *name, ChardevBackend **obj, Error **errp)
1032{
1033 Error *err = NULL;
1034
1035 visit_start_struct(v, name, (void **)obj, sizeof(ChardevBackend), &err);
1036 if (err) {
1037 goto out;
1038 }
1039 if (!*obj) {
1040 goto out_obj;
1041 }
1042 visit_type_ChardevBackend_members(v, *obj, &err);
1043 if (err) {
1044 goto out_obj;
1045 }
1046 visit_check_struct(v, &err);
1047out_obj:
1048 visit_end_struct(v, (void **)obj);
1049 if (err && visit_is_input(v)) {
1050 qapi_free_ChardevBackend(*obj);
1051 *obj = NULL;
1052 }
1053out:
1054 error_propagate(errp, err);
1055}
1056
1057void visit_type_ChardevReturn_members(Visitor *v, ChardevReturn *obj, Error **errp)
1058{
1059 Error *err = NULL;
1060
1061 if (visit_optional(v, "pty", &obj->has_pty)) {
1062 visit_type_str(v, "pty", &obj->pty, &err);
1063 if (err) {
1064 goto out;
1065 }
1066 }
1067
1068out:
1069 error_propagate(errp, err);
1070}
1071
1072void visit_type_ChardevReturn(Visitor *v, const char *name, ChardevReturn **obj, Error **errp)
1073{
1074 Error *err = NULL;
1075
1076 visit_start_struct(v, name, (void **)obj, sizeof(ChardevReturn), &err);
1077 if (err) {
1078 goto out;
1079 }
1080 if (!*obj) {
1081 goto out_obj;
1082 }
1083 visit_type_ChardevReturn_members(v, *obj, &err);
1084 if (err) {
1085 goto out_obj;
1086 }
1087 visit_check_struct(v, &err);
1088out_obj:
1089 visit_end_struct(v, (void **)obj);
1090 if (err && visit_is_input(v)) {
1091 qapi_free_ChardevReturn(*obj);
1092 *obj = NULL;
1093 }
1094out:
1095 error_propagate(errp, err);
1096}
1097
1098void visit_type_q_obj_chardev_add_arg_members(Visitor *v, q_obj_chardev_add_arg *obj, Error **errp)
1099{
1100 Error *err = NULL;
1101
1102 visit_type_str(v, "id", &obj->id, &err);
1103 if (err) {
1104 goto out;
1105 }
1106 visit_type_ChardevBackend(v, "backend", &obj->backend, &err);
1107 if (err) {
1108 goto out;
1109 }
1110
1111out:
1112 error_propagate(errp, err);
1113}
1114
1115void visit_type_q_obj_chardev_change_arg_members(Visitor *v, q_obj_chardev_change_arg *obj, Error **errp)
1116{
1117 Error *err = NULL;
1118
1119 visit_type_str(v, "id", &obj->id, &err);
1120 if (err) {
1121 goto out;
1122 }
1123 visit_type_ChardevBackend(v, "backend", &obj->backend, &err);
1124 if (err) {
1125 goto out;
1126 }
1127
1128out:
1129 error_propagate(errp, err);
1130}
1131
1132void visit_type_q_obj_chardev_remove_arg_members(Visitor *v, q_obj_chardev_remove_arg *obj, Error **errp)
1133{
1134 Error *err = NULL;
1135
1136 visit_type_str(v, "id", &obj->id, &err);
1137 if (err) {
1138 goto out;
1139 }
1140
1141out:
1142 error_propagate(errp, err);
1143}
1144
1145void visit_type_q_obj_chardev_send_break_arg_members(Visitor *v, q_obj_chardev_send_break_arg *obj, Error **errp)
1146{
1147 Error *err = NULL;
1148
1149 visit_type_str(v, "id", &obj->id, &err);
1150 if (err) {
1151 goto out;
1152 }
1153
1154out:
1155 error_propagate(errp, err);
1156}
1157
1158void visit_type_q_obj_VSERPORT_CHANGE_arg_members(Visitor *v, q_obj_VSERPORT_CHANGE_arg *obj, Error **errp)
1159{
1160 Error *err = NULL;
1161
1162 visit_type_str(v, "id", &obj->id, &err);
1163 if (err) {
1164 goto out;
1165 }
1166 visit_type_bool(v, "open", &obj->open, &err);
1167 if (err) {
1168 goto out;
1169 }
1170
1171out:
1172 error_propagate(errp, err);
1173}
1174
1175/* Dummy declaration to prevent empty .o file */
1176char qapi_dummy_qapi_visit_char_c;
1177