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-ui.h"
17
18void visit_type_q_obj_set_password_arg_members(Visitor *v, q_obj_set_password_arg *obj, Error **errp)
19{
20 Error *err = NULL;
21
22 visit_type_str(v, "protocol", &obj->protocol, &err);
23 if (err) {
24 goto out;
25 }
26 visit_type_str(v, "password", &obj->password, &err);
27 if (err) {
28 goto out;
29 }
30 if (visit_optional(v, "connected", &obj->has_connected)) {
31 visit_type_str(v, "connected", &obj->connected, &err);
32 if (err) {
33 goto out;
34 }
35 }
36
37out:
38 error_propagate(errp, err);
39}
40
41void visit_type_q_obj_expire_password_arg_members(Visitor *v, q_obj_expire_password_arg *obj, Error **errp)
42{
43 Error *err = NULL;
44
45 visit_type_str(v, "protocol", &obj->protocol, &err);
46 if (err) {
47 goto out;
48 }
49 visit_type_str(v, "time", &obj->time, &err);
50 if (err) {
51 goto out;
52 }
53
54out:
55 error_propagate(errp, err);
56}
57
58void visit_type_q_obj_screendump_arg_members(Visitor *v, q_obj_screendump_arg *obj, Error **errp)
59{
60 Error *err = NULL;
61
62 visit_type_str(v, "filename", &obj->filename, &err);
63 if (err) {
64 goto out;
65 }
66 if (visit_optional(v, "device", &obj->has_device)) {
67 visit_type_str(v, "device", &obj->device, &err);
68 if (err) {
69 goto out;
70 }
71 }
72 if (visit_optional(v, "head", &obj->has_head)) {
73 visit_type_int(v, "head", &obj->head, &err);
74 if (err) {
75 goto out;
76 }
77 }
78
79out:
80 error_propagate(errp, err);
81}
82
83#if defined(CONFIG_SPICE)
84void visit_type_SpiceBasicInfo_members(Visitor *v, SpiceBasicInfo *obj, Error **errp)
85{
86 Error *err = NULL;
87
88 visit_type_str(v, "host", &obj->host, &err);
89 if (err) {
90 goto out;
91 }
92 visit_type_str(v, "port", &obj->port, &err);
93 if (err) {
94 goto out;
95 }
96 visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
97 if (err) {
98 goto out;
99 }
100
101out:
102 error_propagate(errp, err);
103}
104
105void visit_type_SpiceBasicInfo(Visitor *v, const char *name, SpiceBasicInfo **obj, Error **errp)
106{
107 Error *err = NULL;
108
109 visit_start_struct(v, name, (void **)obj, sizeof(SpiceBasicInfo), &err);
110 if (err) {
111 goto out;
112 }
113 if (!*obj) {
114 goto out_obj;
115 }
116 visit_type_SpiceBasicInfo_members(v, *obj, &err);
117 if (err) {
118 goto out_obj;
119 }
120 visit_check_struct(v, &err);
121out_obj:
122 visit_end_struct(v, (void **)obj);
123 if (err && visit_is_input(v)) {
124 qapi_free_SpiceBasicInfo(*obj);
125 *obj = NULL;
126 }
127out:
128 error_propagate(errp, err);
129}
130#endif /* defined(CONFIG_SPICE) */
131
132#if defined(CONFIG_SPICE)
133void visit_type_SpiceServerInfo_members(Visitor *v, SpiceServerInfo *obj, Error **errp)
134{
135 Error *err = NULL;
136
137 visit_type_SpiceBasicInfo_members(v, (SpiceBasicInfo *)obj, &err);
138 if (err) {
139 goto out;
140 }
141 if (visit_optional(v, "auth", &obj->has_auth)) {
142 visit_type_str(v, "auth", &obj->auth, &err);
143 if (err) {
144 goto out;
145 }
146 }
147
148out:
149 error_propagate(errp, err);
150}
151
152void visit_type_SpiceServerInfo(Visitor *v, const char *name, SpiceServerInfo **obj, Error **errp)
153{
154 Error *err = NULL;
155
156 visit_start_struct(v, name, (void **)obj, sizeof(SpiceServerInfo), &err);
157 if (err) {
158 goto out;
159 }
160 if (!*obj) {
161 goto out_obj;
162 }
163 visit_type_SpiceServerInfo_members(v, *obj, &err);
164 if (err) {
165 goto out_obj;
166 }
167 visit_check_struct(v, &err);
168out_obj:
169 visit_end_struct(v, (void **)obj);
170 if (err && visit_is_input(v)) {
171 qapi_free_SpiceServerInfo(*obj);
172 *obj = NULL;
173 }
174out:
175 error_propagate(errp, err);
176}
177#endif /* defined(CONFIG_SPICE) */
178
179#if defined(CONFIG_SPICE)
180void visit_type_SpiceChannel_members(Visitor *v, SpiceChannel *obj, Error **errp)
181{
182 Error *err = NULL;
183
184 visit_type_SpiceBasicInfo_members(v, (SpiceBasicInfo *)obj, &err);
185 if (err) {
186 goto out;
187 }
188 visit_type_int(v, "connection-id", &obj->connection_id, &err);
189 if (err) {
190 goto out;
191 }
192 visit_type_int(v, "channel-type", &obj->channel_type, &err);
193 if (err) {
194 goto out;
195 }
196 visit_type_int(v, "channel-id", &obj->channel_id, &err);
197 if (err) {
198 goto out;
199 }
200 visit_type_bool(v, "tls", &obj->tls, &err);
201 if (err) {
202 goto out;
203 }
204
205out:
206 error_propagate(errp, err);
207}
208
209void visit_type_SpiceChannel(Visitor *v, const char *name, SpiceChannel **obj, Error **errp)
210{
211 Error *err = NULL;
212
213 visit_start_struct(v, name, (void **)obj, sizeof(SpiceChannel), &err);
214 if (err) {
215 goto out;
216 }
217 if (!*obj) {
218 goto out_obj;
219 }
220 visit_type_SpiceChannel_members(v, *obj, &err);
221 if (err) {
222 goto out_obj;
223 }
224 visit_check_struct(v, &err);
225out_obj:
226 visit_end_struct(v, (void **)obj);
227 if (err && visit_is_input(v)) {
228 qapi_free_SpiceChannel(*obj);
229 *obj = NULL;
230 }
231out:
232 error_propagate(errp, err);
233}
234#endif /* defined(CONFIG_SPICE) */
235
236#if defined(CONFIG_SPICE)
237void visit_type_SpiceQueryMouseMode(Visitor *v, const char *name, SpiceQueryMouseMode *obj, Error **errp)
238{
239 int value = *obj;
240 visit_type_enum(v, name, &value, &SpiceQueryMouseMode_lookup, errp);
241 *obj = value;
242}
243#endif /* defined(CONFIG_SPICE) */
244
245#if defined(CONFIG_SPICE)
246void visit_type_SpiceChannelList(Visitor *v, const char *name, SpiceChannelList **obj, Error **errp)
247{
248 Error *err = NULL;
249 SpiceChannelList *tail;
250 size_t size = sizeof(**obj);
251
252 visit_start_list(v, name, (GenericList **)obj, size, &err);
253 if (err) {
254 goto out;
255 }
256
257 for (tail = *obj; tail;
258 tail = (SpiceChannelList *)visit_next_list(v, (GenericList *)tail, size)) {
259 visit_type_SpiceChannel(v, NULL, &tail->value, &err);
260 if (err) {
261 break;
262 }
263 }
264
265 if (!err) {
266 visit_check_list(v, &err);
267 }
268 visit_end_list(v, (void **)obj);
269 if (err && visit_is_input(v)) {
270 qapi_free_SpiceChannelList(*obj);
271 *obj = NULL;
272 }
273out:
274 error_propagate(errp, err);
275}
276#endif /* defined(CONFIG_SPICE) */
277
278#if defined(CONFIG_SPICE)
279void visit_type_SpiceInfo_members(Visitor *v, SpiceInfo *obj, Error **errp)
280{
281 Error *err = NULL;
282
283 visit_type_bool(v, "enabled", &obj->enabled, &err);
284 if (err) {
285 goto out;
286 }
287 visit_type_bool(v, "migrated", &obj->migrated, &err);
288 if (err) {
289 goto out;
290 }
291 if (visit_optional(v, "host", &obj->has_host)) {
292 visit_type_str(v, "host", &obj->host, &err);
293 if (err) {
294 goto out;
295 }
296 }
297 if (visit_optional(v, "port", &obj->has_port)) {
298 visit_type_int(v, "port", &obj->port, &err);
299 if (err) {
300 goto out;
301 }
302 }
303 if (visit_optional(v, "tls-port", &obj->has_tls_port)) {
304 visit_type_int(v, "tls-port", &obj->tls_port, &err);
305 if (err) {
306 goto out;
307 }
308 }
309 if (visit_optional(v, "auth", &obj->has_auth)) {
310 visit_type_str(v, "auth", &obj->auth, &err);
311 if (err) {
312 goto out;
313 }
314 }
315 if (visit_optional(v, "compiled-version", &obj->has_compiled_version)) {
316 visit_type_str(v, "compiled-version", &obj->compiled_version, &err);
317 if (err) {
318 goto out;
319 }
320 }
321 visit_type_SpiceQueryMouseMode(v, "mouse-mode", &obj->mouse_mode, &err);
322 if (err) {
323 goto out;
324 }
325 if (visit_optional(v, "channels", &obj->has_channels)) {
326 visit_type_SpiceChannelList(v, "channels", &obj->channels, &err);
327 if (err) {
328 goto out;
329 }
330 }
331
332out:
333 error_propagate(errp, err);
334}
335
336void visit_type_SpiceInfo(Visitor *v, const char *name, SpiceInfo **obj, Error **errp)
337{
338 Error *err = NULL;
339
340 visit_start_struct(v, name, (void **)obj, sizeof(SpiceInfo), &err);
341 if (err) {
342 goto out;
343 }
344 if (!*obj) {
345 goto out_obj;
346 }
347 visit_type_SpiceInfo_members(v, *obj, &err);
348 if (err) {
349 goto out_obj;
350 }
351 visit_check_struct(v, &err);
352out_obj:
353 visit_end_struct(v, (void **)obj);
354 if (err && visit_is_input(v)) {
355 qapi_free_SpiceInfo(*obj);
356 *obj = NULL;
357 }
358out:
359 error_propagate(errp, err);
360}
361#endif /* defined(CONFIG_SPICE) */
362
363#if defined(CONFIG_SPICE)
364void visit_type_q_obj_SPICE_CONNECTED_arg_members(Visitor *v, q_obj_SPICE_CONNECTED_arg *obj, Error **errp)
365{
366 Error *err = NULL;
367
368 visit_type_SpiceBasicInfo(v, "server", &obj->server, &err);
369 if (err) {
370 goto out;
371 }
372 visit_type_SpiceBasicInfo(v, "client", &obj->client, &err);
373 if (err) {
374 goto out;
375 }
376
377out:
378 error_propagate(errp, err);
379}
380#endif /* defined(CONFIG_SPICE) */
381
382#if defined(CONFIG_SPICE)
383void visit_type_q_obj_SPICE_INITIALIZED_arg_members(Visitor *v, q_obj_SPICE_INITIALIZED_arg *obj, Error **errp)
384{
385 Error *err = NULL;
386
387 visit_type_SpiceServerInfo(v, "server", &obj->server, &err);
388 if (err) {
389 goto out;
390 }
391 visit_type_SpiceChannel(v, "client", &obj->client, &err);
392 if (err) {
393 goto out;
394 }
395
396out:
397 error_propagate(errp, err);
398}
399#endif /* defined(CONFIG_SPICE) */
400
401#if defined(CONFIG_SPICE)
402void visit_type_q_obj_SPICE_DISCONNECTED_arg_members(Visitor *v, q_obj_SPICE_DISCONNECTED_arg *obj, Error **errp)
403{
404 Error *err = NULL;
405
406 visit_type_SpiceBasicInfo(v, "server", &obj->server, &err);
407 if (err) {
408 goto out;
409 }
410 visit_type_SpiceBasicInfo(v, "client", &obj->client, &err);
411 if (err) {
412 goto out;
413 }
414
415out:
416 error_propagate(errp, err);
417}
418#endif /* defined(CONFIG_SPICE) */
419
420#if defined(CONFIG_VNC)
421void visit_type_VncBasicInfo_members(Visitor *v, VncBasicInfo *obj, Error **errp)
422{
423 Error *err = NULL;
424
425 visit_type_str(v, "host", &obj->host, &err);
426 if (err) {
427 goto out;
428 }
429 visit_type_str(v, "service", &obj->service, &err);
430 if (err) {
431 goto out;
432 }
433 visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
434 if (err) {
435 goto out;
436 }
437 visit_type_bool(v, "websocket", &obj->websocket, &err);
438 if (err) {
439 goto out;
440 }
441
442out:
443 error_propagate(errp, err);
444}
445
446void visit_type_VncBasicInfo(Visitor *v, const char *name, VncBasicInfo **obj, Error **errp)
447{
448 Error *err = NULL;
449
450 visit_start_struct(v, name, (void **)obj, sizeof(VncBasicInfo), &err);
451 if (err) {
452 goto out;
453 }
454 if (!*obj) {
455 goto out_obj;
456 }
457 visit_type_VncBasicInfo_members(v, *obj, &err);
458 if (err) {
459 goto out_obj;
460 }
461 visit_check_struct(v, &err);
462out_obj:
463 visit_end_struct(v, (void **)obj);
464 if (err && visit_is_input(v)) {
465 qapi_free_VncBasicInfo(*obj);
466 *obj = NULL;
467 }
468out:
469 error_propagate(errp, err);
470}
471#endif /* defined(CONFIG_VNC) */
472
473#if defined(CONFIG_VNC)
474void visit_type_VncServerInfo_members(Visitor *v, VncServerInfo *obj, Error **errp)
475{
476 Error *err = NULL;
477
478 visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
479 if (err) {
480 goto out;
481 }
482 if (visit_optional(v, "auth", &obj->has_auth)) {
483 visit_type_str(v, "auth", &obj->auth, &err);
484 if (err) {
485 goto out;
486 }
487 }
488
489out:
490 error_propagate(errp, err);
491}
492
493void visit_type_VncServerInfo(Visitor *v, const char *name, VncServerInfo **obj, Error **errp)
494{
495 Error *err = NULL;
496
497 visit_start_struct(v, name, (void **)obj, sizeof(VncServerInfo), &err);
498 if (err) {
499 goto out;
500 }
501 if (!*obj) {
502 goto out_obj;
503 }
504 visit_type_VncServerInfo_members(v, *obj, &err);
505 if (err) {
506 goto out_obj;
507 }
508 visit_check_struct(v, &err);
509out_obj:
510 visit_end_struct(v, (void **)obj);
511 if (err && visit_is_input(v)) {
512 qapi_free_VncServerInfo(*obj);
513 *obj = NULL;
514 }
515out:
516 error_propagate(errp, err);
517}
518#endif /* defined(CONFIG_VNC) */
519
520#if defined(CONFIG_VNC)
521void visit_type_VncClientInfo_members(Visitor *v, VncClientInfo *obj, Error **errp)
522{
523 Error *err = NULL;
524
525 visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
526 if (err) {
527 goto out;
528 }
529 if (visit_optional(v, "x509_dname", &obj->has_x509_dname)) {
530 visit_type_str(v, "x509_dname", &obj->x509_dname, &err);
531 if (err) {
532 goto out;
533 }
534 }
535 if (visit_optional(v, "sasl_username", &obj->has_sasl_username)) {
536 visit_type_str(v, "sasl_username", &obj->sasl_username, &err);
537 if (err) {
538 goto out;
539 }
540 }
541
542out:
543 error_propagate(errp, err);
544}
545
546void visit_type_VncClientInfo(Visitor *v, const char *name, VncClientInfo **obj, Error **errp)
547{
548 Error *err = NULL;
549
550 visit_start_struct(v, name, (void **)obj, sizeof(VncClientInfo), &err);
551 if (err) {
552 goto out;
553 }
554 if (!*obj) {
555 goto out_obj;
556 }
557 visit_type_VncClientInfo_members(v, *obj, &err);
558 if (err) {
559 goto out_obj;
560 }
561 visit_check_struct(v, &err);
562out_obj:
563 visit_end_struct(v, (void **)obj);
564 if (err && visit_is_input(v)) {
565 qapi_free_VncClientInfo(*obj);
566 *obj = NULL;
567 }
568out:
569 error_propagate(errp, err);
570}
571#endif /* defined(CONFIG_VNC) */
572
573#if defined(CONFIG_VNC)
574void visit_type_VncClientInfoList(Visitor *v, const char *name, VncClientInfoList **obj, Error **errp)
575{
576 Error *err = NULL;
577 VncClientInfoList *tail;
578 size_t size = sizeof(**obj);
579
580 visit_start_list(v, name, (GenericList **)obj, size, &err);
581 if (err) {
582 goto out;
583 }
584
585 for (tail = *obj; tail;
586 tail = (VncClientInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
587 visit_type_VncClientInfo(v, NULL, &tail->value, &err);
588 if (err) {
589 break;
590 }
591 }
592
593 if (!err) {
594 visit_check_list(v, &err);
595 }
596 visit_end_list(v, (void **)obj);
597 if (err && visit_is_input(v)) {
598 qapi_free_VncClientInfoList(*obj);
599 *obj = NULL;
600 }
601out:
602 error_propagate(errp, err);
603}
604#endif /* defined(CONFIG_VNC) */
605
606#if defined(CONFIG_VNC)
607void visit_type_VncInfo_members(Visitor *v, VncInfo *obj, Error **errp)
608{
609 Error *err = NULL;
610
611 visit_type_bool(v, "enabled", &obj->enabled, &err);
612 if (err) {
613 goto out;
614 }
615 if (visit_optional(v, "host", &obj->has_host)) {
616 visit_type_str(v, "host", &obj->host, &err);
617 if (err) {
618 goto out;
619 }
620 }
621 if (visit_optional(v, "family", &obj->has_family)) {
622 visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
623 if (err) {
624 goto out;
625 }
626 }
627 if (visit_optional(v, "service", &obj->has_service)) {
628 visit_type_str(v, "service", &obj->service, &err);
629 if (err) {
630 goto out;
631 }
632 }
633 if (visit_optional(v, "auth", &obj->has_auth)) {
634 visit_type_str(v, "auth", &obj->auth, &err);
635 if (err) {
636 goto out;
637 }
638 }
639 if (visit_optional(v, "clients", &obj->has_clients)) {
640 visit_type_VncClientInfoList(v, "clients", &obj->clients, &err);
641 if (err) {
642 goto out;
643 }
644 }
645
646out:
647 error_propagate(errp, err);
648}
649
650void visit_type_VncInfo(Visitor *v, const char *name, VncInfo **obj, Error **errp)
651{
652 Error *err = NULL;
653
654 visit_start_struct(v, name, (void **)obj, sizeof(VncInfo), &err);
655 if (err) {
656 goto out;
657 }
658 if (!*obj) {
659 goto out_obj;
660 }
661 visit_type_VncInfo_members(v, *obj, &err);
662 if (err) {
663 goto out_obj;
664 }
665 visit_check_struct(v, &err);
666out_obj:
667 visit_end_struct(v, (void **)obj);
668 if (err && visit_is_input(v)) {
669 qapi_free_VncInfo(*obj);
670 *obj = NULL;
671 }
672out:
673 error_propagate(errp, err);
674}
675#endif /* defined(CONFIG_VNC) */
676
677#if defined(CONFIG_VNC)
678void visit_type_VncPrimaryAuth(Visitor *v, const char *name, VncPrimaryAuth *obj, Error **errp)
679{
680 int value = *obj;
681 visit_type_enum(v, name, &value, &VncPrimaryAuth_lookup, errp);
682 *obj = value;
683}
684#endif /* defined(CONFIG_VNC) */
685
686#if defined(CONFIG_VNC)
687void visit_type_VncVencryptSubAuth(Visitor *v, const char *name, VncVencryptSubAuth *obj, Error **errp)
688{
689 int value = *obj;
690 visit_type_enum(v, name, &value, &VncVencryptSubAuth_lookup, errp);
691 *obj = value;
692}
693#endif /* defined(CONFIG_VNC) */
694
695#if defined(CONFIG_VNC)
696void visit_type_VncServerInfo2_members(Visitor *v, VncServerInfo2 *obj, Error **errp)
697{
698 Error *err = NULL;
699
700 visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
701 if (err) {
702 goto out;
703 }
704 visit_type_VncPrimaryAuth(v, "auth", &obj->auth, &err);
705 if (err) {
706 goto out;
707 }
708 if (visit_optional(v, "vencrypt", &obj->has_vencrypt)) {
709 visit_type_VncVencryptSubAuth(v, "vencrypt", &obj->vencrypt, &err);
710 if (err) {
711 goto out;
712 }
713 }
714
715out:
716 error_propagate(errp, err);
717}
718
719void visit_type_VncServerInfo2(Visitor *v, const char *name, VncServerInfo2 **obj, Error **errp)
720{
721 Error *err = NULL;
722
723 visit_start_struct(v, name, (void **)obj, sizeof(VncServerInfo2), &err);
724 if (err) {
725 goto out;
726 }
727 if (!*obj) {
728 goto out_obj;
729 }
730 visit_type_VncServerInfo2_members(v, *obj, &err);
731 if (err) {
732 goto out_obj;
733 }
734 visit_check_struct(v, &err);
735out_obj:
736 visit_end_struct(v, (void **)obj);
737 if (err && visit_is_input(v)) {
738 qapi_free_VncServerInfo2(*obj);
739 *obj = NULL;
740 }
741out:
742 error_propagate(errp, err);
743}
744#endif /* defined(CONFIG_VNC) */
745
746#if defined(CONFIG_VNC)
747void visit_type_VncServerInfo2List(Visitor *v, const char *name, VncServerInfo2List **obj, Error **errp)
748{
749 Error *err = NULL;
750 VncServerInfo2List *tail;
751 size_t size = sizeof(**obj);
752
753 visit_start_list(v, name, (GenericList **)obj, size, &err);
754 if (err) {
755 goto out;
756 }
757
758 for (tail = *obj; tail;
759 tail = (VncServerInfo2List *)visit_next_list(v, (GenericList *)tail, size)) {
760 visit_type_VncServerInfo2(v, NULL, &tail->value, &err);
761 if (err) {
762 break;
763 }
764 }
765
766 if (!err) {
767 visit_check_list(v, &err);
768 }
769 visit_end_list(v, (void **)obj);
770 if (err && visit_is_input(v)) {
771 qapi_free_VncServerInfo2List(*obj);
772 *obj = NULL;
773 }
774out:
775 error_propagate(errp, err);
776}
777#endif /* defined(CONFIG_VNC) */
778
779#if defined(CONFIG_VNC)
780void visit_type_VncInfo2_members(Visitor *v, VncInfo2 *obj, Error **errp)
781{
782 Error *err = NULL;
783
784 visit_type_str(v, "id", &obj->id, &err);
785 if (err) {
786 goto out;
787 }
788 visit_type_VncServerInfo2List(v, "server", &obj->server, &err);
789 if (err) {
790 goto out;
791 }
792 visit_type_VncClientInfoList(v, "clients", &obj->clients, &err);
793 if (err) {
794 goto out;
795 }
796 visit_type_VncPrimaryAuth(v, "auth", &obj->auth, &err);
797 if (err) {
798 goto out;
799 }
800 if (visit_optional(v, "vencrypt", &obj->has_vencrypt)) {
801 visit_type_VncVencryptSubAuth(v, "vencrypt", &obj->vencrypt, &err);
802 if (err) {
803 goto out;
804 }
805 }
806 if (visit_optional(v, "display", &obj->has_display)) {
807 visit_type_str(v, "display", &obj->display, &err);
808 if (err) {
809 goto out;
810 }
811 }
812
813out:
814 error_propagate(errp, err);
815}
816
817void visit_type_VncInfo2(Visitor *v, const char *name, VncInfo2 **obj, Error **errp)
818{
819 Error *err = NULL;
820
821 visit_start_struct(v, name, (void **)obj, sizeof(VncInfo2), &err);
822 if (err) {
823 goto out;
824 }
825 if (!*obj) {
826 goto out_obj;
827 }
828 visit_type_VncInfo2_members(v, *obj, &err);
829 if (err) {
830 goto out_obj;
831 }
832 visit_check_struct(v, &err);
833out_obj:
834 visit_end_struct(v, (void **)obj);
835 if (err && visit_is_input(v)) {
836 qapi_free_VncInfo2(*obj);
837 *obj = NULL;
838 }
839out:
840 error_propagate(errp, err);
841}
842#endif /* defined(CONFIG_VNC) */
843
844#if defined(CONFIG_VNC)
845void visit_type_VncInfo2List(Visitor *v, const char *name, VncInfo2List **obj, Error **errp)
846{
847 Error *err = NULL;
848 VncInfo2List *tail;
849 size_t size = sizeof(**obj);
850
851 visit_start_list(v, name, (GenericList **)obj, size, &err);
852 if (err) {
853 goto out;
854 }
855
856 for (tail = *obj; tail;
857 tail = (VncInfo2List *)visit_next_list(v, (GenericList *)tail, size)) {
858 visit_type_VncInfo2(v, NULL, &tail->value, &err);
859 if (err) {
860 break;
861 }
862 }
863
864 if (!err) {
865 visit_check_list(v, &err);
866 }
867 visit_end_list(v, (void **)obj);
868 if (err && visit_is_input(v)) {
869 qapi_free_VncInfo2List(*obj);
870 *obj = NULL;
871 }
872out:
873 error_propagate(errp, err);
874}
875#endif /* defined(CONFIG_VNC) */
876
877#if defined(CONFIG_VNC)
878void visit_type_q_obj_change_vnc_password_arg_members(Visitor *v, q_obj_change_vnc_password_arg *obj, Error **errp)
879{
880 Error *err = NULL;
881
882 visit_type_str(v, "password", &obj->password, &err);
883 if (err) {
884 goto out;
885 }
886
887out:
888 error_propagate(errp, err);
889}
890#endif /* defined(CONFIG_VNC) */
891
892#if defined(CONFIG_VNC)
893void visit_type_q_obj_VNC_CONNECTED_arg_members(Visitor *v, q_obj_VNC_CONNECTED_arg *obj, Error **errp)
894{
895 Error *err = NULL;
896
897 visit_type_VncServerInfo(v, "server", &obj->server, &err);
898 if (err) {
899 goto out;
900 }
901 visit_type_VncBasicInfo(v, "client", &obj->client, &err);
902 if (err) {
903 goto out;
904 }
905
906out:
907 error_propagate(errp, err);
908}
909#endif /* defined(CONFIG_VNC) */
910
911#if defined(CONFIG_VNC)
912void visit_type_q_obj_VNC_INITIALIZED_arg_members(Visitor *v, q_obj_VNC_INITIALIZED_arg *obj, Error **errp)
913{
914 Error *err = NULL;
915
916 visit_type_VncServerInfo(v, "server", &obj->server, &err);
917 if (err) {
918 goto out;
919 }
920 visit_type_VncClientInfo(v, "client", &obj->client, &err);
921 if (err) {
922 goto out;
923 }
924
925out:
926 error_propagate(errp, err);
927}
928#endif /* defined(CONFIG_VNC) */
929
930#if defined(CONFIG_VNC)
931void visit_type_q_obj_VNC_DISCONNECTED_arg_members(Visitor *v, q_obj_VNC_DISCONNECTED_arg *obj, Error **errp)
932{
933 Error *err = NULL;
934
935 visit_type_VncServerInfo(v, "server", &obj->server, &err);
936 if (err) {
937 goto out;
938 }
939 visit_type_VncClientInfo(v, "client", &obj->client, &err);
940 if (err) {
941 goto out;
942 }
943
944out:
945 error_propagate(errp, err);
946}
947#endif /* defined(CONFIG_VNC) */
948
949void visit_type_MouseInfo_members(Visitor *v, MouseInfo *obj, Error **errp)
950{
951 Error *err = NULL;
952
953 visit_type_str(v, "name", &obj->name, &err);
954 if (err) {
955 goto out;
956 }
957 visit_type_int(v, "index", &obj->index, &err);
958 if (err) {
959 goto out;
960 }
961 visit_type_bool(v, "current", &obj->current, &err);
962 if (err) {
963 goto out;
964 }
965 visit_type_bool(v, "absolute", &obj->absolute, &err);
966 if (err) {
967 goto out;
968 }
969
970out:
971 error_propagate(errp, err);
972}
973
974void visit_type_MouseInfo(Visitor *v, const char *name, MouseInfo **obj, Error **errp)
975{
976 Error *err = NULL;
977
978 visit_start_struct(v, name, (void **)obj, sizeof(MouseInfo), &err);
979 if (err) {
980 goto out;
981 }
982 if (!*obj) {
983 goto out_obj;
984 }
985 visit_type_MouseInfo_members(v, *obj, &err);
986 if (err) {
987 goto out_obj;
988 }
989 visit_check_struct(v, &err);
990out_obj:
991 visit_end_struct(v, (void **)obj);
992 if (err && visit_is_input(v)) {
993 qapi_free_MouseInfo(*obj);
994 *obj = NULL;
995 }
996out:
997 error_propagate(errp, err);
998}
999
1000void visit_type_MouseInfoList(Visitor *v, const char *name, MouseInfoList **obj, Error **errp)
1001{
1002 Error *err = NULL;
1003 MouseInfoList *tail;
1004 size_t size = sizeof(**obj);
1005
1006 visit_start_list(v, name, (GenericList **)obj, size, &err);
1007 if (err) {
1008 goto out;
1009 }
1010
1011 for (tail = *obj; tail;
1012 tail = (MouseInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
1013 visit_type_MouseInfo(v, NULL, &tail->value, &err);
1014 if (err) {
1015 break;
1016 }
1017 }
1018
1019 if (!err) {
1020 visit_check_list(v, &err);
1021 }
1022 visit_end_list(v, (void **)obj);
1023 if (err && visit_is_input(v)) {
1024 qapi_free_MouseInfoList(*obj);
1025 *obj = NULL;
1026 }
1027out:
1028 error_propagate(errp, err);
1029}
1030
1031void visit_type_QKeyCode(Visitor *v, const char *name, QKeyCode *obj, Error **errp)
1032{
1033 int value = *obj;
1034 visit_type_enum(v, name, &value, &QKeyCode_lookup, errp);
1035 *obj = value;
1036}
1037
1038void visit_type_q_obj_int_wrapper_members(Visitor *v, q_obj_int_wrapper *obj, Error **errp)
1039{
1040 Error *err = NULL;
1041
1042 visit_type_int(v, "data", &obj->data, &err);
1043 if (err) {
1044 goto out;
1045 }
1046
1047out:
1048 error_propagate(errp, err);
1049}
1050
1051void visit_type_q_obj_QKeyCode_wrapper_members(Visitor *v, q_obj_QKeyCode_wrapper *obj, Error **errp)
1052{
1053 Error *err = NULL;
1054
1055 visit_type_QKeyCode(v, "data", &obj->data, &err);
1056 if (err) {
1057 goto out;
1058 }
1059
1060out:
1061 error_propagate(errp, err);
1062}
1063
1064void visit_type_KeyValueKind(Visitor *v, const char *name, KeyValueKind *obj, Error **errp)
1065{
1066 int value = *obj;
1067 visit_type_enum(v, name, &value, &KeyValueKind_lookup, errp);
1068 *obj = value;
1069}
1070
1071void visit_type_KeyValue_members(Visitor *v, KeyValue *obj, Error **errp)
1072{
1073 Error *err = NULL;
1074
1075 visit_type_KeyValueKind(v, "type", &obj->type, &err);
1076 if (err) {
1077 goto out;
1078 }
1079 switch (obj->type) {
1080 case KEY_VALUE_KIND_NUMBER:
1081 visit_type_q_obj_int_wrapper_members(v, &obj->u.number, &err);
1082 break;
1083 case KEY_VALUE_KIND_QCODE:
1084 visit_type_q_obj_QKeyCode_wrapper_members(v, &obj->u.qcode, &err);
1085 break;
1086 default:
1087 abort();
1088 }
1089
1090out:
1091 error_propagate(errp, err);
1092}
1093
1094void visit_type_KeyValue(Visitor *v, const char *name, KeyValue **obj, Error **errp)
1095{
1096 Error *err = NULL;
1097
1098 visit_start_struct(v, name, (void **)obj, sizeof(KeyValue), &err);
1099 if (err) {
1100 goto out;
1101 }
1102 if (!*obj) {
1103 goto out_obj;
1104 }
1105 visit_type_KeyValue_members(v, *obj, &err);
1106 if (err) {
1107 goto out_obj;
1108 }
1109 visit_check_struct(v, &err);
1110out_obj:
1111 visit_end_struct(v, (void **)obj);
1112 if (err && visit_is_input(v)) {
1113 qapi_free_KeyValue(*obj);
1114 *obj = NULL;
1115 }
1116out:
1117 error_propagate(errp, err);
1118}
1119
1120void visit_type_KeyValueList(Visitor *v, const char *name, KeyValueList **obj, Error **errp)
1121{
1122 Error *err = NULL;
1123 KeyValueList *tail;
1124 size_t size = sizeof(**obj);
1125
1126 visit_start_list(v, name, (GenericList **)obj, size, &err);
1127 if (err) {
1128 goto out;
1129 }
1130
1131 for (tail = *obj; tail;
1132 tail = (KeyValueList *)visit_next_list(v, (GenericList *)tail, size)) {
1133 visit_type_KeyValue(v, NULL, &tail->value, &err);
1134 if (err) {
1135 break;
1136 }
1137 }
1138
1139 if (!err) {
1140 visit_check_list(v, &err);
1141 }
1142 visit_end_list(v, (void **)obj);
1143 if (err && visit_is_input(v)) {
1144 qapi_free_KeyValueList(*obj);
1145 *obj = NULL;
1146 }
1147out:
1148 error_propagate(errp, err);
1149}
1150
1151void visit_type_q_obj_send_key_arg_members(Visitor *v, q_obj_send_key_arg *obj, Error **errp)
1152{
1153 Error *err = NULL;
1154
1155 visit_type_KeyValueList(v, "keys", &obj->keys, &err);
1156 if (err) {
1157 goto out;
1158 }
1159 if (visit_optional(v, "hold-time", &obj->has_hold_time)) {
1160 visit_type_int(v, "hold-time", &obj->hold_time, &err);
1161 if (err) {
1162 goto out;
1163 }
1164 }
1165
1166out:
1167 error_propagate(errp, err);
1168}
1169
1170void visit_type_InputButton(Visitor *v, const char *name, InputButton *obj, Error **errp)
1171{
1172 int value = *obj;
1173 visit_type_enum(v, name, &value, &InputButton_lookup, errp);
1174 *obj = value;
1175}
1176
1177void visit_type_InputAxis(Visitor *v, const char *name, InputAxis *obj, Error **errp)
1178{
1179 int value = *obj;
1180 visit_type_enum(v, name, &value, &InputAxis_lookup, errp);
1181 *obj = value;
1182}
1183
1184void visit_type_InputKeyEvent_members(Visitor *v, InputKeyEvent *obj, Error **errp)
1185{
1186 Error *err = NULL;
1187
1188 visit_type_KeyValue(v, "key", &obj->key, &err);
1189 if (err) {
1190 goto out;
1191 }
1192 visit_type_bool(v, "down", &obj->down, &err);
1193 if (err) {
1194 goto out;
1195 }
1196
1197out:
1198 error_propagate(errp, err);
1199}
1200
1201void visit_type_InputKeyEvent(Visitor *v, const char *name, InputKeyEvent **obj, Error **errp)
1202{
1203 Error *err = NULL;
1204
1205 visit_start_struct(v, name, (void **)obj, sizeof(InputKeyEvent), &err);
1206 if (err) {
1207 goto out;
1208 }
1209 if (!*obj) {
1210 goto out_obj;
1211 }
1212 visit_type_InputKeyEvent_members(v, *obj, &err);
1213 if (err) {
1214 goto out_obj;
1215 }
1216 visit_check_struct(v, &err);
1217out_obj:
1218 visit_end_struct(v, (void **)obj);
1219 if (err && visit_is_input(v)) {
1220 qapi_free_InputKeyEvent(*obj);
1221 *obj = NULL;
1222 }
1223out:
1224 error_propagate(errp, err);
1225}
1226
1227void visit_type_InputBtnEvent_members(Visitor *v, InputBtnEvent *obj, Error **errp)
1228{
1229 Error *err = NULL;
1230
1231 visit_type_InputButton(v, "button", &obj->button, &err);
1232 if (err) {
1233 goto out;
1234 }
1235 visit_type_bool(v, "down", &obj->down, &err);
1236 if (err) {
1237 goto out;
1238 }
1239
1240out:
1241 error_propagate(errp, err);
1242}
1243
1244void visit_type_InputBtnEvent(Visitor *v, const char *name, InputBtnEvent **obj, Error **errp)
1245{
1246 Error *err = NULL;
1247
1248 visit_start_struct(v, name, (void **)obj, sizeof(InputBtnEvent), &err);
1249 if (err) {
1250 goto out;
1251 }
1252 if (!*obj) {
1253 goto out_obj;
1254 }
1255 visit_type_InputBtnEvent_members(v, *obj, &err);
1256 if (err) {
1257 goto out_obj;
1258 }
1259 visit_check_struct(v, &err);
1260out_obj:
1261 visit_end_struct(v, (void **)obj);
1262 if (err && visit_is_input(v)) {
1263 qapi_free_InputBtnEvent(*obj);
1264 *obj = NULL;
1265 }
1266out:
1267 error_propagate(errp, err);
1268}
1269
1270void visit_type_InputMoveEvent_members(Visitor *v, InputMoveEvent *obj, Error **errp)
1271{
1272 Error *err = NULL;
1273
1274 visit_type_InputAxis(v, "axis", &obj->axis, &err);
1275 if (err) {
1276 goto out;
1277 }
1278 visit_type_int(v, "value", &obj->value, &err);
1279 if (err) {
1280 goto out;
1281 }
1282
1283out:
1284 error_propagate(errp, err);
1285}
1286
1287void visit_type_InputMoveEvent(Visitor *v, const char *name, InputMoveEvent **obj, Error **errp)
1288{
1289 Error *err = NULL;
1290
1291 visit_start_struct(v, name, (void **)obj, sizeof(InputMoveEvent), &err);
1292 if (err) {
1293 goto out;
1294 }
1295 if (!*obj) {
1296 goto out_obj;
1297 }
1298 visit_type_InputMoveEvent_members(v, *obj, &err);
1299 if (err) {
1300 goto out_obj;
1301 }
1302 visit_check_struct(v, &err);
1303out_obj:
1304 visit_end_struct(v, (void **)obj);
1305 if (err && visit_is_input(v)) {
1306 qapi_free_InputMoveEvent(*obj);
1307 *obj = NULL;
1308 }
1309out:
1310 error_propagate(errp, err);
1311}
1312
1313void visit_type_q_obj_InputKeyEvent_wrapper_members(Visitor *v, q_obj_InputKeyEvent_wrapper *obj, Error **errp)
1314{
1315 Error *err = NULL;
1316
1317 visit_type_InputKeyEvent(v, "data", &obj->data, &err);
1318 if (err) {
1319 goto out;
1320 }
1321
1322out:
1323 error_propagate(errp, err);
1324}
1325
1326void visit_type_q_obj_InputBtnEvent_wrapper_members(Visitor *v, q_obj_InputBtnEvent_wrapper *obj, Error **errp)
1327{
1328 Error *err = NULL;
1329
1330 visit_type_InputBtnEvent(v, "data", &obj->data, &err);
1331 if (err) {
1332 goto out;
1333 }
1334
1335out:
1336 error_propagate(errp, err);
1337}
1338
1339void visit_type_q_obj_InputMoveEvent_wrapper_members(Visitor *v, q_obj_InputMoveEvent_wrapper *obj, Error **errp)
1340{
1341 Error *err = NULL;
1342
1343 visit_type_InputMoveEvent(v, "data", &obj->data, &err);
1344 if (err) {
1345 goto out;
1346 }
1347
1348out:
1349 error_propagate(errp, err);
1350}
1351
1352void visit_type_InputEventKind(Visitor *v, const char *name, InputEventKind *obj, Error **errp)
1353{
1354 int value = *obj;
1355 visit_type_enum(v, name, &value, &InputEventKind_lookup, errp);
1356 *obj = value;
1357}
1358
1359void visit_type_InputEvent_members(Visitor *v, InputEvent *obj, Error **errp)
1360{
1361 Error *err = NULL;
1362
1363 visit_type_InputEventKind(v, "type", &obj->type, &err);
1364 if (err) {
1365 goto out;
1366 }
1367 switch (obj->type) {
1368 case INPUT_EVENT_KIND_KEY:
1369 visit_type_q_obj_InputKeyEvent_wrapper_members(v, &obj->u.key, &err);
1370 break;
1371 case INPUT_EVENT_KIND_BTN:
1372 visit_type_q_obj_InputBtnEvent_wrapper_members(v, &obj->u.btn, &err);
1373 break;
1374 case INPUT_EVENT_KIND_REL:
1375 visit_type_q_obj_InputMoveEvent_wrapper_members(v, &obj->u.rel, &err);
1376 break;
1377 case INPUT_EVENT_KIND_ABS:
1378 visit_type_q_obj_InputMoveEvent_wrapper_members(v, &obj->u.abs, &err);
1379 break;
1380 default:
1381 abort();
1382 }
1383
1384out:
1385 error_propagate(errp, err);
1386}
1387
1388void visit_type_InputEvent(Visitor *v, const char *name, InputEvent **obj, Error **errp)
1389{
1390 Error *err = NULL;
1391
1392 visit_start_struct(v, name, (void **)obj, sizeof(InputEvent), &err);
1393 if (err) {
1394 goto out;
1395 }
1396 if (!*obj) {
1397 goto out_obj;
1398 }
1399 visit_type_InputEvent_members(v, *obj, &err);
1400 if (err) {
1401 goto out_obj;
1402 }
1403 visit_check_struct(v, &err);
1404out_obj:
1405 visit_end_struct(v, (void **)obj);
1406 if (err && visit_is_input(v)) {
1407 qapi_free_InputEvent(*obj);
1408 *obj = NULL;
1409 }
1410out:
1411 error_propagate(errp, err);
1412}
1413
1414void visit_type_InputEventList(Visitor *v, const char *name, InputEventList **obj, Error **errp)
1415{
1416 Error *err = NULL;
1417 InputEventList *tail;
1418 size_t size = sizeof(**obj);
1419
1420 visit_start_list(v, name, (GenericList **)obj, size, &err);
1421 if (err) {
1422 goto out;
1423 }
1424
1425 for (tail = *obj; tail;
1426 tail = (InputEventList *)visit_next_list(v, (GenericList *)tail, size)) {
1427 visit_type_InputEvent(v, NULL, &tail->value, &err);
1428 if (err) {
1429 break;
1430 }
1431 }
1432
1433 if (!err) {
1434 visit_check_list(v, &err);
1435 }
1436 visit_end_list(v, (void **)obj);
1437 if (err && visit_is_input(v)) {
1438 qapi_free_InputEventList(*obj);
1439 *obj = NULL;
1440 }
1441out:
1442 error_propagate(errp, err);
1443}
1444
1445void visit_type_q_obj_input_send_event_arg_members(Visitor *v, q_obj_input_send_event_arg *obj, Error **errp)
1446{
1447 Error *err = NULL;
1448
1449 if (visit_optional(v, "device", &obj->has_device)) {
1450 visit_type_str(v, "device", &obj->device, &err);
1451 if (err) {
1452 goto out;
1453 }
1454 }
1455 if (visit_optional(v, "head", &obj->has_head)) {
1456 visit_type_int(v, "head", &obj->head, &err);
1457 if (err) {
1458 goto out;
1459 }
1460 }
1461 visit_type_InputEventList(v, "events", &obj->events, &err);
1462 if (err) {
1463 goto out;
1464 }
1465
1466out:
1467 error_propagate(errp, err);
1468}
1469
1470void visit_type_GrabToggleKeys(Visitor *v, const char *name, GrabToggleKeys *obj, Error **errp)
1471{
1472 int value = *obj;
1473 visit_type_enum(v, name, &value, &GrabToggleKeys_lookup, errp);
1474 *obj = value;
1475}
1476
1477void visit_type_DisplayGTK_members(Visitor *v, DisplayGTK *obj, Error **errp)
1478{
1479 Error *err = NULL;
1480
1481 if (visit_optional(v, "grab-on-hover", &obj->has_grab_on_hover)) {
1482 visit_type_bool(v, "grab-on-hover", &obj->grab_on_hover, &err);
1483 if (err) {
1484 goto out;
1485 }
1486 }
1487 if (visit_optional(v, "zoom-to-fit", &obj->has_zoom_to_fit)) {
1488 visit_type_bool(v, "zoom-to-fit", &obj->zoom_to_fit, &err);
1489 if (err) {
1490 goto out;
1491 }
1492 }
1493
1494out:
1495 error_propagate(errp, err);
1496}
1497
1498void visit_type_DisplayGTK(Visitor *v, const char *name, DisplayGTK **obj, Error **errp)
1499{
1500 Error *err = NULL;
1501
1502 visit_start_struct(v, name, (void **)obj, sizeof(DisplayGTK), &err);
1503 if (err) {
1504 goto out;
1505 }
1506 if (!*obj) {
1507 goto out_obj;
1508 }
1509 visit_type_DisplayGTK_members(v, *obj, &err);
1510 if (err) {
1511 goto out_obj;
1512 }
1513 visit_check_struct(v, &err);
1514out_obj:
1515 visit_end_struct(v, (void **)obj);
1516 if (err && visit_is_input(v)) {
1517 qapi_free_DisplayGTK(*obj);
1518 *obj = NULL;
1519 }
1520out:
1521 error_propagate(errp, err);
1522}
1523
1524void visit_type_DisplayEGLHeadless_members(Visitor *v, DisplayEGLHeadless *obj, Error **errp)
1525{
1526 Error *err = NULL;
1527
1528 if (visit_optional(v, "rendernode", &obj->has_rendernode)) {
1529 visit_type_str(v, "rendernode", &obj->rendernode, &err);
1530 if (err) {
1531 goto out;
1532 }
1533 }
1534
1535out:
1536 error_propagate(errp, err);
1537}
1538
1539void visit_type_DisplayEGLHeadless(Visitor *v, const char *name, DisplayEGLHeadless **obj, Error **errp)
1540{
1541 Error *err = NULL;
1542
1543 visit_start_struct(v, name, (void **)obj, sizeof(DisplayEGLHeadless), &err);
1544 if (err) {
1545 goto out;
1546 }
1547 if (!*obj) {
1548 goto out_obj;
1549 }
1550 visit_type_DisplayEGLHeadless_members(v, *obj, &err);
1551 if (err) {
1552 goto out_obj;
1553 }
1554 visit_check_struct(v, &err);
1555out_obj:
1556 visit_end_struct(v, (void **)obj);
1557 if (err && visit_is_input(v)) {
1558 qapi_free_DisplayEGLHeadless(*obj);
1559 *obj = NULL;
1560 }
1561out:
1562 error_propagate(errp, err);
1563}
1564
1565void visit_type_DisplayGLMode(Visitor *v, const char *name, DisplayGLMode *obj, Error **errp)
1566{
1567 int value = *obj;
1568 visit_type_enum(v, name, &value, &DisplayGLMode_lookup, errp);
1569 *obj = value;
1570}
1571
1572void visit_type_DisplayCurses_members(Visitor *v, DisplayCurses *obj, Error **errp)
1573{
1574 Error *err = NULL;
1575
1576 if (visit_optional(v, "charset", &obj->has_charset)) {
1577 visit_type_str(v, "charset", &obj->charset, &err);
1578 if (err) {
1579 goto out;
1580 }
1581 }
1582
1583out:
1584 error_propagate(errp, err);
1585}
1586
1587void visit_type_DisplayCurses(Visitor *v, const char *name, DisplayCurses **obj, Error **errp)
1588{
1589 Error *err = NULL;
1590
1591 visit_start_struct(v, name, (void **)obj, sizeof(DisplayCurses), &err);
1592 if (err) {
1593 goto out;
1594 }
1595 if (!*obj) {
1596 goto out_obj;
1597 }
1598 visit_type_DisplayCurses_members(v, *obj, &err);
1599 if (err) {
1600 goto out_obj;
1601 }
1602 visit_check_struct(v, &err);
1603out_obj:
1604 visit_end_struct(v, (void **)obj);
1605 if (err && visit_is_input(v)) {
1606 qapi_free_DisplayCurses(*obj);
1607 *obj = NULL;
1608 }
1609out:
1610 error_propagate(errp, err);
1611}
1612
1613void visit_type_DisplayType(Visitor *v, const char *name, DisplayType *obj, Error **errp)
1614{
1615 int value = *obj;
1616 visit_type_enum(v, name, &value, &DisplayType_lookup, errp);
1617 *obj = value;
1618}
1619
1620void visit_type_q_obj_DisplayOptions_base_members(Visitor *v, q_obj_DisplayOptions_base *obj, Error **errp)
1621{
1622 Error *err = NULL;
1623
1624 visit_type_DisplayType(v, "type", &obj->type, &err);
1625 if (err) {
1626 goto out;
1627 }
1628 if (visit_optional(v, "full-screen", &obj->has_full_screen)) {
1629 visit_type_bool(v, "full-screen", &obj->full_screen, &err);
1630 if (err) {
1631 goto out;
1632 }
1633 }
1634 if (visit_optional(v, "window-close", &obj->has_window_close)) {
1635 visit_type_bool(v, "window-close", &obj->window_close, &err);
1636 if (err) {
1637 goto out;
1638 }
1639 }
1640 if (visit_optional(v, "gl", &obj->has_gl)) {
1641 visit_type_DisplayGLMode(v, "gl", &obj->gl, &err);
1642 if (err) {
1643 goto out;
1644 }
1645 }
1646
1647out:
1648 error_propagate(errp, err);
1649}
1650
1651void visit_type_DisplayOptions_members(Visitor *v, DisplayOptions *obj, Error **errp)
1652{
1653 Error *err = NULL;
1654
1655 visit_type_q_obj_DisplayOptions_base_members(v, (q_obj_DisplayOptions_base *)obj, &err);
1656 if (err) {
1657 goto out;
1658 }
1659 switch (obj->type) {
1660 case DISPLAY_TYPE_GTK:
1661 visit_type_DisplayGTK_members(v, &obj->u.gtk, &err);
1662 break;
1663 case DISPLAY_TYPE_CURSES:
1664 visit_type_DisplayCurses_members(v, &obj->u.curses, &err);
1665 break;
1666 case DISPLAY_TYPE_EGL_HEADLESS:
1667 visit_type_DisplayEGLHeadless_members(v, &obj->u.egl_headless, &err);
1668 break;
1669 case DISPLAY_TYPE_DEFAULT:
1670 break;
1671 case DISPLAY_TYPE_NONE:
1672 break;
1673 case DISPLAY_TYPE_SDL:
1674 break;
1675 case DISPLAY_TYPE_COCOA:
1676 break;
1677 case DISPLAY_TYPE_SPICE_APP:
1678 break;
1679 default:
1680 abort();
1681 }
1682
1683out:
1684 error_propagate(errp, err);
1685}
1686
1687void visit_type_DisplayOptions(Visitor *v, const char *name, DisplayOptions **obj, Error **errp)
1688{
1689 Error *err = NULL;
1690
1691 visit_start_struct(v, name, (void **)obj, sizeof(DisplayOptions), &err);
1692 if (err) {
1693 goto out;
1694 }
1695 if (!*obj) {
1696 goto out_obj;
1697 }
1698 visit_type_DisplayOptions_members(v, *obj, &err);
1699 if (err) {
1700 goto out_obj;
1701 }
1702 visit_check_struct(v, &err);
1703out_obj:
1704 visit_end_struct(v, (void **)obj);
1705 if (err && visit_is_input(v)) {
1706 qapi_free_DisplayOptions(*obj);
1707 *obj = NULL;
1708 }
1709out:
1710 error_propagate(errp, err);
1711}
1712
1713/* Dummy declaration to prevent empty .o file */
1714char qapi_dummy_qapi_visit_ui_c;
1715