1 /* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */ 2 3 /* 4 * schema-defined QAPI visitor functions 5 * 6 * Copyright IBM, Corp. 2011 7 * 8 * Authors: 9 * Anthony Liguori <aliguori (at) us.ibm.com> 10 * 11 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. 12 * See the COPYING.LIB file in the top-level directory. 13 * 14 */ 15 16 #include "qemu-common.h" 17 #include "qapi-visit.h" 18 19 #ifndef QAPI_VISIT_BUILTIN_VISITOR_DEF_H 20 #define QAPI_VISIT_BUILTIN_VISITOR_DEF_H 21 22 23 void visit_type_strList(Visitor *m, strList ** obj, const char *name, Error **errp) 24 { 25 GenericList *i, **prev = (GenericList **)obj; 26 Error *err = NULL; 27 28 if (!error_is_set(errp)) { 29 visit_start_list(m, name, &err); 30 if (!err) { 31 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 32 strList *native_i = (strList *)i; 33 visit_type_str(m, &native_i->value, NULL, &err); 34 } 35 error_propagate(errp, err); 36 err = NULL; 37 38 /* Always call end_list if start_list succeeded. */ 39 visit_end_list(m, &err); 40 } 41 error_propagate(errp, err); 42 } 43 } 44 45 void visit_type_intList(Visitor *m, intList ** obj, const char *name, Error **errp) 46 { 47 GenericList *i, **prev = (GenericList **)obj; 48 Error *err = NULL; 49 50 if (!error_is_set(errp)) { 51 visit_start_list(m, name, &err); 52 if (!err) { 53 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 54 intList *native_i = (intList *)i; 55 visit_type_int(m, &native_i->value, NULL, &err); 56 } 57 error_propagate(errp, err); 58 err = NULL; 59 60 /* Always call end_list if start_list succeeded. */ 61 visit_end_list(m, &err); 62 } 63 error_propagate(errp, err); 64 } 65 } 66 67 void visit_type_numberList(Visitor *m, numberList ** obj, const char *name, Error **errp) 68 { 69 GenericList *i, **prev = (GenericList **)obj; 70 Error *err = NULL; 71 72 if (!error_is_set(errp)) { 73 visit_start_list(m, name, &err); 74 if (!err) { 75 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 76 numberList *native_i = (numberList *)i; 77 visit_type_number(m, &native_i->value, NULL, &err); 78 } 79 error_propagate(errp, err); 80 err = NULL; 81 82 /* Always call end_list if start_list succeeded. */ 83 visit_end_list(m, &err); 84 } 85 error_propagate(errp, err); 86 } 87 } 88 89 void visit_type_boolList(Visitor *m, boolList ** obj, const char *name, Error **errp) 90 { 91 GenericList *i, **prev = (GenericList **)obj; 92 Error *err = NULL; 93 94 if (!error_is_set(errp)) { 95 visit_start_list(m, name, &err); 96 if (!err) { 97 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 98 boolList *native_i = (boolList *)i; 99 visit_type_bool(m, &native_i->value, NULL, &err); 100 } 101 error_propagate(errp, err); 102 err = NULL; 103 104 /* Always call end_list if start_list succeeded. */ 105 visit_end_list(m, &err); 106 } 107 error_propagate(errp, err); 108 } 109 } 110 111 void visit_type_int8List(Visitor *m, int8List ** obj, const char *name, Error **errp) 112 { 113 GenericList *i, **prev = (GenericList **)obj; 114 Error *err = NULL; 115 116 if (!error_is_set(errp)) { 117 visit_start_list(m, name, &err); 118 if (!err) { 119 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 120 int8List *native_i = (int8List *)i; 121 visit_type_int8(m, &native_i->value, NULL, &err); 122 } 123 error_propagate(errp, err); 124 err = NULL; 125 126 /* Always call end_list if start_list succeeded. */ 127 visit_end_list(m, &err); 128 } 129 error_propagate(errp, err); 130 } 131 } 132 133 void visit_type_int16List(Visitor *m, int16List ** obj, const char *name, Error **errp) 134 { 135 GenericList *i, **prev = (GenericList **)obj; 136 Error *err = NULL; 137 138 if (!error_is_set(errp)) { 139 visit_start_list(m, name, &err); 140 if (!err) { 141 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 142 int16List *native_i = (int16List *)i; 143 visit_type_int16(m, &native_i->value, NULL, &err); 144 } 145 error_propagate(errp, err); 146 err = NULL; 147 148 /* Always call end_list if start_list succeeded. */ 149 visit_end_list(m, &err); 150 } 151 error_propagate(errp, err); 152 } 153 } 154 155 void visit_type_int32List(Visitor *m, int32List ** obj, const char *name, Error **errp) 156 { 157 GenericList *i, **prev = (GenericList **)obj; 158 Error *err = NULL; 159 160 if (!error_is_set(errp)) { 161 visit_start_list(m, name, &err); 162 if (!err) { 163 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 164 int32List *native_i = (int32List *)i; 165 visit_type_int32(m, &native_i->value, NULL, &err); 166 } 167 error_propagate(errp, err); 168 err = NULL; 169 170 /* Always call end_list if start_list succeeded. */ 171 visit_end_list(m, &err); 172 } 173 error_propagate(errp, err); 174 } 175 } 176 177 void visit_type_int64List(Visitor *m, int64List ** obj, const char *name, Error **errp) 178 { 179 GenericList *i, **prev = (GenericList **)obj; 180 Error *err = NULL; 181 182 if (!error_is_set(errp)) { 183 visit_start_list(m, name, &err); 184 if (!err) { 185 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 186 int64List *native_i = (int64List *)i; 187 visit_type_int64(m, &native_i->value, NULL, &err); 188 } 189 error_propagate(errp, err); 190 err = NULL; 191 192 /* Always call end_list if start_list succeeded. */ 193 visit_end_list(m, &err); 194 } 195 error_propagate(errp, err); 196 } 197 } 198 199 void visit_type_uint8List(Visitor *m, uint8List ** obj, const char *name, Error **errp) 200 { 201 GenericList *i, **prev = (GenericList **)obj; 202 Error *err = NULL; 203 204 if (!error_is_set(errp)) { 205 visit_start_list(m, name, &err); 206 if (!err) { 207 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 208 uint8List *native_i = (uint8List *)i; 209 visit_type_uint8(m, &native_i->value, NULL, &err); 210 } 211 error_propagate(errp, err); 212 err = NULL; 213 214 /* Always call end_list if start_list succeeded. */ 215 visit_end_list(m, &err); 216 } 217 error_propagate(errp, err); 218 } 219 } 220 221 void visit_type_uint16List(Visitor *m, uint16List ** obj, const char *name, Error **errp) 222 { 223 GenericList *i, **prev = (GenericList **)obj; 224 Error *err = NULL; 225 226 if (!error_is_set(errp)) { 227 visit_start_list(m, name, &err); 228 if (!err) { 229 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 230 uint16List *native_i = (uint16List *)i; 231 visit_type_uint16(m, &native_i->value, NULL, &err); 232 } 233 error_propagate(errp, err); 234 err = NULL; 235 236 /* Always call end_list if start_list succeeded. */ 237 visit_end_list(m, &err); 238 } 239 error_propagate(errp, err); 240 } 241 } 242 243 void visit_type_uint32List(Visitor *m, uint32List ** obj, const char *name, Error **errp) 244 { 245 GenericList *i, **prev = (GenericList **)obj; 246 Error *err = NULL; 247 248 if (!error_is_set(errp)) { 249 visit_start_list(m, name, &err); 250 if (!err) { 251 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 252 uint32List *native_i = (uint32List *)i; 253 visit_type_uint32(m, &native_i->value, NULL, &err); 254 } 255 error_propagate(errp, err); 256 err = NULL; 257 258 /* Always call end_list if start_list succeeded. */ 259 visit_end_list(m, &err); 260 } 261 error_propagate(errp, err); 262 } 263 } 264 265 void visit_type_uint64List(Visitor *m, uint64List ** obj, const char *name, Error **errp) 266 { 267 GenericList *i, **prev = (GenericList **)obj; 268 Error *err = NULL; 269 270 if (!error_is_set(errp)) { 271 visit_start_list(m, name, &err); 272 if (!err) { 273 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 274 uint64List *native_i = (uint64List *)i; 275 visit_type_uint64(m, &native_i->value, NULL, &err); 276 } 277 error_propagate(errp, err); 278 err = NULL; 279 280 /* Always call end_list if start_list succeeded. */ 281 visit_end_list(m, &err); 282 } 283 error_propagate(errp, err); 284 } 285 } 286 287 #endif /* QAPI_VISIT_BUILTIN_VISITOR_DEF_H */ 288 289 290 void visit_type_ErrorClassList(Visitor *m, ErrorClassList ** obj, const char *name, Error **errp) 291 { 292 GenericList *i, **prev = (GenericList **)obj; 293 Error *err = NULL; 294 295 if (!error_is_set(errp)) { 296 visit_start_list(m, name, &err); 297 if (!err) { 298 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 299 ErrorClassList *native_i = (ErrorClassList *)i; 300 visit_type_ErrorClass(m, &native_i->value, NULL, &err); 301 } 302 error_propagate(errp, err); 303 err = NULL; 304 305 /* Always call end_list if start_list succeeded. */ 306 visit_end_list(m, &err); 307 } 308 error_propagate(errp, err); 309 } 310 } 311 312 void visit_type_ErrorClass(Visitor *m, ErrorClass * obj, const char *name, Error **errp) 313 { 314 visit_type_enum(m, (int *)obj, ErrorClass_lookup, "ErrorClass", name, errp); 315 } 316 317 static void visit_type_NameInfo_fields(Visitor *m, NameInfo ** obj, Error **errp) 318 { 319 Error *err = NULL; 320 visit_start_optional(m, obj ? &(*obj)->has_name : NULL, "name", &err); 321 if (obj && (*obj)->has_name) { 322 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 323 } 324 visit_end_optional(m, &err); 325 326 error_propagate(errp, err); 327 } 328 329 void visit_type_NameInfo(Visitor *m, NameInfo ** obj, const char *name, Error **errp) 330 { 331 if (!error_is_set(errp)) { 332 Error *err = NULL; 333 visit_start_struct(m, (void **)obj, "NameInfo", name, sizeof(NameInfo), &err); 334 if (!err) { 335 if (!obj || *obj) { 336 visit_type_NameInfo_fields(m, obj, &err); 337 error_propagate(errp, err); 338 err = NULL; 339 } 340 /* Always call end_struct if start_struct succeeded. */ 341 visit_end_struct(m, &err); 342 } 343 error_propagate(errp, err); 344 } 345 } 346 347 void visit_type_NameInfoList(Visitor *m, NameInfoList ** obj, const char *name, Error **errp) 348 { 349 GenericList *i, **prev = (GenericList **)obj; 350 Error *err = NULL; 351 352 if (!error_is_set(errp)) { 353 visit_start_list(m, name, &err); 354 if (!err) { 355 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 356 NameInfoList *native_i = (NameInfoList *)i; 357 visit_type_NameInfo(m, &native_i->value, NULL, &err); 358 } 359 error_propagate(errp, err); 360 err = NULL; 361 362 /* Always call end_list if start_list succeeded. */ 363 visit_end_list(m, &err); 364 } 365 error_propagate(errp, err); 366 } 367 } 368 369 static void visit_type_VersionInfo_qemu_fields(Visitor *m, VersionInfo ** obj, Error **errp) 370 { 371 Error *err = NULL; 372 visit_type_int(m, obj ? &(*obj)->qemu.major : NULL, "major", &err); 373 visit_type_int(m, obj ? &(*obj)->qemu.minor : NULL, "minor", &err); 374 visit_type_int(m, obj ? &(*obj)->qemu.micro : NULL, "micro", &err); 375 376 error_propagate(errp, err); 377 } 378 379 static void visit_type_VersionInfo_fields(Visitor *m, VersionInfo ** obj, Error **errp) 380 { 381 Error *err = NULL; 382 if (!error_is_set(errp)) { 383 Error **errp = &err; /* from outer scope */ 384 Error *err = NULL; 385 visit_start_struct(m, NULL, "", "qemu", 0, &err); 386 if (!err) { 387 if (!obj || *obj) { 388 visit_type_VersionInfo_qemu_fields(m, obj, &err); 389 error_propagate(errp, err); 390 err = NULL; 391 } 392 /* Always call end_struct if start_struct succeeded. */ 393 visit_end_struct(m, &err); 394 } 395 error_propagate(errp, err); 396 } 397 visit_type_str(m, obj ? &(*obj)->package : NULL, "package", &err); 398 399 error_propagate(errp, err); 400 } 401 402 void visit_type_VersionInfo(Visitor *m, VersionInfo ** obj, const char *name, Error **errp) 403 { 404 if (!error_is_set(errp)) { 405 Error *err = NULL; 406 visit_start_struct(m, (void **)obj, "VersionInfo", name, sizeof(VersionInfo), &err); 407 if (!err) { 408 if (!obj || *obj) { 409 visit_type_VersionInfo_fields(m, obj, &err); 410 error_propagate(errp, err); 411 err = NULL; 412 } 413 /* Always call end_struct if start_struct succeeded. */ 414 visit_end_struct(m, &err); 415 } 416 error_propagate(errp, err); 417 } 418 } 419 420 void visit_type_VersionInfoList(Visitor *m, VersionInfoList ** obj, const char *name, Error **errp) 421 { 422 GenericList *i, **prev = (GenericList **)obj; 423 Error *err = NULL; 424 425 if (!error_is_set(errp)) { 426 visit_start_list(m, name, &err); 427 if (!err) { 428 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 429 VersionInfoList *native_i = (VersionInfoList *)i; 430 visit_type_VersionInfo(m, &native_i->value, NULL, &err); 431 } 432 error_propagate(errp, err); 433 err = NULL; 434 435 /* Always call end_list if start_list succeeded. */ 436 visit_end_list(m, &err); 437 } 438 error_propagate(errp, err); 439 } 440 } 441 442 static void visit_type_KvmInfo_fields(Visitor *m, KvmInfo ** obj, Error **errp) 443 { 444 Error *err = NULL; 445 visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err); 446 visit_type_bool(m, obj ? &(*obj)->present : NULL, "present", &err); 447 448 error_propagate(errp, err); 449 } 450 451 void visit_type_KvmInfo(Visitor *m, KvmInfo ** obj, const char *name, Error **errp) 452 { 453 if (!error_is_set(errp)) { 454 Error *err = NULL; 455 visit_start_struct(m, (void **)obj, "KvmInfo", name, sizeof(KvmInfo), &err); 456 if (!err) { 457 if (!obj || *obj) { 458 visit_type_KvmInfo_fields(m, obj, &err); 459 error_propagate(errp, err); 460 err = NULL; 461 } 462 /* Always call end_struct if start_struct succeeded. */ 463 visit_end_struct(m, &err); 464 } 465 error_propagate(errp, err); 466 } 467 } 468 469 void visit_type_KvmInfoList(Visitor *m, KvmInfoList ** obj, const char *name, Error **errp) 470 { 471 GenericList *i, **prev = (GenericList **)obj; 472 Error *err = NULL; 473 474 if (!error_is_set(errp)) { 475 visit_start_list(m, name, &err); 476 if (!err) { 477 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 478 KvmInfoList *native_i = (KvmInfoList *)i; 479 visit_type_KvmInfo(m, &native_i->value, NULL, &err); 480 } 481 error_propagate(errp, err); 482 err = NULL; 483 484 /* Always call end_list if start_list succeeded. */ 485 visit_end_list(m, &err); 486 } 487 error_propagate(errp, err); 488 } 489 } 490 491 void visit_type_RunStateList(Visitor *m, RunStateList ** obj, const char *name, Error **errp) 492 { 493 GenericList *i, **prev = (GenericList **)obj; 494 Error *err = NULL; 495 496 if (!error_is_set(errp)) { 497 visit_start_list(m, name, &err); 498 if (!err) { 499 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 500 RunStateList *native_i = (RunStateList *)i; 501 visit_type_RunState(m, &native_i->value, NULL, &err); 502 } 503 error_propagate(errp, err); 504 err = NULL; 505 506 /* Always call end_list if start_list succeeded. */ 507 visit_end_list(m, &err); 508 } 509 error_propagate(errp, err); 510 } 511 } 512 513 void visit_type_RunState(Visitor *m, RunState * obj, const char *name, Error **errp) 514 { 515 visit_type_enum(m, (int *)obj, RunState_lookup, "RunState", name, errp); 516 } 517 518 static void visit_type_SnapshotInfo_fields(Visitor *m, SnapshotInfo ** obj, Error **errp) 519 { 520 Error *err = NULL; 521 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 522 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 523 visit_type_int(m, obj ? &(*obj)->vm_state_size : NULL, "vm-state-size", &err); 524 visit_type_int(m, obj ? &(*obj)->date_sec : NULL, "date-sec", &err); 525 visit_type_int(m, obj ? &(*obj)->date_nsec : NULL, "date-nsec", &err); 526 visit_type_int(m, obj ? &(*obj)->vm_clock_sec : NULL, "vm-clock-sec", &err); 527 visit_type_int(m, obj ? &(*obj)->vm_clock_nsec : NULL, "vm-clock-nsec", &err); 528 529 error_propagate(errp, err); 530 } 531 532 void visit_type_SnapshotInfo(Visitor *m, SnapshotInfo ** obj, const char *name, Error **errp) 533 { 534 if (!error_is_set(errp)) { 535 Error *err = NULL; 536 visit_start_struct(m, (void **)obj, "SnapshotInfo", name, sizeof(SnapshotInfo), &err); 537 if (!err) { 538 if (!obj || *obj) { 539 visit_type_SnapshotInfo_fields(m, obj, &err); 540 error_propagate(errp, err); 541 err = NULL; 542 } 543 /* Always call end_struct if start_struct succeeded. */ 544 visit_end_struct(m, &err); 545 } 546 error_propagate(errp, err); 547 } 548 } 549 550 void visit_type_SnapshotInfoList(Visitor *m, SnapshotInfoList ** obj, const char *name, Error **errp) 551 { 552 GenericList *i, **prev = (GenericList **)obj; 553 Error *err = NULL; 554 555 if (!error_is_set(errp)) { 556 visit_start_list(m, name, &err); 557 if (!err) { 558 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 559 SnapshotInfoList *native_i = (SnapshotInfoList *)i; 560 visit_type_SnapshotInfo(m, &native_i->value, NULL, &err); 561 } 562 error_propagate(errp, err); 563 err = NULL; 564 565 /* Always call end_list if start_list succeeded. */ 566 visit_end_list(m, &err); 567 } 568 error_propagate(errp, err); 569 } 570 } 571 572 static void visit_type_ImageInfoSpecificQCow2_fields(Visitor *m, ImageInfoSpecificQCow2 ** obj, Error **errp) 573 { 574 Error *err = NULL; 575 visit_type_str(m, obj ? &(*obj)->compat : NULL, "compat", &err); 576 visit_start_optional(m, obj ? &(*obj)->has_lazy_refcounts : NULL, "lazy-refcounts", &err); 577 if (obj && (*obj)->has_lazy_refcounts) { 578 visit_type_bool(m, obj ? &(*obj)->lazy_refcounts : NULL, "lazy-refcounts", &err); 579 } 580 visit_end_optional(m, &err); 581 582 error_propagate(errp, err); 583 } 584 585 void visit_type_ImageInfoSpecificQCow2(Visitor *m, ImageInfoSpecificQCow2 ** obj, const char *name, Error **errp) 586 { 587 if (!error_is_set(errp)) { 588 Error *err = NULL; 589 visit_start_struct(m, (void **)obj, "ImageInfoSpecificQCow2", name, sizeof(ImageInfoSpecificQCow2), &err); 590 if (!err) { 591 if (!obj || *obj) { 592 visit_type_ImageInfoSpecificQCow2_fields(m, obj, &err); 593 error_propagate(errp, err); 594 err = NULL; 595 } 596 /* Always call end_struct if start_struct succeeded. */ 597 visit_end_struct(m, &err); 598 } 599 error_propagate(errp, err); 600 } 601 } 602 603 void visit_type_ImageInfoSpecificQCow2List(Visitor *m, ImageInfoSpecificQCow2List ** obj, const char *name, Error **errp) 604 { 605 GenericList *i, **prev = (GenericList **)obj; 606 Error *err = NULL; 607 608 if (!error_is_set(errp)) { 609 visit_start_list(m, name, &err); 610 if (!err) { 611 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 612 ImageInfoSpecificQCow2List *native_i = (ImageInfoSpecificQCow2List *)i; 613 visit_type_ImageInfoSpecificQCow2(m, &native_i->value, NULL, &err); 614 } 615 error_propagate(errp, err); 616 err = NULL; 617 618 /* Always call end_list if start_list succeeded. */ 619 visit_end_list(m, &err); 620 } 621 error_propagate(errp, err); 622 } 623 } 624 625 static void visit_type_ImageInfoSpecificVmdk_fields(Visitor *m, ImageInfoSpecificVmdk ** obj, Error **errp) 626 { 627 Error *err = NULL; 628 visit_type_str(m, obj ? &(*obj)->create_type : NULL, "create-type", &err); 629 visit_type_int(m, obj ? &(*obj)->cid : NULL, "cid", &err); 630 visit_type_int(m, obj ? &(*obj)->parent_cid : NULL, "parent-cid", &err); 631 visit_type_ImageInfoList(m, obj ? &(*obj)->extents : NULL, "extents", &err); 632 633 error_propagate(errp, err); 634 } 635 636 void visit_type_ImageInfoSpecificVmdk(Visitor *m, ImageInfoSpecificVmdk ** obj, const char *name, Error **errp) 637 { 638 if (!error_is_set(errp)) { 639 Error *err = NULL; 640 visit_start_struct(m, (void **)obj, "ImageInfoSpecificVmdk", name, sizeof(ImageInfoSpecificVmdk), &err); 641 if (!err) { 642 if (!obj || *obj) { 643 visit_type_ImageInfoSpecificVmdk_fields(m, obj, &err); 644 error_propagate(errp, err); 645 err = NULL; 646 } 647 /* Always call end_struct if start_struct succeeded. */ 648 visit_end_struct(m, &err); 649 } 650 error_propagate(errp, err); 651 } 652 } 653 654 void visit_type_ImageInfoSpecificVmdkList(Visitor *m, ImageInfoSpecificVmdkList ** obj, const char *name, Error **errp) 655 { 656 GenericList *i, **prev = (GenericList **)obj; 657 Error *err = NULL; 658 659 if (!error_is_set(errp)) { 660 visit_start_list(m, name, &err); 661 if (!err) { 662 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 663 ImageInfoSpecificVmdkList *native_i = (ImageInfoSpecificVmdkList *)i; 664 visit_type_ImageInfoSpecificVmdk(m, &native_i->value, NULL, &err); 665 } 666 error_propagate(errp, err); 667 err = NULL; 668 669 /* Always call end_list if start_list succeeded. */ 670 visit_end_list(m, &err); 671 } 672 error_propagate(errp, err); 673 } 674 } 675 676 void visit_type_ImageInfoSpecificKind(Visitor *m, ImageInfoSpecificKind * obj, const char *name, Error **errp) 677 { 678 visit_type_enum(m, (int *)obj, ImageInfoSpecificKind_lookup, "ImageInfoSpecificKind", name, errp); 679 } 680 681 void visit_type_ImageInfoSpecific(Visitor *m, ImageInfoSpecific ** obj, const char *name, Error **errp) 682 { 683 Error *err = NULL; 684 685 if (!error_is_set(errp)) { 686 visit_start_struct(m, (void **)obj, "ImageInfoSpecific", name, sizeof(ImageInfoSpecific), &err); 687 if (!err) { 688 if (obj && *obj) { 689 visit_type_ImageInfoSpecificKind(m, &(*obj)->kind, "type", &err); 690 if (!err) { 691 switch ((*obj)->kind) { 692 case IMAGE_INFO_SPECIFIC_KIND_QCOW2: 693 visit_type_ImageInfoSpecificQCow2(m, &(*obj)->qcow2, "data", &err); 694 break; 695 case IMAGE_INFO_SPECIFIC_KIND_VMDK: 696 visit_type_ImageInfoSpecificVmdk(m, &(*obj)->vmdk, "data", &err); 697 break; 698 default: 699 abort(); 700 } 701 } 702 error_propagate(errp, err); 703 err = NULL; 704 } 705 /* Always call end_struct if start_struct succeeded. */ 706 visit_end_struct(m, &err); 707 } 708 error_propagate(errp, err); 709 } 710 } 711 712 void visit_type_ImageInfoSpecificList(Visitor *m, ImageInfoSpecificList ** obj, const char *name, Error **errp) 713 { 714 GenericList *i, **prev = (GenericList **)obj; 715 Error *err = NULL; 716 717 if (!error_is_set(errp)) { 718 visit_start_list(m, name, &err); 719 if (!err) { 720 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 721 ImageInfoSpecificList *native_i = (ImageInfoSpecificList *)i; 722 visit_type_ImageInfoSpecific(m, &native_i->value, NULL, &err); 723 } 724 error_propagate(errp, err); 725 err = NULL; 726 727 /* Always call end_list if start_list succeeded. */ 728 visit_end_list(m, &err); 729 } 730 error_propagate(errp, err); 731 } 732 } 733 734 static void visit_type_ImageInfo_fields(Visitor *m, ImageInfo ** obj, Error **errp) 735 { 736 Error *err = NULL; 737 visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err); 738 visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err); 739 visit_start_optional(m, obj ? &(*obj)->has_dirty_flag : NULL, "dirty-flag", &err); 740 if (obj && (*obj)->has_dirty_flag) { 741 visit_type_bool(m, obj ? &(*obj)->dirty_flag : NULL, "dirty-flag", &err); 742 } 743 visit_end_optional(m, &err); 744 visit_start_optional(m, obj ? &(*obj)->has_actual_size : NULL, "actual-size", &err); 745 if (obj && (*obj)->has_actual_size) { 746 visit_type_int(m, obj ? &(*obj)->actual_size : NULL, "actual-size", &err); 747 } 748 visit_end_optional(m, &err); 749 visit_type_int(m, obj ? &(*obj)->virtual_size : NULL, "virtual-size", &err); 750 visit_start_optional(m, obj ? &(*obj)->has_cluster_size : NULL, "cluster-size", &err); 751 if (obj && (*obj)->has_cluster_size) { 752 visit_type_int(m, obj ? &(*obj)->cluster_size : NULL, "cluster-size", &err); 753 } 754 visit_end_optional(m, &err); 755 visit_start_optional(m, obj ? &(*obj)->has_encrypted : NULL, "encrypted", &err); 756 if (obj && (*obj)->has_encrypted) { 757 visit_type_bool(m, obj ? &(*obj)->encrypted : NULL, "encrypted", &err); 758 } 759 visit_end_optional(m, &err); 760 visit_start_optional(m, obj ? &(*obj)->has_compressed : NULL, "compressed", &err); 761 if (obj && (*obj)->has_compressed) { 762 visit_type_bool(m, obj ? &(*obj)->compressed : NULL, "compressed", &err); 763 } 764 visit_end_optional(m, &err); 765 visit_start_optional(m, obj ? &(*obj)->has_backing_filename : NULL, "backing-filename", &err); 766 if (obj && (*obj)->has_backing_filename) { 767 visit_type_str(m, obj ? &(*obj)->backing_filename : NULL, "backing-filename", &err); 768 } 769 visit_end_optional(m, &err); 770 visit_start_optional(m, obj ? &(*obj)->has_full_backing_filename : NULL, "full-backing-filename", &err); 771 if (obj && (*obj)->has_full_backing_filename) { 772 visit_type_str(m, obj ? &(*obj)->full_backing_filename : NULL, "full-backing-filename", &err); 773 } 774 visit_end_optional(m, &err); 775 visit_start_optional(m, obj ? &(*obj)->has_backing_filename_format : NULL, "backing-filename-format", &err); 776 if (obj && (*obj)->has_backing_filename_format) { 777 visit_type_str(m, obj ? &(*obj)->backing_filename_format : NULL, "backing-filename-format", &err); 778 } 779 visit_end_optional(m, &err); 780 visit_start_optional(m, obj ? &(*obj)->has_snapshots : NULL, "snapshots", &err); 781 if (obj && (*obj)->has_snapshots) { 782 visit_type_SnapshotInfoList(m, obj ? &(*obj)->snapshots : NULL, "snapshots", &err); 783 } 784 visit_end_optional(m, &err); 785 visit_start_optional(m, obj ? &(*obj)->has_backing_image : NULL, "backing-image", &err); 786 if (obj && (*obj)->has_backing_image) { 787 visit_type_ImageInfo(m, obj ? &(*obj)->backing_image : NULL, "backing-image", &err); 788 } 789 visit_end_optional(m, &err); 790 visit_start_optional(m, obj ? &(*obj)->has_format_specific : NULL, "format-specific", &err); 791 if (obj && (*obj)->has_format_specific) { 792 visit_type_ImageInfoSpecific(m, obj ? &(*obj)->format_specific : NULL, "format-specific", &err); 793 } 794 visit_end_optional(m, &err); 795 796 error_propagate(errp, err); 797 } 798 799 void visit_type_ImageInfo(Visitor *m, ImageInfo ** obj, const char *name, Error **errp) 800 { 801 if (!error_is_set(errp)) { 802 Error *err = NULL; 803 visit_start_struct(m, (void **)obj, "ImageInfo", name, sizeof(ImageInfo), &err); 804 if (!err) { 805 if (!obj || *obj) { 806 visit_type_ImageInfo_fields(m, obj, &err); 807 error_propagate(errp, err); 808 err = NULL; 809 } 810 /* Always call end_struct if start_struct succeeded. */ 811 visit_end_struct(m, &err); 812 } 813 error_propagate(errp, err); 814 } 815 } 816 817 void visit_type_ImageInfoList(Visitor *m, ImageInfoList ** obj, const char *name, Error **errp) 818 { 819 GenericList *i, **prev = (GenericList **)obj; 820 Error *err = NULL; 821 822 if (!error_is_set(errp)) { 823 visit_start_list(m, name, &err); 824 if (!err) { 825 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 826 ImageInfoList *native_i = (ImageInfoList *)i; 827 visit_type_ImageInfo(m, &native_i->value, NULL, &err); 828 } 829 error_propagate(errp, err); 830 err = NULL; 831 832 /* Always call end_list if start_list succeeded. */ 833 visit_end_list(m, &err); 834 } 835 error_propagate(errp, err); 836 } 837 } 838 839 static void visit_type_ImageCheck_fields(Visitor *m, ImageCheck ** obj, Error **errp) 840 { 841 Error *err = NULL; 842 visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err); 843 visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err); 844 visit_type_int(m, obj ? &(*obj)->check_errors : NULL, "check-errors", &err); 845 visit_start_optional(m, obj ? &(*obj)->has_image_end_offset : NULL, "image-end-offset", &err); 846 if (obj && (*obj)->has_image_end_offset) { 847 visit_type_int(m, obj ? &(*obj)->image_end_offset : NULL, "image-end-offset", &err); 848 } 849 visit_end_optional(m, &err); 850 visit_start_optional(m, obj ? &(*obj)->has_corruptions : NULL, "corruptions", &err); 851 if (obj && (*obj)->has_corruptions) { 852 visit_type_int(m, obj ? &(*obj)->corruptions : NULL, "corruptions", &err); 853 } 854 visit_end_optional(m, &err); 855 visit_start_optional(m, obj ? &(*obj)->has_leaks : NULL, "leaks", &err); 856 if (obj && (*obj)->has_leaks) { 857 visit_type_int(m, obj ? &(*obj)->leaks : NULL, "leaks", &err); 858 } 859 visit_end_optional(m, &err); 860 visit_start_optional(m, obj ? &(*obj)->has_corruptions_fixed : NULL, "corruptions-fixed", &err); 861 if (obj && (*obj)->has_corruptions_fixed) { 862 visit_type_int(m, obj ? &(*obj)->corruptions_fixed : NULL, "corruptions-fixed", &err); 863 } 864 visit_end_optional(m, &err); 865 visit_start_optional(m, obj ? &(*obj)->has_leaks_fixed : NULL, "leaks-fixed", &err); 866 if (obj && (*obj)->has_leaks_fixed) { 867 visit_type_int(m, obj ? &(*obj)->leaks_fixed : NULL, "leaks-fixed", &err); 868 } 869 visit_end_optional(m, &err); 870 visit_start_optional(m, obj ? &(*obj)->has_total_clusters : NULL, "total-clusters", &err); 871 if (obj && (*obj)->has_total_clusters) { 872 visit_type_int(m, obj ? &(*obj)->total_clusters : NULL, "total-clusters", &err); 873 } 874 visit_end_optional(m, &err); 875 visit_start_optional(m, obj ? &(*obj)->has_allocated_clusters : NULL, "allocated-clusters", &err); 876 if (obj && (*obj)->has_allocated_clusters) { 877 visit_type_int(m, obj ? &(*obj)->allocated_clusters : NULL, "allocated-clusters", &err); 878 } 879 visit_end_optional(m, &err); 880 visit_start_optional(m, obj ? &(*obj)->has_fragmented_clusters : NULL, "fragmented-clusters", &err); 881 if (obj && (*obj)->has_fragmented_clusters) { 882 visit_type_int(m, obj ? &(*obj)->fragmented_clusters : NULL, "fragmented-clusters", &err); 883 } 884 visit_end_optional(m, &err); 885 visit_start_optional(m, obj ? &(*obj)->has_compressed_clusters : NULL, "compressed-clusters", &err); 886 if (obj && (*obj)->has_compressed_clusters) { 887 visit_type_int(m, obj ? &(*obj)->compressed_clusters : NULL, "compressed-clusters", &err); 888 } 889 visit_end_optional(m, &err); 890 891 error_propagate(errp, err); 892 } 893 894 void visit_type_ImageCheck(Visitor *m, ImageCheck ** obj, const char *name, Error **errp) 895 { 896 if (!error_is_set(errp)) { 897 Error *err = NULL; 898 visit_start_struct(m, (void **)obj, "ImageCheck", name, sizeof(ImageCheck), &err); 899 if (!err) { 900 if (!obj || *obj) { 901 visit_type_ImageCheck_fields(m, obj, &err); 902 error_propagate(errp, err); 903 err = NULL; 904 } 905 /* Always call end_struct if start_struct succeeded. */ 906 visit_end_struct(m, &err); 907 } 908 error_propagate(errp, err); 909 } 910 } 911 912 void visit_type_ImageCheckList(Visitor *m, ImageCheckList ** obj, const char *name, Error **errp) 913 { 914 GenericList *i, **prev = (GenericList **)obj; 915 Error *err = NULL; 916 917 if (!error_is_set(errp)) { 918 visit_start_list(m, name, &err); 919 if (!err) { 920 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 921 ImageCheckList *native_i = (ImageCheckList *)i; 922 visit_type_ImageCheck(m, &native_i->value, NULL, &err); 923 } 924 error_propagate(errp, err); 925 err = NULL; 926 927 /* Always call end_list if start_list succeeded. */ 928 visit_end_list(m, &err); 929 } 930 error_propagate(errp, err); 931 } 932 } 933 934 static void visit_type_StatusInfo_fields(Visitor *m, StatusInfo ** obj, Error **errp) 935 { 936 Error *err = NULL; 937 visit_type_bool(m, obj ? &(*obj)->running : NULL, "running", &err); 938 visit_type_bool(m, obj ? &(*obj)->singlestep : NULL, "singlestep", &err); 939 visit_type_RunState(m, obj ? &(*obj)->status : NULL, "status", &err); 940 941 error_propagate(errp, err); 942 } 943 944 void visit_type_StatusInfo(Visitor *m, StatusInfo ** obj, const char *name, Error **errp) 945 { 946 if (!error_is_set(errp)) { 947 Error *err = NULL; 948 visit_start_struct(m, (void **)obj, "StatusInfo", name, sizeof(StatusInfo), &err); 949 if (!err) { 950 if (!obj || *obj) { 951 visit_type_StatusInfo_fields(m, obj, &err); 952 error_propagate(errp, err); 953 err = NULL; 954 } 955 /* Always call end_struct if start_struct succeeded. */ 956 visit_end_struct(m, &err); 957 } 958 error_propagate(errp, err); 959 } 960 } 961 962 void visit_type_StatusInfoList(Visitor *m, StatusInfoList ** obj, const char *name, Error **errp) 963 { 964 GenericList *i, **prev = (GenericList **)obj; 965 Error *err = NULL; 966 967 if (!error_is_set(errp)) { 968 visit_start_list(m, name, &err); 969 if (!err) { 970 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 971 StatusInfoList *native_i = (StatusInfoList *)i; 972 visit_type_StatusInfo(m, &native_i->value, NULL, &err); 973 } 974 error_propagate(errp, err); 975 err = NULL; 976 977 /* Always call end_list if start_list succeeded. */ 978 visit_end_list(m, &err); 979 } 980 error_propagate(errp, err); 981 } 982 } 983 984 static void visit_type_UuidInfo_fields(Visitor *m, UuidInfo ** obj, Error **errp) 985 { 986 Error *err = NULL; 987 visit_type_str(m, obj ? &(*obj)->UUID : NULL, "UUID", &err); 988 989 error_propagate(errp, err); 990 } 991 992 void visit_type_UuidInfo(Visitor *m, UuidInfo ** obj, const char *name, Error **errp) 993 { 994 if (!error_is_set(errp)) { 995 Error *err = NULL; 996 visit_start_struct(m, (void **)obj, "UuidInfo", name, sizeof(UuidInfo), &err); 997 if (!err) { 998 if (!obj || *obj) { 999 visit_type_UuidInfo_fields(m, obj, &err); 1000 error_propagate(errp, err); 1001 err = NULL; 1002 } 1003 /* Always call end_struct if start_struct succeeded. */ 1004 visit_end_struct(m, &err); 1005 } 1006 error_propagate(errp, err); 1007 } 1008 } 1009 1010 void visit_type_UuidInfoList(Visitor *m, UuidInfoList ** obj, const char *name, Error **errp) 1011 { 1012 GenericList *i, **prev = (GenericList **)obj; 1013 Error *err = NULL; 1014 1015 if (!error_is_set(errp)) { 1016 visit_start_list(m, name, &err); 1017 if (!err) { 1018 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1019 UuidInfoList *native_i = (UuidInfoList *)i; 1020 visit_type_UuidInfo(m, &native_i->value, NULL, &err); 1021 } 1022 error_propagate(errp, err); 1023 err = NULL; 1024 1025 /* Always call end_list if start_list succeeded. */ 1026 visit_end_list(m, &err); 1027 } 1028 error_propagate(errp, err); 1029 } 1030 } 1031 1032 static void visit_type_ChardevInfo_fields(Visitor *m, ChardevInfo ** obj, Error **errp) 1033 { 1034 Error *err = NULL; 1035 visit_type_str(m, obj ? &(*obj)->label : NULL, "label", &err); 1036 visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err); 1037 1038 error_propagate(errp, err); 1039 } 1040 1041 void visit_type_ChardevInfo(Visitor *m, ChardevInfo ** obj, const char *name, Error **errp) 1042 { 1043 if (!error_is_set(errp)) { 1044 Error *err = NULL; 1045 visit_start_struct(m, (void **)obj, "ChardevInfo", name, sizeof(ChardevInfo), &err); 1046 if (!err) { 1047 if (!obj || *obj) { 1048 visit_type_ChardevInfo_fields(m, obj, &err); 1049 error_propagate(errp, err); 1050 err = NULL; 1051 } 1052 /* Always call end_struct if start_struct succeeded. */ 1053 visit_end_struct(m, &err); 1054 } 1055 error_propagate(errp, err); 1056 } 1057 } 1058 1059 void visit_type_ChardevInfoList(Visitor *m, ChardevInfoList ** obj, const char *name, Error **errp) 1060 { 1061 GenericList *i, **prev = (GenericList **)obj; 1062 Error *err = NULL; 1063 1064 if (!error_is_set(errp)) { 1065 visit_start_list(m, name, &err); 1066 if (!err) { 1067 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1068 ChardevInfoList *native_i = (ChardevInfoList *)i; 1069 visit_type_ChardevInfo(m, &native_i->value, NULL, &err); 1070 } 1071 error_propagate(errp, err); 1072 err = NULL; 1073 1074 /* Always call end_list if start_list succeeded. */ 1075 visit_end_list(m, &err); 1076 } 1077 error_propagate(errp, err); 1078 } 1079 } 1080 1081 void visit_type_DataFormatList(Visitor *m, DataFormatList ** obj, const char *name, Error **errp) 1082 { 1083 GenericList *i, **prev = (GenericList **)obj; 1084 Error *err = NULL; 1085 1086 if (!error_is_set(errp)) { 1087 visit_start_list(m, name, &err); 1088 if (!err) { 1089 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1090 DataFormatList *native_i = (DataFormatList *)i; 1091 visit_type_DataFormat(m, &native_i->value, NULL, &err); 1092 } 1093 error_propagate(errp, err); 1094 err = NULL; 1095 1096 /* Always call end_list if start_list succeeded. */ 1097 visit_end_list(m, &err); 1098 } 1099 error_propagate(errp, err); 1100 } 1101 } 1102 1103 void visit_type_DataFormat(Visitor *m, DataFormat * obj, const char *name, Error **errp) 1104 { 1105 visit_type_enum(m, (int *)obj, DataFormat_lookup, "DataFormat", name, errp); 1106 } 1107 1108 static void visit_type_CommandInfo_fields(Visitor *m, CommandInfo ** obj, Error **errp) 1109 { 1110 Error *err = NULL; 1111 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 1112 1113 error_propagate(errp, err); 1114 } 1115 1116 void visit_type_CommandInfo(Visitor *m, CommandInfo ** obj, const char *name, Error **errp) 1117 { 1118 if (!error_is_set(errp)) { 1119 Error *err = NULL; 1120 visit_start_struct(m, (void **)obj, "CommandInfo", name, sizeof(CommandInfo), &err); 1121 if (!err) { 1122 if (!obj || *obj) { 1123 visit_type_CommandInfo_fields(m, obj, &err); 1124 error_propagate(errp, err); 1125 err = NULL; 1126 } 1127 /* Always call end_struct if start_struct succeeded. */ 1128 visit_end_struct(m, &err); 1129 } 1130 error_propagate(errp, err); 1131 } 1132 } 1133 1134 void visit_type_CommandInfoList(Visitor *m, CommandInfoList ** obj, const char *name, Error **errp) 1135 { 1136 GenericList *i, **prev = (GenericList **)obj; 1137 Error *err = NULL; 1138 1139 if (!error_is_set(errp)) { 1140 visit_start_list(m, name, &err); 1141 if (!err) { 1142 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1143 CommandInfoList *native_i = (CommandInfoList *)i; 1144 visit_type_CommandInfo(m, &native_i->value, NULL, &err); 1145 } 1146 error_propagate(errp, err); 1147 err = NULL; 1148 1149 /* Always call end_list if start_list succeeded. */ 1150 visit_end_list(m, &err); 1151 } 1152 error_propagate(errp, err); 1153 } 1154 } 1155 1156 static void visit_type_EventInfo_fields(Visitor *m, EventInfo ** obj, Error **errp) 1157 { 1158 Error *err = NULL; 1159 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 1160 1161 error_propagate(errp, err); 1162 } 1163 1164 void visit_type_EventInfo(Visitor *m, EventInfo ** obj, const char *name, Error **errp) 1165 { 1166 if (!error_is_set(errp)) { 1167 Error *err = NULL; 1168 visit_start_struct(m, (void **)obj, "EventInfo", name, sizeof(EventInfo), &err); 1169 if (!err) { 1170 if (!obj || *obj) { 1171 visit_type_EventInfo_fields(m, obj, &err); 1172 error_propagate(errp, err); 1173 err = NULL; 1174 } 1175 /* Always call end_struct if start_struct succeeded. */ 1176 visit_end_struct(m, &err); 1177 } 1178 error_propagate(errp, err); 1179 } 1180 } 1181 1182 void visit_type_EventInfoList(Visitor *m, EventInfoList ** obj, const char *name, Error **errp) 1183 { 1184 GenericList *i, **prev = (GenericList **)obj; 1185 Error *err = NULL; 1186 1187 if (!error_is_set(errp)) { 1188 visit_start_list(m, name, &err); 1189 if (!err) { 1190 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1191 EventInfoList *native_i = (EventInfoList *)i; 1192 visit_type_EventInfo(m, &native_i->value, NULL, &err); 1193 } 1194 error_propagate(errp, err); 1195 err = NULL; 1196 1197 /* Always call end_list if start_list succeeded. */ 1198 visit_end_list(m, &err); 1199 } 1200 error_propagate(errp, err); 1201 } 1202 } 1203 1204 static void visit_type_MigrationStats_fields(Visitor *m, MigrationStats ** obj, Error **errp) 1205 { 1206 Error *err = NULL; 1207 visit_type_int(m, obj ? &(*obj)->transferred : NULL, "transferred", &err); 1208 visit_type_int(m, obj ? &(*obj)->remaining : NULL, "remaining", &err); 1209 visit_type_int(m, obj ? &(*obj)->total : NULL, "total", &err); 1210 visit_type_int(m, obj ? &(*obj)->duplicate : NULL, "duplicate", &err); 1211 visit_type_int(m, obj ? &(*obj)->skipped : NULL, "skipped", &err); 1212 visit_type_int(m, obj ? &(*obj)->normal : NULL, "normal", &err); 1213 visit_type_int(m, obj ? &(*obj)->normal_bytes : NULL, "normal-bytes", &err); 1214 visit_type_int(m, obj ? &(*obj)->dirty_pages_rate : NULL, "dirty-pages-rate", &err); 1215 visit_type_number(m, obj ? &(*obj)->mbps : NULL, "mbps", &err); 1216 1217 error_propagate(errp, err); 1218 } 1219 1220 void visit_type_MigrationStats(Visitor *m, MigrationStats ** obj, const char *name, Error **errp) 1221 { 1222 if (!error_is_set(errp)) { 1223 Error *err = NULL; 1224 visit_start_struct(m, (void **)obj, "MigrationStats", name, sizeof(MigrationStats), &err); 1225 if (!err) { 1226 if (!obj || *obj) { 1227 visit_type_MigrationStats_fields(m, obj, &err); 1228 error_propagate(errp, err); 1229 err = NULL; 1230 } 1231 /* Always call end_struct if start_struct succeeded. */ 1232 visit_end_struct(m, &err); 1233 } 1234 error_propagate(errp, err); 1235 } 1236 } 1237 1238 void visit_type_MigrationStatsList(Visitor *m, MigrationStatsList ** obj, const char *name, Error **errp) 1239 { 1240 GenericList *i, **prev = (GenericList **)obj; 1241 Error *err = NULL; 1242 1243 if (!error_is_set(errp)) { 1244 visit_start_list(m, name, &err); 1245 if (!err) { 1246 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1247 MigrationStatsList *native_i = (MigrationStatsList *)i; 1248 visit_type_MigrationStats(m, &native_i->value, NULL, &err); 1249 } 1250 error_propagate(errp, err); 1251 err = NULL; 1252 1253 /* Always call end_list if start_list succeeded. */ 1254 visit_end_list(m, &err); 1255 } 1256 error_propagate(errp, err); 1257 } 1258 } 1259 1260 static void visit_type_XBZRLECacheStats_fields(Visitor *m, XBZRLECacheStats ** obj, Error **errp) 1261 { 1262 Error *err = NULL; 1263 visit_type_int(m, obj ? &(*obj)->cache_size : NULL, "cache-size", &err); 1264 visit_type_int(m, obj ? &(*obj)->bytes : NULL, "bytes", &err); 1265 visit_type_int(m, obj ? &(*obj)->pages : NULL, "pages", &err); 1266 visit_type_int(m, obj ? &(*obj)->cache_miss : NULL, "cache-miss", &err); 1267 visit_type_int(m, obj ? &(*obj)->overflow : NULL, "overflow", &err); 1268 1269 error_propagate(errp, err); 1270 } 1271 1272 void visit_type_XBZRLECacheStats(Visitor *m, XBZRLECacheStats ** obj, const char *name, Error **errp) 1273 { 1274 if (!error_is_set(errp)) { 1275 Error *err = NULL; 1276 visit_start_struct(m, (void **)obj, "XBZRLECacheStats", name, sizeof(XBZRLECacheStats), &err); 1277 if (!err) { 1278 if (!obj || *obj) { 1279 visit_type_XBZRLECacheStats_fields(m, obj, &err); 1280 error_propagate(errp, err); 1281 err = NULL; 1282 } 1283 /* Always call end_struct if start_struct succeeded. */ 1284 visit_end_struct(m, &err); 1285 } 1286 error_propagate(errp, err); 1287 } 1288 } 1289 1290 void visit_type_XBZRLECacheStatsList(Visitor *m, XBZRLECacheStatsList ** obj, const char *name, Error **errp) 1291 { 1292 GenericList *i, **prev = (GenericList **)obj; 1293 Error *err = NULL; 1294 1295 if (!error_is_set(errp)) { 1296 visit_start_list(m, name, &err); 1297 if (!err) { 1298 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1299 XBZRLECacheStatsList *native_i = (XBZRLECacheStatsList *)i; 1300 visit_type_XBZRLECacheStats(m, &native_i->value, NULL, &err); 1301 } 1302 error_propagate(errp, err); 1303 err = NULL; 1304 1305 /* Always call end_list if start_list succeeded. */ 1306 visit_end_list(m, &err); 1307 } 1308 error_propagate(errp, err); 1309 } 1310 } 1311 1312 static void visit_type_MigrationInfo_fields(Visitor *m, MigrationInfo ** obj, Error **errp) 1313 { 1314 Error *err = NULL; 1315 visit_start_optional(m, obj ? &(*obj)->has_status : NULL, "status", &err); 1316 if (obj && (*obj)->has_status) { 1317 visit_type_str(m, obj ? &(*obj)->status : NULL, "status", &err); 1318 } 1319 visit_end_optional(m, &err); 1320 visit_start_optional(m, obj ? &(*obj)->has_ram : NULL, "ram", &err); 1321 if (obj && (*obj)->has_ram) { 1322 visit_type_MigrationStats(m, obj ? &(*obj)->ram : NULL, "ram", &err); 1323 } 1324 visit_end_optional(m, &err); 1325 visit_start_optional(m, obj ? &(*obj)->has_disk : NULL, "disk", &err); 1326 if (obj && (*obj)->has_disk) { 1327 visit_type_MigrationStats(m, obj ? &(*obj)->disk : NULL, "disk", &err); 1328 } 1329 visit_end_optional(m, &err); 1330 visit_start_optional(m, obj ? &(*obj)->has_xbzrle_cache : NULL, "xbzrle-cache", &err); 1331 if (obj && (*obj)->has_xbzrle_cache) { 1332 visit_type_XBZRLECacheStats(m, obj ? &(*obj)->xbzrle_cache : NULL, "xbzrle-cache", &err); 1333 } 1334 visit_end_optional(m, &err); 1335 visit_start_optional(m, obj ? &(*obj)->has_total_time : NULL, "total-time", &err); 1336 if (obj && (*obj)->has_total_time) { 1337 visit_type_int(m, obj ? &(*obj)->total_time : NULL, "total-time", &err); 1338 } 1339 visit_end_optional(m, &err); 1340 visit_start_optional(m, obj ? &(*obj)->has_expected_downtime : NULL, "expected-downtime", &err); 1341 if (obj && (*obj)->has_expected_downtime) { 1342 visit_type_int(m, obj ? &(*obj)->expected_downtime : NULL, "expected-downtime", &err); 1343 } 1344 visit_end_optional(m, &err); 1345 visit_start_optional(m, obj ? &(*obj)->has_downtime : NULL, "downtime", &err); 1346 if (obj && (*obj)->has_downtime) { 1347 visit_type_int(m, obj ? &(*obj)->downtime : NULL, "downtime", &err); 1348 } 1349 visit_end_optional(m, &err); 1350 visit_start_optional(m, obj ? &(*obj)->has_setup_time : NULL, "setup-time", &err); 1351 if (obj && (*obj)->has_setup_time) { 1352 visit_type_int(m, obj ? &(*obj)->setup_time : NULL, "setup-time", &err); 1353 } 1354 visit_end_optional(m, &err); 1355 1356 error_propagate(errp, err); 1357 } 1358 1359 void visit_type_MigrationInfo(Visitor *m, MigrationInfo ** obj, const char *name, Error **errp) 1360 { 1361 if (!error_is_set(errp)) { 1362 Error *err = NULL; 1363 visit_start_struct(m, (void **)obj, "MigrationInfo", name, sizeof(MigrationInfo), &err); 1364 if (!err) { 1365 if (!obj || *obj) { 1366 visit_type_MigrationInfo_fields(m, obj, &err); 1367 error_propagate(errp, err); 1368 err = NULL; 1369 } 1370 /* Always call end_struct if start_struct succeeded. */ 1371 visit_end_struct(m, &err); 1372 } 1373 error_propagate(errp, err); 1374 } 1375 } 1376 1377 void visit_type_MigrationInfoList(Visitor *m, MigrationInfoList ** obj, const char *name, Error **errp) 1378 { 1379 GenericList *i, **prev = (GenericList **)obj; 1380 Error *err = NULL; 1381 1382 if (!error_is_set(errp)) { 1383 visit_start_list(m, name, &err); 1384 if (!err) { 1385 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1386 MigrationInfoList *native_i = (MigrationInfoList *)i; 1387 visit_type_MigrationInfo(m, &native_i->value, NULL, &err); 1388 } 1389 error_propagate(errp, err); 1390 err = NULL; 1391 1392 /* Always call end_list if start_list succeeded. */ 1393 visit_end_list(m, &err); 1394 } 1395 error_propagate(errp, err); 1396 } 1397 } 1398 1399 void visit_type_MigrationCapabilityList(Visitor *m, MigrationCapabilityList ** obj, const char *name, Error **errp) 1400 { 1401 GenericList *i, **prev = (GenericList **)obj; 1402 Error *err = NULL; 1403 1404 if (!error_is_set(errp)) { 1405 visit_start_list(m, name, &err); 1406 if (!err) { 1407 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1408 MigrationCapabilityList *native_i = (MigrationCapabilityList *)i; 1409 visit_type_MigrationCapability(m, &native_i->value, NULL, &err); 1410 } 1411 error_propagate(errp, err); 1412 err = NULL; 1413 1414 /* Always call end_list if start_list succeeded. */ 1415 visit_end_list(m, &err); 1416 } 1417 error_propagate(errp, err); 1418 } 1419 } 1420 1421 void visit_type_MigrationCapability(Visitor *m, MigrationCapability * obj, const char *name, Error **errp) 1422 { 1423 visit_type_enum(m, (int *)obj, MigrationCapability_lookup, "MigrationCapability", name, errp); 1424 } 1425 1426 static void visit_type_MigrationCapabilityStatus_fields(Visitor *m, MigrationCapabilityStatus ** obj, Error **errp) 1427 { 1428 Error *err = NULL; 1429 visit_type_MigrationCapability(m, obj ? &(*obj)->capability : NULL, "capability", &err); 1430 visit_type_bool(m, obj ? &(*obj)->state : NULL, "state", &err); 1431 1432 error_propagate(errp, err); 1433 } 1434 1435 void visit_type_MigrationCapabilityStatus(Visitor *m, MigrationCapabilityStatus ** obj, const char *name, Error **errp) 1436 { 1437 if (!error_is_set(errp)) { 1438 Error *err = NULL; 1439 visit_start_struct(m, (void **)obj, "MigrationCapabilityStatus", name, sizeof(MigrationCapabilityStatus), &err); 1440 if (!err) { 1441 if (!obj || *obj) { 1442 visit_type_MigrationCapabilityStatus_fields(m, obj, &err); 1443 error_propagate(errp, err); 1444 err = NULL; 1445 } 1446 /* Always call end_struct if start_struct succeeded. */ 1447 visit_end_struct(m, &err); 1448 } 1449 error_propagate(errp, err); 1450 } 1451 } 1452 1453 void visit_type_MigrationCapabilityStatusList(Visitor *m, MigrationCapabilityStatusList ** obj, const char *name, Error **errp) 1454 { 1455 GenericList *i, **prev = (GenericList **)obj; 1456 Error *err = NULL; 1457 1458 if (!error_is_set(errp)) { 1459 visit_start_list(m, name, &err); 1460 if (!err) { 1461 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1462 MigrationCapabilityStatusList *native_i = (MigrationCapabilityStatusList *)i; 1463 visit_type_MigrationCapabilityStatus(m, &native_i->value, NULL, &err); 1464 } 1465 error_propagate(errp, err); 1466 err = NULL; 1467 1468 /* Always call end_list if start_list succeeded. */ 1469 visit_end_list(m, &err); 1470 } 1471 error_propagate(errp, err); 1472 } 1473 } 1474 1475 static void visit_type_MouseInfo_fields(Visitor *m, MouseInfo ** obj, Error **errp) 1476 { 1477 Error *err = NULL; 1478 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 1479 visit_type_int(m, obj ? &(*obj)->index : NULL, "index", &err); 1480 visit_type_bool(m, obj ? &(*obj)->current : NULL, "current", &err); 1481 visit_type_bool(m, obj ? &(*obj)->absolute : NULL, "absolute", &err); 1482 1483 error_propagate(errp, err); 1484 } 1485 1486 void visit_type_MouseInfo(Visitor *m, MouseInfo ** obj, const char *name, Error **errp) 1487 { 1488 if (!error_is_set(errp)) { 1489 Error *err = NULL; 1490 visit_start_struct(m, (void **)obj, "MouseInfo", name, sizeof(MouseInfo), &err); 1491 if (!err) { 1492 if (!obj || *obj) { 1493 visit_type_MouseInfo_fields(m, obj, &err); 1494 error_propagate(errp, err); 1495 err = NULL; 1496 } 1497 /* Always call end_struct if start_struct succeeded. */ 1498 visit_end_struct(m, &err); 1499 } 1500 error_propagate(errp, err); 1501 } 1502 } 1503 1504 void visit_type_MouseInfoList(Visitor *m, MouseInfoList ** obj, const char *name, Error **errp) 1505 { 1506 GenericList *i, **prev = (GenericList **)obj; 1507 Error *err = NULL; 1508 1509 if (!error_is_set(errp)) { 1510 visit_start_list(m, name, &err); 1511 if (!err) { 1512 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1513 MouseInfoList *native_i = (MouseInfoList *)i; 1514 visit_type_MouseInfo(m, &native_i->value, NULL, &err); 1515 } 1516 error_propagate(errp, err); 1517 err = NULL; 1518 1519 /* Always call end_list if start_list succeeded. */ 1520 visit_end_list(m, &err); 1521 } 1522 error_propagate(errp, err); 1523 } 1524 } 1525 1526 static void visit_type_CpuInfo_fields(Visitor *m, CpuInfo ** obj, Error **errp) 1527 { 1528 Error *err = NULL; 1529 visit_type_int(m, obj ? &(*obj)->CPU : NULL, "CPU", &err); 1530 visit_type_bool(m, obj ? &(*obj)->current : NULL, "current", &err); 1531 visit_type_bool(m, obj ? &(*obj)->halted : NULL, "halted", &err); 1532 visit_start_optional(m, obj ? &(*obj)->has_pc : NULL, "pc", &err); 1533 if (obj && (*obj)->has_pc) { 1534 visit_type_int(m, obj ? &(*obj)->pc : NULL, "pc", &err); 1535 } 1536 visit_end_optional(m, &err); 1537 visit_start_optional(m, obj ? &(*obj)->has_nip : NULL, "nip", &err); 1538 if (obj && (*obj)->has_nip) { 1539 visit_type_int(m, obj ? &(*obj)->nip : NULL, "nip", &err); 1540 } 1541 visit_end_optional(m, &err); 1542 visit_start_optional(m, obj ? &(*obj)->has_npc : NULL, "npc", &err); 1543 if (obj && (*obj)->has_npc) { 1544 visit_type_int(m, obj ? &(*obj)->npc : NULL, "npc", &err); 1545 } 1546 visit_end_optional(m, &err); 1547 visit_start_optional(m, obj ? &(*obj)->has_PC : NULL, "PC", &err); 1548 if (obj && (*obj)->has_PC) { 1549 visit_type_int(m, obj ? &(*obj)->PC : NULL, "PC", &err); 1550 } 1551 visit_end_optional(m, &err); 1552 visit_type_int(m, obj ? &(*obj)->thread_id : NULL, "thread_id", &err); 1553 1554 error_propagate(errp, err); 1555 } 1556 1557 void visit_type_CpuInfo(Visitor *m, CpuInfo ** obj, const char *name, Error **errp) 1558 { 1559 if (!error_is_set(errp)) { 1560 Error *err = NULL; 1561 visit_start_struct(m, (void **)obj, "CpuInfo", name, sizeof(CpuInfo), &err); 1562 if (!err) { 1563 if (!obj || *obj) { 1564 visit_type_CpuInfo_fields(m, obj, &err); 1565 error_propagate(errp, err); 1566 err = NULL; 1567 } 1568 /* Always call end_struct if start_struct succeeded. */ 1569 visit_end_struct(m, &err); 1570 } 1571 error_propagate(errp, err); 1572 } 1573 } 1574 1575 void visit_type_CpuInfoList(Visitor *m, CpuInfoList ** obj, const char *name, Error **errp) 1576 { 1577 GenericList *i, **prev = (GenericList **)obj; 1578 Error *err = NULL; 1579 1580 if (!error_is_set(errp)) { 1581 visit_start_list(m, name, &err); 1582 if (!err) { 1583 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1584 CpuInfoList *native_i = (CpuInfoList *)i; 1585 visit_type_CpuInfo(m, &native_i->value, NULL, &err); 1586 } 1587 error_propagate(errp, err); 1588 err = NULL; 1589 1590 /* Always call end_list if start_list succeeded. */ 1591 visit_end_list(m, &err); 1592 } 1593 error_propagate(errp, err); 1594 } 1595 } 1596 1597 static void visit_type_BlockDeviceInfo_fields(Visitor *m, BlockDeviceInfo ** obj, Error **errp) 1598 { 1599 Error *err = NULL; 1600 visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err); 1601 visit_type_bool(m, obj ? &(*obj)->ro : NULL, "ro", &err); 1602 visit_type_str(m, obj ? &(*obj)->drv : NULL, "drv", &err); 1603 visit_start_optional(m, obj ? &(*obj)->has_backing_file : NULL, "backing_file", &err); 1604 if (obj && (*obj)->has_backing_file) { 1605 visit_type_str(m, obj ? &(*obj)->backing_file : NULL, "backing_file", &err); 1606 } 1607 visit_end_optional(m, &err); 1608 visit_type_int(m, obj ? &(*obj)->backing_file_depth : NULL, "backing_file_depth", &err); 1609 visit_type_bool(m, obj ? &(*obj)->encrypted : NULL, "encrypted", &err); 1610 visit_type_bool(m, obj ? &(*obj)->encryption_key_missing : NULL, "encryption_key_missing", &err); 1611 visit_type_int(m, obj ? &(*obj)->bps : NULL, "bps", &err); 1612 visit_type_int(m, obj ? &(*obj)->bps_rd : NULL, "bps_rd", &err); 1613 visit_type_int(m, obj ? &(*obj)->bps_wr : NULL, "bps_wr", &err); 1614 visit_type_int(m, obj ? &(*obj)->iops : NULL, "iops", &err); 1615 visit_type_int(m, obj ? &(*obj)->iops_rd : NULL, "iops_rd", &err); 1616 visit_type_int(m, obj ? &(*obj)->iops_wr : NULL, "iops_wr", &err); 1617 visit_type_ImageInfo(m, obj ? &(*obj)->image : NULL, "image", &err); 1618 visit_start_optional(m, obj ? &(*obj)->has_bps_max : NULL, "bps_max", &err); 1619 if (obj && (*obj)->has_bps_max) { 1620 visit_type_int(m, obj ? &(*obj)->bps_max : NULL, "bps_max", &err); 1621 } 1622 visit_end_optional(m, &err); 1623 visit_start_optional(m, obj ? &(*obj)->has_bps_rd_max : NULL, "bps_rd_max", &err); 1624 if (obj && (*obj)->has_bps_rd_max) { 1625 visit_type_int(m, obj ? &(*obj)->bps_rd_max : NULL, "bps_rd_max", &err); 1626 } 1627 visit_end_optional(m, &err); 1628 visit_start_optional(m, obj ? &(*obj)->has_bps_wr_max : NULL, "bps_wr_max", &err); 1629 if (obj && (*obj)->has_bps_wr_max) { 1630 visit_type_int(m, obj ? &(*obj)->bps_wr_max : NULL, "bps_wr_max", &err); 1631 } 1632 visit_end_optional(m, &err); 1633 visit_start_optional(m, obj ? &(*obj)->has_iops_max : NULL, "iops_max", &err); 1634 if (obj && (*obj)->has_iops_max) { 1635 visit_type_int(m, obj ? &(*obj)->iops_max : NULL, "iops_max", &err); 1636 } 1637 visit_end_optional(m, &err); 1638 visit_start_optional(m, obj ? &(*obj)->has_iops_rd_max : NULL, "iops_rd_max", &err); 1639 if (obj && (*obj)->has_iops_rd_max) { 1640 visit_type_int(m, obj ? &(*obj)->iops_rd_max : NULL, "iops_rd_max", &err); 1641 } 1642 visit_end_optional(m, &err); 1643 visit_start_optional(m, obj ? &(*obj)->has_iops_wr_max : NULL, "iops_wr_max", &err); 1644 if (obj && (*obj)->has_iops_wr_max) { 1645 visit_type_int(m, obj ? &(*obj)->iops_wr_max : NULL, "iops_wr_max", &err); 1646 } 1647 visit_end_optional(m, &err); 1648 visit_start_optional(m, obj ? &(*obj)->has_iops_size : NULL, "iops_size", &err); 1649 if (obj && (*obj)->has_iops_size) { 1650 visit_type_int(m, obj ? &(*obj)->iops_size : NULL, "iops_size", &err); 1651 } 1652 visit_end_optional(m, &err); 1653 1654 error_propagate(errp, err); 1655 } 1656 1657 void visit_type_BlockDeviceInfo(Visitor *m, BlockDeviceInfo ** obj, const char *name, Error **errp) 1658 { 1659 if (!error_is_set(errp)) { 1660 Error *err = NULL; 1661 visit_start_struct(m, (void **)obj, "BlockDeviceInfo", name, sizeof(BlockDeviceInfo), &err); 1662 if (!err) { 1663 if (!obj || *obj) { 1664 visit_type_BlockDeviceInfo_fields(m, obj, &err); 1665 error_propagate(errp, err); 1666 err = NULL; 1667 } 1668 /* Always call end_struct if start_struct succeeded. */ 1669 visit_end_struct(m, &err); 1670 } 1671 error_propagate(errp, err); 1672 } 1673 } 1674 1675 void visit_type_BlockDeviceInfoList(Visitor *m, BlockDeviceInfoList ** obj, const char *name, Error **errp) 1676 { 1677 GenericList *i, **prev = (GenericList **)obj; 1678 Error *err = NULL; 1679 1680 if (!error_is_set(errp)) { 1681 visit_start_list(m, name, &err); 1682 if (!err) { 1683 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1684 BlockDeviceInfoList *native_i = (BlockDeviceInfoList *)i; 1685 visit_type_BlockDeviceInfo(m, &native_i->value, NULL, &err); 1686 } 1687 error_propagate(errp, err); 1688 err = NULL; 1689 1690 /* Always call end_list if start_list succeeded. */ 1691 visit_end_list(m, &err); 1692 } 1693 error_propagate(errp, err); 1694 } 1695 } 1696 1697 void visit_type_BlockDeviceIoStatusList(Visitor *m, BlockDeviceIoStatusList ** obj, const char *name, Error **errp) 1698 { 1699 GenericList *i, **prev = (GenericList **)obj; 1700 Error *err = NULL; 1701 1702 if (!error_is_set(errp)) { 1703 visit_start_list(m, name, &err); 1704 if (!err) { 1705 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1706 BlockDeviceIoStatusList *native_i = (BlockDeviceIoStatusList *)i; 1707 visit_type_BlockDeviceIoStatus(m, &native_i->value, NULL, &err); 1708 } 1709 error_propagate(errp, err); 1710 err = NULL; 1711 1712 /* Always call end_list if start_list succeeded. */ 1713 visit_end_list(m, &err); 1714 } 1715 error_propagate(errp, err); 1716 } 1717 } 1718 1719 void visit_type_BlockDeviceIoStatus(Visitor *m, BlockDeviceIoStatus * obj, const char *name, Error **errp) 1720 { 1721 visit_type_enum(m, (int *)obj, BlockDeviceIoStatus_lookup, "BlockDeviceIoStatus", name, errp); 1722 } 1723 1724 static void visit_type_BlockDeviceMapEntry_fields(Visitor *m, BlockDeviceMapEntry ** obj, Error **errp) 1725 { 1726 Error *err = NULL; 1727 visit_type_int(m, obj ? &(*obj)->start : NULL, "start", &err); 1728 visit_type_int(m, obj ? &(*obj)->length : NULL, "length", &err); 1729 visit_type_int(m, obj ? &(*obj)->depth : NULL, "depth", &err); 1730 visit_type_bool(m, obj ? &(*obj)->zero : NULL, "zero", &err); 1731 visit_type_bool(m, obj ? &(*obj)->data : NULL, "data", &err); 1732 visit_start_optional(m, obj ? &(*obj)->has_offset : NULL, "offset", &err); 1733 if (obj && (*obj)->has_offset) { 1734 visit_type_int(m, obj ? &(*obj)->offset : NULL, "offset", &err); 1735 } 1736 visit_end_optional(m, &err); 1737 1738 error_propagate(errp, err); 1739 } 1740 1741 void visit_type_BlockDeviceMapEntry(Visitor *m, BlockDeviceMapEntry ** obj, const char *name, Error **errp) 1742 { 1743 if (!error_is_set(errp)) { 1744 Error *err = NULL; 1745 visit_start_struct(m, (void **)obj, "BlockDeviceMapEntry", name, sizeof(BlockDeviceMapEntry), &err); 1746 if (!err) { 1747 if (!obj || *obj) { 1748 visit_type_BlockDeviceMapEntry_fields(m, obj, &err); 1749 error_propagate(errp, err); 1750 err = NULL; 1751 } 1752 /* Always call end_struct if start_struct succeeded. */ 1753 visit_end_struct(m, &err); 1754 } 1755 error_propagate(errp, err); 1756 } 1757 } 1758 1759 void visit_type_BlockDeviceMapEntryList(Visitor *m, BlockDeviceMapEntryList ** obj, const char *name, Error **errp) 1760 { 1761 GenericList *i, **prev = (GenericList **)obj; 1762 Error *err = NULL; 1763 1764 if (!error_is_set(errp)) { 1765 visit_start_list(m, name, &err); 1766 if (!err) { 1767 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1768 BlockDeviceMapEntryList *native_i = (BlockDeviceMapEntryList *)i; 1769 visit_type_BlockDeviceMapEntry(m, &native_i->value, NULL, &err); 1770 } 1771 error_propagate(errp, err); 1772 err = NULL; 1773 1774 /* Always call end_list if start_list succeeded. */ 1775 visit_end_list(m, &err); 1776 } 1777 error_propagate(errp, err); 1778 } 1779 } 1780 1781 static void visit_type_BlockDirtyInfo_fields(Visitor *m, BlockDirtyInfo ** obj, Error **errp) 1782 { 1783 Error *err = NULL; 1784 visit_type_int(m, obj ? &(*obj)->count : NULL, "count", &err); 1785 visit_type_int(m, obj ? &(*obj)->granularity : NULL, "granularity", &err); 1786 1787 error_propagate(errp, err); 1788 } 1789 1790 void visit_type_BlockDirtyInfo(Visitor *m, BlockDirtyInfo ** obj, const char *name, Error **errp) 1791 { 1792 if (!error_is_set(errp)) { 1793 Error *err = NULL; 1794 visit_start_struct(m, (void **)obj, "BlockDirtyInfo", name, sizeof(BlockDirtyInfo), &err); 1795 if (!err) { 1796 if (!obj || *obj) { 1797 visit_type_BlockDirtyInfo_fields(m, obj, &err); 1798 error_propagate(errp, err); 1799 err = NULL; 1800 } 1801 /* Always call end_struct if start_struct succeeded. */ 1802 visit_end_struct(m, &err); 1803 } 1804 error_propagate(errp, err); 1805 } 1806 } 1807 1808 void visit_type_BlockDirtyInfoList(Visitor *m, BlockDirtyInfoList ** obj, const char *name, Error **errp) 1809 { 1810 GenericList *i, **prev = (GenericList **)obj; 1811 Error *err = NULL; 1812 1813 if (!error_is_set(errp)) { 1814 visit_start_list(m, name, &err); 1815 if (!err) { 1816 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1817 BlockDirtyInfoList *native_i = (BlockDirtyInfoList *)i; 1818 visit_type_BlockDirtyInfo(m, &native_i->value, NULL, &err); 1819 } 1820 error_propagate(errp, err); 1821 err = NULL; 1822 1823 /* Always call end_list if start_list succeeded. */ 1824 visit_end_list(m, &err); 1825 } 1826 error_propagate(errp, err); 1827 } 1828 } 1829 1830 static void visit_type_BlockInfo_fields(Visitor *m, BlockInfo ** obj, Error **errp) 1831 { 1832 Error *err = NULL; 1833 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 1834 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 1835 visit_type_bool(m, obj ? &(*obj)->removable : NULL, "removable", &err); 1836 visit_type_bool(m, obj ? &(*obj)->locked : NULL, "locked", &err); 1837 visit_start_optional(m, obj ? &(*obj)->has_inserted : NULL, "inserted", &err); 1838 if (obj && (*obj)->has_inserted) { 1839 visit_type_BlockDeviceInfo(m, obj ? &(*obj)->inserted : NULL, "inserted", &err); 1840 } 1841 visit_end_optional(m, &err); 1842 visit_start_optional(m, obj ? &(*obj)->has_tray_open : NULL, "tray_open", &err); 1843 if (obj && (*obj)->has_tray_open) { 1844 visit_type_bool(m, obj ? &(*obj)->tray_open : NULL, "tray_open", &err); 1845 } 1846 visit_end_optional(m, &err); 1847 visit_start_optional(m, obj ? &(*obj)->has_io_status : NULL, "io-status", &err); 1848 if (obj && (*obj)->has_io_status) { 1849 visit_type_BlockDeviceIoStatus(m, obj ? &(*obj)->io_status : NULL, "io-status", &err); 1850 } 1851 visit_end_optional(m, &err); 1852 visit_start_optional(m, obj ? &(*obj)->has_dirty_bitmaps : NULL, "dirty-bitmaps", &err); 1853 if (obj && (*obj)->has_dirty_bitmaps) { 1854 visit_type_BlockDirtyInfoList(m, obj ? &(*obj)->dirty_bitmaps : NULL, "dirty-bitmaps", &err); 1855 } 1856 visit_end_optional(m, &err); 1857 1858 error_propagate(errp, err); 1859 } 1860 1861 void visit_type_BlockInfo(Visitor *m, BlockInfo ** obj, const char *name, Error **errp) 1862 { 1863 if (!error_is_set(errp)) { 1864 Error *err = NULL; 1865 visit_start_struct(m, (void **)obj, "BlockInfo", name, sizeof(BlockInfo), &err); 1866 if (!err) { 1867 if (!obj || *obj) { 1868 visit_type_BlockInfo_fields(m, obj, &err); 1869 error_propagate(errp, err); 1870 err = NULL; 1871 } 1872 /* Always call end_struct if start_struct succeeded. */ 1873 visit_end_struct(m, &err); 1874 } 1875 error_propagate(errp, err); 1876 } 1877 } 1878 1879 void visit_type_BlockInfoList(Visitor *m, BlockInfoList ** obj, const char *name, Error **errp) 1880 { 1881 GenericList *i, **prev = (GenericList **)obj; 1882 Error *err = NULL; 1883 1884 if (!error_is_set(errp)) { 1885 visit_start_list(m, name, &err); 1886 if (!err) { 1887 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1888 BlockInfoList *native_i = (BlockInfoList *)i; 1889 visit_type_BlockInfo(m, &native_i->value, NULL, &err); 1890 } 1891 error_propagate(errp, err); 1892 err = NULL; 1893 1894 /* Always call end_list if start_list succeeded. */ 1895 visit_end_list(m, &err); 1896 } 1897 error_propagate(errp, err); 1898 } 1899 } 1900 1901 static void visit_type_BlockDeviceStats_fields(Visitor *m, BlockDeviceStats ** obj, Error **errp) 1902 { 1903 Error *err = NULL; 1904 visit_type_int(m, obj ? &(*obj)->rd_bytes : NULL, "rd_bytes", &err); 1905 visit_type_int(m, obj ? &(*obj)->wr_bytes : NULL, "wr_bytes", &err); 1906 visit_type_int(m, obj ? &(*obj)->rd_operations : NULL, "rd_operations", &err); 1907 visit_type_int(m, obj ? &(*obj)->wr_operations : NULL, "wr_operations", &err); 1908 visit_type_int(m, obj ? &(*obj)->flush_operations : NULL, "flush_operations", &err); 1909 visit_type_int(m, obj ? &(*obj)->flush_total_time_ns : NULL, "flush_total_time_ns", &err); 1910 visit_type_int(m, obj ? &(*obj)->wr_total_time_ns : NULL, "wr_total_time_ns", &err); 1911 visit_type_int(m, obj ? &(*obj)->rd_total_time_ns : NULL, "rd_total_time_ns", &err); 1912 visit_type_int(m, obj ? &(*obj)->wr_highest_offset : NULL, "wr_highest_offset", &err); 1913 1914 error_propagate(errp, err); 1915 } 1916 1917 void visit_type_BlockDeviceStats(Visitor *m, BlockDeviceStats ** obj, const char *name, Error **errp) 1918 { 1919 if (!error_is_set(errp)) { 1920 Error *err = NULL; 1921 visit_start_struct(m, (void **)obj, "BlockDeviceStats", name, sizeof(BlockDeviceStats), &err); 1922 if (!err) { 1923 if (!obj || *obj) { 1924 visit_type_BlockDeviceStats_fields(m, obj, &err); 1925 error_propagate(errp, err); 1926 err = NULL; 1927 } 1928 /* Always call end_struct if start_struct succeeded. */ 1929 visit_end_struct(m, &err); 1930 } 1931 error_propagate(errp, err); 1932 } 1933 } 1934 1935 void visit_type_BlockDeviceStatsList(Visitor *m, BlockDeviceStatsList ** obj, const char *name, Error **errp) 1936 { 1937 GenericList *i, **prev = (GenericList **)obj; 1938 Error *err = NULL; 1939 1940 if (!error_is_set(errp)) { 1941 visit_start_list(m, name, &err); 1942 if (!err) { 1943 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 1944 BlockDeviceStatsList *native_i = (BlockDeviceStatsList *)i; 1945 visit_type_BlockDeviceStats(m, &native_i->value, NULL, &err); 1946 } 1947 error_propagate(errp, err); 1948 err = NULL; 1949 1950 /* Always call end_list if start_list succeeded. */ 1951 visit_end_list(m, &err); 1952 } 1953 error_propagate(errp, err); 1954 } 1955 } 1956 1957 static void visit_type_BlockStats_fields(Visitor *m, BlockStats ** obj, Error **errp) 1958 { 1959 Error *err = NULL; 1960 visit_start_optional(m, obj ? &(*obj)->has_device : NULL, "device", &err); 1961 if (obj && (*obj)->has_device) { 1962 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 1963 } 1964 visit_end_optional(m, &err); 1965 visit_type_BlockDeviceStats(m, obj ? &(*obj)->stats : NULL, "stats", &err); 1966 visit_start_optional(m, obj ? &(*obj)->has_parent : NULL, "parent", &err); 1967 if (obj && (*obj)->has_parent) { 1968 visit_type_BlockStats(m, obj ? &(*obj)->parent : NULL, "parent", &err); 1969 } 1970 visit_end_optional(m, &err); 1971 1972 error_propagate(errp, err); 1973 } 1974 1975 void visit_type_BlockStats(Visitor *m, BlockStats ** obj, const char *name, Error **errp) 1976 { 1977 if (!error_is_set(errp)) { 1978 Error *err = NULL; 1979 visit_start_struct(m, (void **)obj, "BlockStats", name, sizeof(BlockStats), &err); 1980 if (!err) { 1981 if (!obj || *obj) { 1982 visit_type_BlockStats_fields(m, obj, &err); 1983 error_propagate(errp, err); 1984 err = NULL; 1985 } 1986 /* Always call end_struct if start_struct succeeded. */ 1987 visit_end_struct(m, &err); 1988 } 1989 error_propagate(errp, err); 1990 } 1991 } 1992 1993 void visit_type_BlockStatsList(Visitor *m, BlockStatsList ** obj, const char *name, Error **errp) 1994 { 1995 GenericList *i, **prev = (GenericList **)obj; 1996 Error *err = NULL; 1997 1998 if (!error_is_set(errp)) { 1999 visit_start_list(m, name, &err); 2000 if (!err) { 2001 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2002 BlockStatsList *native_i = (BlockStatsList *)i; 2003 visit_type_BlockStats(m, &native_i->value, NULL, &err); 2004 } 2005 error_propagate(errp, err); 2006 err = NULL; 2007 2008 /* Always call end_list if start_list succeeded. */ 2009 visit_end_list(m, &err); 2010 } 2011 error_propagate(errp, err); 2012 } 2013 } 2014 2015 static void visit_type_VncClientInfo_fields(Visitor *m, VncClientInfo ** obj, Error **errp) 2016 { 2017 Error *err = NULL; 2018 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 2019 visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err); 2020 visit_type_str(m, obj ? &(*obj)->service : NULL, "service", &err); 2021 visit_start_optional(m, obj ? &(*obj)->has_x509_dname : NULL, "x509_dname", &err); 2022 if (obj && (*obj)->has_x509_dname) { 2023 visit_type_str(m, obj ? &(*obj)->x509_dname : NULL, "x509_dname", &err); 2024 } 2025 visit_end_optional(m, &err); 2026 visit_start_optional(m, obj ? &(*obj)->has_sasl_username : NULL, "sasl_username", &err); 2027 if (obj && (*obj)->has_sasl_username) { 2028 visit_type_str(m, obj ? &(*obj)->sasl_username : NULL, "sasl_username", &err); 2029 } 2030 visit_end_optional(m, &err); 2031 2032 error_propagate(errp, err); 2033 } 2034 2035 void visit_type_VncClientInfo(Visitor *m, VncClientInfo ** obj, const char *name, Error **errp) 2036 { 2037 if (!error_is_set(errp)) { 2038 Error *err = NULL; 2039 visit_start_struct(m, (void **)obj, "VncClientInfo", name, sizeof(VncClientInfo), &err); 2040 if (!err) { 2041 if (!obj || *obj) { 2042 visit_type_VncClientInfo_fields(m, obj, &err); 2043 error_propagate(errp, err); 2044 err = NULL; 2045 } 2046 /* Always call end_struct if start_struct succeeded. */ 2047 visit_end_struct(m, &err); 2048 } 2049 error_propagate(errp, err); 2050 } 2051 } 2052 2053 void visit_type_VncClientInfoList(Visitor *m, VncClientInfoList ** obj, const char *name, Error **errp) 2054 { 2055 GenericList *i, **prev = (GenericList **)obj; 2056 Error *err = NULL; 2057 2058 if (!error_is_set(errp)) { 2059 visit_start_list(m, name, &err); 2060 if (!err) { 2061 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2062 VncClientInfoList *native_i = (VncClientInfoList *)i; 2063 visit_type_VncClientInfo(m, &native_i->value, NULL, &err); 2064 } 2065 error_propagate(errp, err); 2066 err = NULL; 2067 2068 /* Always call end_list if start_list succeeded. */ 2069 visit_end_list(m, &err); 2070 } 2071 error_propagate(errp, err); 2072 } 2073 } 2074 2075 static void visit_type_VncInfo_fields(Visitor *m, VncInfo ** obj, Error **errp) 2076 { 2077 Error *err = NULL; 2078 visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err); 2079 visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err); 2080 if (obj && (*obj)->has_host) { 2081 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 2082 } 2083 visit_end_optional(m, &err); 2084 visit_start_optional(m, obj ? &(*obj)->has_family : NULL, "family", &err); 2085 if (obj && (*obj)->has_family) { 2086 visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err); 2087 } 2088 visit_end_optional(m, &err); 2089 visit_start_optional(m, obj ? &(*obj)->has_service : NULL, "service", &err); 2090 if (obj && (*obj)->has_service) { 2091 visit_type_str(m, obj ? &(*obj)->service : NULL, "service", &err); 2092 } 2093 visit_end_optional(m, &err); 2094 visit_start_optional(m, obj ? &(*obj)->has_auth : NULL, "auth", &err); 2095 if (obj && (*obj)->has_auth) { 2096 visit_type_str(m, obj ? &(*obj)->auth : NULL, "auth", &err); 2097 } 2098 visit_end_optional(m, &err); 2099 visit_start_optional(m, obj ? &(*obj)->has_clients : NULL, "clients", &err); 2100 if (obj && (*obj)->has_clients) { 2101 visit_type_VncClientInfoList(m, obj ? &(*obj)->clients : NULL, "clients", &err); 2102 } 2103 visit_end_optional(m, &err); 2104 2105 error_propagate(errp, err); 2106 } 2107 2108 void visit_type_VncInfo(Visitor *m, VncInfo ** obj, const char *name, Error **errp) 2109 { 2110 if (!error_is_set(errp)) { 2111 Error *err = NULL; 2112 visit_start_struct(m, (void **)obj, "VncInfo", name, sizeof(VncInfo), &err); 2113 if (!err) { 2114 if (!obj || *obj) { 2115 visit_type_VncInfo_fields(m, obj, &err); 2116 error_propagate(errp, err); 2117 err = NULL; 2118 } 2119 /* Always call end_struct if start_struct succeeded. */ 2120 visit_end_struct(m, &err); 2121 } 2122 error_propagate(errp, err); 2123 } 2124 } 2125 2126 void visit_type_VncInfoList(Visitor *m, VncInfoList ** obj, const char *name, Error **errp) 2127 { 2128 GenericList *i, **prev = (GenericList **)obj; 2129 Error *err = NULL; 2130 2131 if (!error_is_set(errp)) { 2132 visit_start_list(m, name, &err); 2133 if (!err) { 2134 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2135 VncInfoList *native_i = (VncInfoList *)i; 2136 visit_type_VncInfo(m, &native_i->value, NULL, &err); 2137 } 2138 error_propagate(errp, err); 2139 err = NULL; 2140 2141 /* Always call end_list if start_list succeeded. */ 2142 visit_end_list(m, &err); 2143 } 2144 error_propagate(errp, err); 2145 } 2146 } 2147 2148 static void visit_type_SpiceChannel_fields(Visitor *m, SpiceChannel ** obj, Error **errp) 2149 { 2150 Error *err = NULL; 2151 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 2152 visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err); 2153 visit_type_str(m, obj ? &(*obj)->port : NULL, "port", &err); 2154 visit_type_int(m, obj ? &(*obj)->connection_id : NULL, "connection-id", &err); 2155 visit_type_int(m, obj ? &(*obj)->channel_type : NULL, "channel-type", &err); 2156 visit_type_int(m, obj ? &(*obj)->channel_id : NULL, "channel-id", &err); 2157 visit_type_bool(m, obj ? &(*obj)->tls : NULL, "tls", &err); 2158 2159 error_propagate(errp, err); 2160 } 2161 2162 void visit_type_SpiceChannel(Visitor *m, SpiceChannel ** obj, const char *name, Error **errp) 2163 { 2164 if (!error_is_set(errp)) { 2165 Error *err = NULL; 2166 visit_start_struct(m, (void **)obj, "SpiceChannel", name, sizeof(SpiceChannel), &err); 2167 if (!err) { 2168 if (!obj || *obj) { 2169 visit_type_SpiceChannel_fields(m, obj, &err); 2170 error_propagate(errp, err); 2171 err = NULL; 2172 } 2173 /* Always call end_struct if start_struct succeeded. */ 2174 visit_end_struct(m, &err); 2175 } 2176 error_propagate(errp, err); 2177 } 2178 } 2179 2180 void visit_type_SpiceChannelList(Visitor *m, SpiceChannelList ** obj, const char *name, Error **errp) 2181 { 2182 GenericList *i, **prev = (GenericList **)obj; 2183 Error *err = NULL; 2184 2185 if (!error_is_set(errp)) { 2186 visit_start_list(m, name, &err); 2187 if (!err) { 2188 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2189 SpiceChannelList *native_i = (SpiceChannelList *)i; 2190 visit_type_SpiceChannel(m, &native_i->value, NULL, &err); 2191 } 2192 error_propagate(errp, err); 2193 err = NULL; 2194 2195 /* Always call end_list if start_list succeeded. */ 2196 visit_end_list(m, &err); 2197 } 2198 error_propagate(errp, err); 2199 } 2200 } 2201 2202 void visit_type_SpiceQueryMouseModeList(Visitor *m, SpiceQueryMouseModeList ** obj, const char *name, Error **errp) 2203 { 2204 GenericList *i, **prev = (GenericList **)obj; 2205 Error *err = NULL; 2206 2207 if (!error_is_set(errp)) { 2208 visit_start_list(m, name, &err); 2209 if (!err) { 2210 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2211 SpiceQueryMouseModeList *native_i = (SpiceQueryMouseModeList *)i; 2212 visit_type_SpiceQueryMouseMode(m, &native_i->value, NULL, &err); 2213 } 2214 error_propagate(errp, err); 2215 err = NULL; 2216 2217 /* Always call end_list if start_list succeeded. */ 2218 visit_end_list(m, &err); 2219 } 2220 error_propagate(errp, err); 2221 } 2222 } 2223 2224 void visit_type_SpiceQueryMouseMode(Visitor *m, SpiceQueryMouseMode * obj, const char *name, Error **errp) 2225 { 2226 visit_type_enum(m, (int *)obj, SpiceQueryMouseMode_lookup, "SpiceQueryMouseMode", name, errp); 2227 } 2228 2229 static void visit_type_SpiceInfo_fields(Visitor *m, SpiceInfo ** obj, Error **errp) 2230 { 2231 Error *err = NULL; 2232 visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err); 2233 visit_type_bool(m, obj ? &(*obj)->migrated : NULL, "migrated", &err); 2234 visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err); 2235 if (obj && (*obj)->has_host) { 2236 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 2237 } 2238 visit_end_optional(m, &err); 2239 visit_start_optional(m, obj ? &(*obj)->has_port : NULL, "port", &err); 2240 if (obj && (*obj)->has_port) { 2241 visit_type_int(m, obj ? &(*obj)->port : NULL, "port", &err); 2242 } 2243 visit_end_optional(m, &err); 2244 visit_start_optional(m, obj ? &(*obj)->has_tls_port : NULL, "tls-port", &err); 2245 if (obj && (*obj)->has_tls_port) { 2246 visit_type_int(m, obj ? &(*obj)->tls_port : NULL, "tls-port", &err); 2247 } 2248 visit_end_optional(m, &err); 2249 visit_start_optional(m, obj ? &(*obj)->has_auth : NULL, "auth", &err); 2250 if (obj && (*obj)->has_auth) { 2251 visit_type_str(m, obj ? &(*obj)->auth : NULL, "auth", &err); 2252 } 2253 visit_end_optional(m, &err); 2254 visit_start_optional(m, obj ? &(*obj)->has_compiled_version : NULL, "compiled-version", &err); 2255 if (obj && (*obj)->has_compiled_version) { 2256 visit_type_str(m, obj ? &(*obj)->compiled_version : NULL, "compiled-version", &err); 2257 } 2258 visit_end_optional(m, &err); 2259 visit_type_SpiceQueryMouseMode(m, obj ? &(*obj)->mouse_mode : NULL, "mouse-mode", &err); 2260 visit_start_optional(m, obj ? &(*obj)->has_channels : NULL, "channels", &err); 2261 if (obj && (*obj)->has_channels) { 2262 visit_type_SpiceChannelList(m, obj ? &(*obj)->channels : NULL, "channels", &err); 2263 } 2264 visit_end_optional(m, &err); 2265 2266 error_propagate(errp, err); 2267 } 2268 2269 void visit_type_SpiceInfo(Visitor *m, SpiceInfo ** obj, const char *name, Error **errp) 2270 { 2271 if (!error_is_set(errp)) { 2272 Error *err = NULL; 2273 visit_start_struct(m, (void **)obj, "SpiceInfo", name, sizeof(SpiceInfo), &err); 2274 if (!err) { 2275 if (!obj || *obj) { 2276 visit_type_SpiceInfo_fields(m, obj, &err); 2277 error_propagate(errp, err); 2278 err = NULL; 2279 } 2280 /* Always call end_struct if start_struct succeeded. */ 2281 visit_end_struct(m, &err); 2282 } 2283 error_propagate(errp, err); 2284 } 2285 } 2286 2287 void visit_type_SpiceInfoList(Visitor *m, SpiceInfoList ** obj, const char *name, Error **errp) 2288 { 2289 GenericList *i, **prev = (GenericList **)obj; 2290 Error *err = NULL; 2291 2292 if (!error_is_set(errp)) { 2293 visit_start_list(m, name, &err); 2294 if (!err) { 2295 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2296 SpiceInfoList *native_i = (SpiceInfoList *)i; 2297 visit_type_SpiceInfo(m, &native_i->value, NULL, &err); 2298 } 2299 error_propagate(errp, err); 2300 err = NULL; 2301 2302 /* Always call end_list if start_list succeeded. */ 2303 visit_end_list(m, &err); 2304 } 2305 error_propagate(errp, err); 2306 } 2307 } 2308 2309 static void visit_type_BalloonInfo_fields(Visitor *m, BalloonInfo ** obj, Error **errp) 2310 { 2311 Error *err = NULL; 2312 visit_type_int(m, obj ? &(*obj)->actual : NULL, "actual", &err); 2313 2314 error_propagate(errp, err); 2315 } 2316 2317 void visit_type_BalloonInfo(Visitor *m, BalloonInfo ** obj, const char *name, Error **errp) 2318 { 2319 if (!error_is_set(errp)) { 2320 Error *err = NULL; 2321 visit_start_struct(m, (void **)obj, "BalloonInfo", name, sizeof(BalloonInfo), &err); 2322 if (!err) { 2323 if (!obj || *obj) { 2324 visit_type_BalloonInfo_fields(m, obj, &err); 2325 error_propagate(errp, err); 2326 err = NULL; 2327 } 2328 /* Always call end_struct if start_struct succeeded. */ 2329 visit_end_struct(m, &err); 2330 } 2331 error_propagate(errp, err); 2332 } 2333 } 2334 2335 void visit_type_BalloonInfoList(Visitor *m, BalloonInfoList ** obj, const char *name, Error **errp) 2336 { 2337 GenericList *i, **prev = (GenericList **)obj; 2338 Error *err = NULL; 2339 2340 if (!error_is_set(errp)) { 2341 visit_start_list(m, name, &err); 2342 if (!err) { 2343 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2344 BalloonInfoList *native_i = (BalloonInfoList *)i; 2345 visit_type_BalloonInfo(m, &native_i->value, NULL, &err); 2346 } 2347 error_propagate(errp, err); 2348 err = NULL; 2349 2350 /* Always call end_list if start_list succeeded. */ 2351 visit_end_list(m, &err); 2352 } 2353 error_propagate(errp, err); 2354 } 2355 } 2356 2357 static void visit_type_PciMemoryRange_fields(Visitor *m, PciMemoryRange ** obj, Error **errp) 2358 { 2359 Error *err = NULL; 2360 visit_type_int(m, obj ? &(*obj)->base : NULL, "base", &err); 2361 visit_type_int(m, obj ? &(*obj)->limit : NULL, "limit", &err); 2362 2363 error_propagate(errp, err); 2364 } 2365 2366 void visit_type_PciMemoryRange(Visitor *m, PciMemoryRange ** obj, const char *name, Error **errp) 2367 { 2368 if (!error_is_set(errp)) { 2369 Error *err = NULL; 2370 visit_start_struct(m, (void **)obj, "PciMemoryRange", name, sizeof(PciMemoryRange), &err); 2371 if (!err) { 2372 if (!obj || *obj) { 2373 visit_type_PciMemoryRange_fields(m, obj, &err); 2374 error_propagate(errp, err); 2375 err = NULL; 2376 } 2377 /* Always call end_struct if start_struct succeeded. */ 2378 visit_end_struct(m, &err); 2379 } 2380 error_propagate(errp, err); 2381 } 2382 } 2383 2384 void visit_type_PciMemoryRangeList(Visitor *m, PciMemoryRangeList ** obj, const char *name, Error **errp) 2385 { 2386 GenericList *i, **prev = (GenericList **)obj; 2387 Error *err = NULL; 2388 2389 if (!error_is_set(errp)) { 2390 visit_start_list(m, name, &err); 2391 if (!err) { 2392 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2393 PciMemoryRangeList *native_i = (PciMemoryRangeList *)i; 2394 visit_type_PciMemoryRange(m, &native_i->value, NULL, &err); 2395 } 2396 error_propagate(errp, err); 2397 err = NULL; 2398 2399 /* Always call end_list if start_list succeeded. */ 2400 visit_end_list(m, &err); 2401 } 2402 error_propagate(errp, err); 2403 } 2404 } 2405 2406 static void visit_type_PciMemoryRegion_fields(Visitor *m, PciMemoryRegion ** obj, Error **errp) 2407 { 2408 Error *err = NULL; 2409 visit_type_int(m, obj ? &(*obj)->bar : NULL, "bar", &err); 2410 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 2411 visit_type_int(m, obj ? &(*obj)->address : NULL, "address", &err); 2412 visit_type_int(m, obj ? &(*obj)->size : NULL, "size", &err); 2413 visit_start_optional(m, obj ? &(*obj)->has_prefetch : NULL, "prefetch", &err); 2414 if (obj && (*obj)->has_prefetch) { 2415 visit_type_bool(m, obj ? &(*obj)->prefetch : NULL, "prefetch", &err); 2416 } 2417 visit_end_optional(m, &err); 2418 visit_start_optional(m, obj ? &(*obj)->has_mem_type_64 : NULL, "mem_type_64", &err); 2419 if (obj && (*obj)->has_mem_type_64) { 2420 visit_type_bool(m, obj ? &(*obj)->mem_type_64 : NULL, "mem_type_64", &err); 2421 } 2422 visit_end_optional(m, &err); 2423 2424 error_propagate(errp, err); 2425 } 2426 2427 void visit_type_PciMemoryRegion(Visitor *m, PciMemoryRegion ** obj, const char *name, Error **errp) 2428 { 2429 if (!error_is_set(errp)) { 2430 Error *err = NULL; 2431 visit_start_struct(m, (void **)obj, "PciMemoryRegion", name, sizeof(PciMemoryRegion), &err); 2432 if (!err) { 2433 if (!obj || *obj) { 2434 visit_type_PciMemoryRegion_fields(m, obj, &err); 2435 error_propagate(errp, err); 2436 err = NULL; 2437 } 2438 /* Always call end_struct if start_struct succeeded. */ 2439 visit_end_struct(m, &err); 2440 } 2441 error_propagate(errp, err); 2442 } 2443 } 2444 2445 void visit_type_PciMemoryRegionList(Visitor *m, PciMemoryRegionList ** obj, const char *name, Error **errp) 2446 { 2447 GenericList *i, **prev = (GenericList **)obj; 2448 Error *err = NULL; 2449 2450 if (!error_is_set(errp)) { 2451 visit_start_list(m, name, &err); 2452 if (!err) { 2453 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2454 PciMemoryRegionList *native_i = (PciMemoryRegionList *)i; 2455 visit_type_PciMemoryRegion(m, &native_i->value, NULL, &err); 2456 } 2457 error_propagate(errp, err); 2458 err = NULL; 2459 2460 /* Always call end_list if start_list succeeded. */ 2461 visit_end_list(m, &err); 2462 } 2463 error_propagate(errp, err); 2464 } 2465 } 2466 2467 static void visit_type_PciBridgeInfo_bus_fields(Visitor *m, PciBridgeInfo ** obj, Error **errp) 2468 { 2469 Error *err = NULL; 2470 visit_type_int(m, obj ? &(*obj)->bus.number : NULL, "number", &err); 2471 visit_type_int(m, obj ? &(*obj)->bus.secondary : NULL, "secondary", &err); 2472 visit_type_int(m, obj ? &(*obj)->bus.subordinate : NULL, "subordinate", &err); 2473 visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.io_range : NULL, "io_range", &err); 2474 visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.memory_range : NULL, "memory_range", &err); 2475 visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.prefetchable_range : NULL, "prefetchable_range", &err); 2476 2477 error_propagate(errp, err); 2478 } 2479 2480 static void visit_type_PciBridgeInfo_fields(Visitor *m, PciBridgeInfo ** obj, Error **errp) 2481 { 2482 Error *err = NULL; 2483 if (!error_is_set(errp)) { 2484 Error **errp = &err; /* from outer scope */ 2485 Error *err = NULL; 2486 visit_start_struct(m, NULL, "", "bus", 0, &err); 2487 if (!err) { 2488 if (!obj || *obj) { 2489 visit_type_PciBridgeInfo_bus_fields(m, obj, &err); 2490 error_propagate(errp, err); 2491 err = NULL; 2492 } 2493 /* Always call end_struct if start_struct succeeded. */ 2494 visit_end_struct(m, &err); 2495 } 2496 error_propagate(errp, err); 2497 } 2498 visit_start_optional(m, obj ? &(*obj)->has_devices : NULL, "devices", &err); 2499 if (obj && (*obj)->has_devices) { 2500 visit_type_PciDeviceInfoList(m, obj ? &(*obj)->devices : NULL, "devices", &err); 2501 } 2502 visit_end_optional(m, &err); 2503 2504 error_propagate(errp, err); 2505 } 2506 2507 void visit_type_PciBridgeInfo(Visitor *m, PciBridgeInfo ** obj, const char *name, Error **errp) 2508 { 2509 if (!error_is_set(errp)) { 2510 Error *err = NULL; 2511 visit_start_struct(m, (void **)obj, "PciBridgeInfo", name, sizeof(PciBridgeInfo), &err); 2512 if (!err) { 2513 if (!obj || *obj) { 2514 visit_type_PciBridgeInfo_fields(m, obj, &err); 2515 error_propagate(errp, err); 2516 err = NULL; 2517 } 2518 /* Always call end_struct if start_struct succeeded. */ 2519 visit_end_struct(m, &err); 2520 } 2521 error_propagate(errp, err); 2522 } 2523 } 2524 2525 void visit_type_PciBridgeInfoList(Visitor *m, PciBridgeInfoList ** obj, const char *name, Error **errp) 2526 { 2527 GenericList *i, **prev = (GenericList **)obj; 2528 Error *err = NULL; 2529 2530 if (!error_is_set(errp)) { 2531 visit_start_list(m, name, &err); 2532 if (!err) { 2533 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2534 PciBridgeInfoList *native_i = (PciBridgeInfoList *)i; 2535 visit_type_PciBridgeInfo(m, &native_i->value, NULL, &err); 2536 } 2537 error_propagate(errp, err); 2538 err = NULL; 2539 2540 /* Always call end_list if start_list succeeded. */ 2541 visit_end_list(m, &err); 2542 } 2543 error_propagate(errp, err); 2544 } 2545 } 2546 2547 static void visit_type_PciDeviceInfo_class_info_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp) 2548 { 2549 Error *err = NULL; 2550 visit_start_optional(m, obj ? &(*obj)->class_info.has_desc : NULL, "desc", &err); 2551 if (obj && (*obj)->class_info.has_desc) { 2552 visit_type_str(m, obj ? &(*obj)->class_info.desc : NULL, "desc", &err); 2553 } 2554 visit_end_optional(m, &err); 2555 visit_type_int(m, obj ? &(*obj)->class_info.q_class : NULL, "class", &err); 2556 2557 error_propagate(errp, err); 2558 } 2559 2560 static void visit_type_PciDeviceInfo_id_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp) 2561 { 2562 Error *err = NULL; 2563 visit_type_int(m, obj ? &(*obj)->id.device : NULL, "device", &err); 2564 visit_type_int(m, obj ? &(*obj)->id.vendor : NULL, "vendor", &err); 2565 2566 error_propagate(errp, err); 2567 } 2568 2569 static void visit_type_PciDeviceInfo_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp) 2570 { 2571 Error *err = NULL; 2572 visit_type_int(m, obj ? &(*obj)->bus : NULL, "bus", &err); 2573 visit_type_int(m, obj ? &(*obj)->slot : NULL, "slot", &err); 2574 visit_type_int(m, obj ? &(*obj)->function : NULL, "function", &err); 2575 if (!error_is_set(errp)) { 2576 Error **errp = &err; /* from outer scope */ 2577 Error *err = NULL; 2578 visit_start_struct(m, NULL, "", "class_info", 0, &err); 2579 if (!err) { 2580 if (!obj || *obj) { 2581 visit_type_PciDeviceInfo_class_info_fields(m, obj, &err); 2582 error_propagate(errp, err); 2583 err = NULL; 2584 } 2585 /* Always call end_struct if start_struct succeeded. */ 2586 visit_end_struct(m, &err); 2587 } 2588 error_propagate(errp, err); 2589 } 2590 if (!error_is_set(errp)) { 2591 Error **errp = &err; /* from outer scope */ 2592 Error *err = NULL; 2593 visit_start_struct(m, NULL, "", "id", 0, &err); 2594 if (!err) { 2595 if (!obj || *obj) { 2596 visit_type_PciDeviceInfo_id_fields(m, obj, &err); 2597 error_propagate(errp, err); 2598 err = NULL; 2599 } 2600 /* Always call end_struct if start_struct succeeded. */ 2601 visit_end_struct(m, &err); 2602 } 2603 error_propagate(errp, err); 2604 } 2605 visit_start_optional(m, obj ? &(*obj)->has_irq : NULL, "irq", &err); 2606 if (obj && (*obj)->has_irq) { 2607 visit_type_int(m, obj ? &(*obj)->irq : NULL, "irq", &err); 2608 } 2609 visit_end_optional(m, &err); 2610 visit_type_str(m, obj ? &(*obj)->qdev_id : NULL, "qdev_id", &err); 2611 visit_start_optional(m, obj ? &(*obj)->has_pci_bridge : NULL, "pci_bridge", &err); 2612 if (obj && (*obj)->has_pci_bridge) { 2613 visit_type_PciBridgeInfo(m, obj ? &(*obj)->pci_bridge : NULL, "pci_bridge", &err); 2614 } 2615 visit_end_optional(m, &err); 2616 visit_type_PciMemoryRegionList(m, obj ? &(*obj)->regions : NULL, "regions", &err); 2617 2618 error_propagate(errp, err); 2619 } 2620 2621 void visit_type_PciDeviceInfo(Visitor *m, PciDeviceInfo ** obj, const char *name, Error **errp) 2622 { 2623 if (!error_is_set(errp)) { 2624 Error *err = NULL; 2625 visit_start_struct(m, (void **)obj, "PciDeviceInfo", name, sizeof(PciDeviceInfo), &err); 2626 if (!err) { 2627 if (!obj || *obj) { 2628 visit_type_PciDeviceInfo_fields(m, obj, &err); 2629 error_propagate(errp, err); 2630 err = NULL; 2631 } 2632 /* Always call end_struct if start_struct succeeded. */ 2633 visit_end_struct(m, &err); 2634 } 2635 error_propagate(errp, err); 2636 } 2637 } 2638 2639 void visit_type_PciDeviceInfoList(Visitor *m, PciDeviceInfoList ** obj, const char *name, Error **errp) 2640 { 2641 GenericList *i, **prev = (GenericList **)obj; 2642 Error *err = NULL; 2643 2644 if (!error_is_set(errp)) { 2645 visit_start_list(m, name, &err); 2646 if (!err) { 2647 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2648 PciDeviceInfoList *native_i = (PciDeviceInfoList *)i; 2649 visit_type_PciDeviceInfo(m, &native_i->value, NULL, &err); 2650 } 2651 error_propagate(errp, err); 2652 err = NULL; 2653 2654 /* Always call end_list if start_list succeeded. */ 2655 visit_end_list(m, &err); 2656 } 2657 error_propagate(errp, err); 2658 } 2659 } 2660 2661 static void visit_type_PciInfo_fields(Visitor *m, PciInfo ** obj, Error **errp) 2662 { 2663 Error *err = NULL; 2664 visit_type_int(m, obj ? &(*obj)->bus : NULL, "bus", &err); 2665 visit_type_PciDeviceInfoList(m, obj ? &(*obj)->devices : NULL, "devices", &err); 2666 2667 error_propagate(errp, err); 2668 } 2669 2670 void visit_type_PciInfo(Visitor *m, PciInfo ** obj, const char *name, Error **errp) 2671 { 2672 if (!error_is_set(errp)) { 2673 Error *err = NULL; 2674 visit_start_struct(m, (void **)obj, "PciInfo", name, sizeof(PciInfo), &err); 2675 if (!err) { 2676 if (!obj || *obj) { 2677 visit_type_PciInfo_fields(m, obj, &err); 2678 error_propagate(errp, err); 2679 err = NULL; 2680 } 2681 /* Always call end_struct if start_struct succeeded. */ 2682 visit_end_struct(m, &err); 2683 } 2684 error_propagate(errp, err); 2685 } 2686 } 2687 2688 void visit_type_PciInfoList(Visitor *m, PciInfoList ** obj, const char *name, Error **errp) 2689 { 2690 GenericList *i, **prev = (GenericList **)obj; 2691 Error *err = NULL; 2692 2693 if (!error_is_set(errp)) { 2694 visit_start_list(m, name, &err); 2695 if (!err) { 2696 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2697 PciInfoList *native_i = (PciInfoList *)i; 2698 visit_type_PciInfo(m, &native_i->value, NULL, &err); 2699 } 2700 error_propagate(errp, err); 2701 err = NULL; 2702 2703 /* Always call end_list if start_list succeeded. */ 2704 visit_end_list(m, &err); 2705 } 2706 error_propagate(errp, err); 2707 } 2708 } 2709 2710 void visit_type_BlockdevOnErrorList(Visitor *m, BlockdevOnErrorList ** obj, const char *name, Error **errp) 2711 { 2712 GenericList *i, **prev = (GenericList **)obj; 2713 Error *err = NULL; 2714 2715 if (!error_is_set(errp)) { 2716 visit_start_list(m, name, &err); 2717 if (!err) { 2718 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2719 BlockdevOnErrorList *native_i = (BlockdevOnErrorList *)i; 2720 visit_type_BlockdevOnError(m, &native_i->value, NULL, &err); 2721 } 2722 error_propagate(errp, err); 2723 err = NULL; 2724 2725 /* Always call end_list if start_list succeeded. */ 2726 visit_end_list(m, &err); 2727 } 2728 error_propagate(errp, err); 2729 } 2730 } 2731 2732 void visit_type_BlockdevOnError(Visitor *m, BlockdevOnError * obj, const char *name, Error **errp) 2733 { 2734 visit_type_enum(m, (int *)obj, BlockdevOnError_lookup, "BlockdevOnError", name, errp); 2735 } 2736 2737 void visit_type_MirrorSyncModeList(Visitor *m, MirrorSyncModeList ** obj, const char *name, Error **errp) 2738 { 2739 GenericList *i, **prev = (GenericList **)obj; 2740 Error *err = NULL; 2741 2742 if (!error_is_set(errp)) { 2743 visit_start_list(m, name, &err); 2744 if (!err) { 2745 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2746 MirrorSyncModeList *native_i = (MirrorSyncModeList *)i; 2747 visit_type_MirrorSyncMode(m, &native_i->value, NULL, &err); 2748 } 2749 error_propagate(errp, err); 2750 err = NULL; 2751 2752 /* Always call end_list if start_list succeeded. */ 2753 visit_end_list(m, &err); 2754 } 2755 error_propagate(errp, err); 2756 } 2757 } 2758 2759 void visit_type_MirrorSyncMode(Visitor *m, MirrorSyncMode * obj, const char *name, Error **errp) 2760 { 2761 visit_type_enum(m, (int *)obj, MirrorSyncMode_lookup, "MirrorSyncMode", name, errp); 2762 } 2763 2764 void visit_type_BlockJobTypeList(Visitor *m, BlockJobTypeList ** obj, const char *name, Error **errp) 2765 { 2766 GenericList *i, **prev = (GenericList **)obj; 2767 Error *err = NULL; 2768 2769 if (!error_is_set(errp)) { 2770 visit_start_list(m, name, &err); 2771 if (!err) { 2772 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2773 BlockJobTypeList *native_i = (BlockJobTypeList *)i; 2774 visit_type_BlockJobType(m, &native_i->value, NULL, &err); 2775 } 2776 error_propagate(errp, err); 2777 err = NULL; 2778 2779 /* Always call end_list if start_list succeeded. */ 2780 visit_end_list(m, &err); 2781 } 2782 error_propagate(errp, err); 2783 } 2784 } 2785 2786 void visit_type_BlockJobType(Visitor *m, BlockJobType * obj, const char *name, Error **errp) 2787 { 2788 visit_type_enum(m, (int *)obj, BlockJobType_lookup, "BlockJobType", name, errp); 2789 } 2790 2791 static void visit_type_BlockJobInfo_fields(Visitor *m, BlockJobInfo ** obj, Error **errp) 2792 { 2793 Error *err = NULL; 2794 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 2795 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 2796 visit_type_int(m, obj ? &(*obj)->len : NULL, "len", &err); 2797 visit_type_int(m, obj ? &(*obj)->offset : NULL, "offset", &err); 2798 visit_type_bool(m, obj ? &(*obj)->busy : NULL, "busy", &err); 2799 visit_type_bool(m, obj ? &(*obj)->paused : NULL, "paused", &err); 2800 visit_type_int(m, obj ? &(*obj)->speed : NULL, "speed", &err); 2801 visit_type_BlockDeviceIoStatus(m, obj ? &(*obj)->io_status : NULL, "io-status", &err); 2802 2803 error_propagate(errp, err); 2804 } 2805 2806 void visit_type_BlockJobInfo(Visitor *m, BlockJobInfo ** obj, const char *name, Error **errp) 2807 { 2808 if (!error_is_set(errp)) { 2809 Error *err = NULL; 2810 visit_start_struct(m, (void **)obj, "BlockJobInfo", name, sizeof(BlockJobInfo), &err); 2811 if (!err) { 2812 if (!obj || *obj) { 2813 visit_type_BlockJobInfo_fields(m, obj, &err); 2814 error_propagate(errp, err); 2815 err = NULL; 2816 } 2817 /* Always call end_struct if start_struct succeeded. */ 2818 visit_end_struct(m, &err); 2819 } 2820 error_propagate(errp, err); 2821 } 2822 } 2823 2824 void visit_type_BlockJobInfoList(Visitor *m, BlockJobInfoList ** obj, const char *name, Error **errp) 2825 { 2826 GenericList *i, **prev = (GenericList **)obj; 2827 Error *err = NULL; 2828 2829 if (!error_is_set(errp)) { 2830 visit_start_list(m, name, &err); 2831 if (!err) { 2832 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2833 BlockJobInfoList *native_i = (BlockJobInfoList *)i; 2834 visit_type_BlockJobInfo(m, &native_i->value, NULL, &err); 2835 } 2836 error_propagate(errp, err); 2837 err = NULL; 2838 2839 /* Always call end_list if start_list succeeded. */ 2840 visit_end_list(m, &err); 2841 } 2842 error_propagate(errp, err); 2843 } 2844 } 2845 2846 void visit_type_NewImageModeList(Visitor *m, NewImageModeList ** obj, const char *name, Error **errp) 2847 { 2848 GenericList *i, **prev = (GenericList **)obj; 2849 Error *err = NULL; 2850 2851 if (!error_is_set(errp)) { 2852 visit_start_list(m, name, &err); 2853 if (!err) { 2854 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2855 NewImageModeList *native_i = (NewImageModeList *)i; 2856 visit_type_NewImageMode(m, &native_i->value, NULL, &err); 2857 } 2858 error_propagate(errp, err); 2859 err = NULL; 2860 2861 /* Always call end_list if start_list succeeded. */ 2862 visit_end_list(m, &err); 2863 } 2864 error_propagate(errp, err); 2865 } 2866 } 2867 2868 void visit_type_NewImageMode(Visitor *m, NewImageMode * obj, const char *name, Error **errp) 2869 { 2870 visit_type_enum(m, (int *)obj, NewImageMode_lookup, "NewImageMode", name, errp); 2871 } 2872 2873 static void visit_type_BlockdevSnapshot_fields(Visitor *m, BlockdevSnapshot ** obj, Error **errp) 2874 { 2875 Error *err = NULL; 2876 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 2877 visit_type_str(m, obj ? &(*obj)->snapshot_file : NULL, "snapshot-file", &err); 2878 visit_start_optional(m, obj ? &(*obj)->has_format : NULL, "format", &err); 2879 if (obj && (*obj)->has_format) { 2880 visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err); 2881 } 2882 visit_end_optional(m, &err); 2883 visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err); 2884 if (obj && (*obj)->has_mode) { 2885 visit_type_NewImageMode(m, obj ? &(*obj)->mode : NULL, "mode", &err); 2886 } 2887 visit_end_optional(m, &err); 2888 2889 error_propagate(errp, err); 2890 } 2891 2892 void visit_type_BlockdevSnapshot(Visitor *m, BlockdevSnapshot ** obj, const char *name, Error **errp) 2893 { 2894 if (!error_is_set(errp)) { 2895 Error *err = NULL; 2896 visit_start_struct(m, (void **)obj, "BlockdevSnapshot", name, sizeof(BlockdevSnapshot), &err); 2897 if (!err) { 2898 if (!obj || *obj) { 2899 visit_type_BlockdevSnapshot_fields(m, obj, &err); 2900 error_propagate(errp, err); 2901 err = NULL; 2902 } 2903 /* Always call end_struct if start_struct succeeded. */ 2904 visit_end_struct(m, &err); 2905 } 2906 error_propagate(errp, err); 2907 } 2908 } 2909 2910 void visit_type_BlockdevSnapshotList(Visitor *m, BlockdevSnapshotList ** obj, const char *name, Error **errp) 2911 { 2912 GenericList *i, **prev = (GenericList **)obj; 2913 Error *err = NULL; 2914 2915 if (!error_is_set(errp)) { 2916 visit_start_list(m, name, &err); 2917 if (!err) { 2918 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2919 BlockdevSnapshotList *native_i = (BlockdevSnapshotList *)i; 2920 visit_type_BlockdevSnapshot(m, &native_i->value, NULL, &err); 2921 } 2922 error_propagate(errp, err); 2923 err = NULL; 2924 2925 /* Always call end_list if start_list succeeded. */ 2926 visit_end_list(m, &err); 2927 } 2928 error_propagate(errp, err); 2929 } 2930 } 2931 2932 static void visit_type_BlockdevSnapshotInternal_fields(Visitor *m, BlockdevSnapshotInternal ** obj, Error **errp) 2933 { 2934 Error *err = NULL; 2935 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 2936 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 2937 2938 error_propagate(errp, err); 2939 } 2940 2941 void visit_type_BlockdevSnapshotInternal(Visitor *m, BlockdevSnapshotInternal ** obj, const char *name, Error **errp) 2942 { 2943 if (!error_is_set(errp)) { 2944 Error *err = NULL; 2945 visit_start_struct(m, (void **)obj, "BlockdevSnapshotInternal", name, sizeof(BlockdevSnapshotInternal), &err); 2946 if (!err) { 2947 if (!obj || *obj) { 2948 visit_type_BlockdevSnapshotInternal_fields(m, obj, &err); 2949 error_propagate(errp, err); 2950 err = NULL; 2951 } 2952 /* Always call end_struct if start_struct succeeded. */ 2953 visit_end_struct(m, &err); 2954 } 2955 error_propagate(errp, err); 2956 } 2957 } 2958 2959 void visit_type_BlockdevSnapshotInternalList(Visitor *m, BlockdevSnapshotInternalList ** obj, const char *name, Error **errp) 2960 { 2961 GenericList *i, **prev = (GenericList **)obj; 2962 Error *err = NULL; 2963 2964 if (!error_is_set(errp)) { 2965 visit_start_list(m, name, &err); 2966 if (!err) { 2967 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 2968 BlockdevSnapshotInternalList *native_i = (BlockdevSnapshotInternalList *)i; 2969 visit_type_BlockdevSnapshotInternal(m, &native_i->value, NULL, &err); 2970 } 2971 error_propagate(errp, err); 2972 err = NULL; 2973 2974 /* Always call end_list if start_list succeeded. */ 2975 visit_end_list(m, &err); 2976 } 2977 error_propagate(errp, err); 2978 } 2979 } 2980 2981 static void visit_type_DriveBackup_fields(Visitor *m, DriveBackup ** obj, Error **errp) 2982 { 2983 Error *err = NULL; 2984 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 2985 visit_type_str(m, obj ? &(*obj)->target : NULL, "target", &err); 2986 visit_start_optional(m, obj ? &(*obj)->has_format : NULL, "format", &err); 2987 if (obj && (*obj)->has_format) { 2988 visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err); 2989 } 2990 visit_end_optional(m, &err); 2991 visit_type_MirrorSyncMode(m, obj ? &(*obj)->sync : NULL, "sync", &err); 2992 visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err); 2993 if (obj && (*obj)->has_mode) { 2994 visit_type_NewImageMode(m, obj ? &(*obj)->mode : NULL, "mode", &err); 2995 } 2996 visit_end_optional(m, &err); 2997 visit_start_optional(m, obj ? &(*obj)->has_speed : NULL, "speed", &err); 2998 if (obj && (*obj)->has_speed) { 2999 visit_type_int(m, obj ? &(*obj)->speed : NULL, "speed", &err); 3000 } 3001 visit_end_optional(m, &err); 3002 visit_start_optional(m, obj ? &(*obj)->has_on_source_error : NULL, "on-source-error", &err); 3003 if (obj && (*obj)->has_on_source_error) { 3004 visit_type_BlockdevOnError(m, obj ? &(*obj)->on_source_error : NULL, "on-source-error", &err); 3005 } 3006 visit_end_optional(m, &err); 3007 visit_start_optional(m, obj ? &(*obj)->has_on_target_error : NULL, "on-target-error", &err); 3008 if (obj && (*obj)->has_on_target_error) { 3009 visit_type_BlockdevOnError(m, obj ? &(*obj)->on_target_error : NULL, "on-target-error", &err); 3010 } 3011 visit_end_optional(m, &err); 3012 3013 error_propagate(errp, err); 3014 } 3015 3016 void visit_type_DriveBackup(Visitor *m, DriveBackup ** obj, const char *name, Error **errp) 3017 { 3018 if (!error_is_set(errp)) { 3019 Error *err = NULL; 3020 visit_start_struct(m, (void **)obj, "DriveBackup", name, sizeof(DriveBackup), &err); 3021 if (!err) { 3022 if (!obj || *obj) { 3023 visit_type_DriveBackup_fields(m, obj, &err); 3024 error_propagate(errp, err); 3025 err = NULL; 3026 } 3027 /* Always call end_struct if start_struct succeeded. */ 3028 visit_end_struct(m, &err); 3029 } 3030 error_propagate(errp, err); 3031 } 3032 } 3033 3034 void visit_type_DriveBackupList(Visitor *m, DriveBackupList ** obj, const char *name, Error **errp) 3035 { 3036 GenericList *i, **prev = (GenericList **)obj; 3037 Error *err = NULL; 3038 3039 if (!error_is_set(errp)) { 3040 visit_start_list(m, name, &err); 3041 if (!err) { 3042 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3043 DriveBackupList *native_i = (DriveBackupList *)i; 3044 visit_type_DriveBackup(m, &native_i->value, NULL, &err); 3045 } 3046 error_propagate(errp, err); 3047 err = NULL; 3048 3049 /* Always call end_list if start_list succeeded. */ 3050 visit_end_list(m, &err); 3051 } 3052 error_propagate(errp, err); 3053 } 3054 } 3055 3056 static void visit_type_Abort_fields(Visitor *m, Abort ** obj, Error **errp) 3057 { 3058 Error *err = NULL; 3059 3060 error_propagate(errp, err); 3061 } 3062 3063 void visit_type_Abort(Visitor *m, Abort ** obj, const char *name, Error **errp) 3064 { 3065 if (!error_is_set(errp)) { 3066 Error *err = NULL; 3067 visit_start_struct(m, (void **)obj, "Abort", name, sizeof(Abort), &err); 3068 if (!err) { 3069 if (!obj || *obj) { 3070 visit_type_Abort_fields(m, obj, &err); 3071 error_propagate(errp, err); 3072 err = NULL; 3073 } 3074 /* Always call end_struct if start_struct succeeded. */ 3075 visit_end_struct(m, &err); 3076 } 3077 error_propagate(errp, err); 3078 } 3079 } 3080 3081 void visit_type_AbortList(Visitor *m, AbortList ** obj, const char *name, Error **errp) 3082 { 3083 GenericList *i, **prev = (GenericList **)obj; 3084 Error *err = NULL; 3085 3086 if (!error_is_set(errp)) { 3087 visit_start_list(m, name, &err); 3088 if (!err) { 3089 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3090 AbortList *native_i = (AbortList *)i; 3091 visit_type_Abort(m, &native_i->value, NULL, &err); 3092 } 3093 error_propagate(errp, err); 3094 err = NULL; 3095 3096 /* Always call end_list if start_list succeeded. */ 3097 visit_end_list(m, &err); 3098 } 3099 error_propagate(errp, err); 3100 } 3101 } 3102 3103 void visit_type_TransactionActionKind(Visitor *m, TransactionActionKind * obj, const char *name, Error **errp) 3104 { 3105 visit_type_enum(m, (int *)obj, TransactionActionKind_lookup, "TransactionActionKind", name, errp); 3106 } 3107 3108 void visit_type_TransactionAction(Visitor *m, TransactionAction ** obj, const char *name, Error **errp) 3109 { 3110 Error *err = NULL; 3111 3112 if (!error_is_set(errp)) { 3113 visit_start_struct(m, (void **)obj, "TransactionAction", name, sizeof(TransactionAction), &err); 3114 if (!err) { 3115 if (obj && *obj) { 3116 visit_type_TransactionActionKind(m, &(*obj)->kind, "type", &err); 3117 if (!err) { 3118 switch ((*obj)->kind) { 3119 case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC: 3120 visit_type_BlockdevSnapshot(m, &(*obj)->blockdev_snapshot_sync, "data", &err); 3121 break; 3122 case TRANSACTION_ACTION_KIND_DRIVE_BACKUP: 3123 visit_type_DriveBackup(m, &(*obj)->drive_backup, "data", &err); 3124 break; 3125 case TRANSACTION_ACTION_KIND_ABORT: 3126 visit_type_Abort(m, &(*obj)->abort, "data", &err); 3127 break; 3128 case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC: 3129 visit_type_BlockdevSnapshotInternal(m, &(*obj)->blockdev_snapshot_internal_sync, "data", &err); 3130 break; 3131 default: 3132 abort(); 3133 } 3134 } 3135 error_propagate(errp, err); 3136 err = NULL; 3137 } 3138 /* Always call end_struct if start_struct succeeded. */ 3139 visit_end_struct(m, &err); 3140 } 3141 error_propagate(errp, err); 3142 } 3143 } 3144 3145 void visit_type_TransactionActionList(Visitor *m, TransactionActionList ** obj, const char *name, Error **errp) 3146 { 3147 GenericList *i, **prev = (GenericList **)obj; 3148 Error *err = NULL; 3149 3150 if (!error_is_set(errp)) { 3151 visit_start_list(m, name, &err); 3152 if (!err) { 3153 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3154 TransactionActionList *native_i = (TransactionActionList *)i; 3155 visit_type_TransactionAction(m, &native_i->value, NULL, &err); 3156 } 3157 error_propagate(errp, err); 3158 err = NULL; 3159 3160 /* Always call end_list if start_list succeeded. */ 3161 visit_end_list(m, &err); 3162 } 3163 error_propagate(errp, err); 3164 } 3165 } 3166 3167 static void visit_type_ObjectPropertyInfo_fields(Visitor *m, ObjectPropertyInfo ** obj, Error **errp) 3168 { 3169 Error *err = NULL; 3170 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 3171 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 3172 3173 error_propagate(errp, err); 3174 } 3175 3176 void visit_type_ObjectPropertyInfo(Visitor *m, ObjectPropertyInfo ** obj, const char *name, Error **errp) 3177 { 3178 if (!error_is_set(errp)) { 3179 Error *err = NULL; 3180 visit_start_struct(m, (void **)obj, "ObjectPropertyInfo", name, sizeof(ObjectPropertyInfo), &err); 3181 if (!err) { 3182 if (!obj || *obj) { 3183 visit_type_ObjectPropertyInfo_fields(m, obj, &err); 3184 error_propagate(errp, err); 3185 err = NULL; 3186 } 3187 /* Always call end_struct if start_struct succeeded. */ 3188 visit_end_struct(m, &err); 3189 } 3190 error_propagate(errp, err); 3191 } 3192 } 3193 3194 void visit_type_ObjectPropertyInfoList(Visitor *m, ObjectPropertyInfoList ** obj, const char *name, Error **errp) 3195 { 3196 GenericList *i, **prev = (GenericList **)obj; 3197 Error *err = NULL; 3198 3199 if (!error_is_set(errp)) { 3200 visit_start_list(m, name, &err); 3201 if (!err) { 3202 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3203 ObjectPropertyInfoList *native_i = (ObjectPropertyInfoList *)i; 3204 visit_type_ObjectPropertyInfo(m, &native_i->value, NULL, &err); 3205 } 3206 error_propagate(errp, err); 3207 err = NULL; 3208 3209 /* Always call end_list if start_list succeeded. */ 3210 visit_end_list(m, &err); 3211 } 3212 error_propagate(errp, err); 3213 } 3214 } 3215 3216 static void visit_type_ObjectTypeInfo_fields(Visitor *m, ObjectTypeInfo ** obj, Error **errp) 3217 { 3218 Error *err = NULL; 3219 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 3220 3221 error_propagate(errp, err); 3222 } 3223 3224 void visit_type_ObjectTypeInfo(Visitor *m, ObjectTypeInfo ** obj, const char *name, Error **errp) 3225 { 3226 if (!error_is_set(errp)) { 3227 Error *err = NULL; 3228 visit_start_struct(m, (void **)obj, "ObjectTypeInfo", name, sizeof(ObjectTypeInfo), &err); 3229 if (!err) { 3230 if (!obj || *obj) { 3231 visit_type_ObjectTypeInfo_fields(m, obj, &err); 3232 error_propagate(errp, err); 3233 err = NULL; 3234 } 3235 /* Always call end_struct if start_struct succeeded. */ 3236 visit_end_struct(m, &err); 3237 } 3238 error_propagate(errp, err); 3239 } 3240 } 3241 3242 void visit_type_ObjectTypeInfoList(Visitor *m, ObjectTypeInfoList ** obj, const char *name, Error **errp) 3243 { 3244 GenericList *i, **prev = (GenericList **)obj; 3245 Error *err = NULL; 3246 3247 if (!error_is_set(errp)) { 3248 visit_start_list(m, name, &err); 3249 if (!err) { 3250 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3251 ObjectTypeInfoList *native_i = (ObjectTypeInfoList *)i; 3252 visit_type_ObjectTypeInfo(m, &native_i->value, NULL, &err); 3253 } 3254 error_propagate(errp, err); 3255 err = NULL; 3256 3257 /* Always call end_list if start_list succeeded. */ 3258 visit_end_list(m, &err); 3259 } 3260 error_propagate(errp, err); 3261 } 3262 } 3263 3264 static void visit_type_DevicePropertyInfo_fields(Visitor *m, DevicePropertyInfo ** obj, Error **errp) 3265 { 3266 Error *err = NULL; 3267 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 3268 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 3269 3270 error_propagate(errp, err); 3271 } 3272 3273 void visit_type_DevicePropertyInfo(Visitor *m, DevicePropertyInfo ** obj, const char *name, Error **errp) 3274 { 3275 if (!error_is_set(errp)) { 3276 Error *err = NULL; 3277 visit_start_struct(m, (void **)obj, "DevicePropertyInfo", name, sizeof(DevicePropertyInfo), &err); 3278 if (!err) { 3279 if (!obj || *obj) { 3280 visit_type_DevicePropertyInfo_fields(m, obj, &err); 3281 error_propagate(errp, err); 3282 err = NULL; 3283 } 3284 /* Always call end_struct if start_struct succeeded. */ 3285 visit_end_struct(m, &err); 3286 } 3287 error_propagate(errp, err); 3288 } 3289 } 3290 3291 void visit_type_DevicePropertyInfoList(Visitor *m, DevicePropertyInfoList ** obj, const char *name, Error **errp) 3292 { 3293 GenericList *i, **prev = (GenericList **)obj; 3294 Error *err = NULL; 3295 3296 if (!error_is_set(errp)) { 3297 visit_start_list(m, name, &err); 3298 if (!err) { 3299 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3300 DevicePropertyInfoList *native_i = (DevicePropertyInfoList *)i; 3301 visit_type_DevicePropertyInfo(m, &native_i->value, NULL, &err); 3302 } 3303 error_propagate(errp, err); 3304 err = NULL; 3305 3306 /* Always call end_list if start_list succeeded. */ 3307 visit_end_list(m, &err); 3308 } 3309 error_propagate(errp, err); 3310 } 3311 } 3312 3313 static void visit_type_NetdevNoneOptions_fields(Visitor *m, NetdevNoneOptions ** obj, Error **errp) 3314 { 3315 Error *err = NULL; 3316 3317 error_propagate(errp, err); 3318 } 3319 3320 void visit_type_NetdevNoneOptions(Visitor *m, NetdevNoneOptions ** obj, const char *name, Error **errp) 3321 { 3322 if (!error_is_set(errp)) { 3323 Error *err = NULL; 3324 visit_start_struct(m, (void **)obj, "NetdevNoneOptions", name, sizeof(NetdevNoneOptions), &err); 3325 if (!err) { 3326 if (!obj || *obj) { 3327 visit_type_NetdevNoneOptions_fields(m, obj, &err); 3328 error_propagate(errp, err); 3329 err = NULL; 3330 } 3331 /* Always call end_struct if start_struct succeeded. */ 3332 visit_end_struct(m, &err); 3333 } 3334 error_propagate(errp, err); 3335 } 3336 } 3337 3338 void visit_type_NetdevNoneOptionsList(Visitor *m, NetdevNoneOptionsList ** obj, const char *name, Error **errp) 3339 { 3340 GenericList *i, **prev = (GenericList **)obj; 3341 Error *err = NULL; 3342 3343 if (!error_is_set(errp)) { 3344 visit_start_list(m, name, &err); 3345 if (!err) { 3346 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3347 NetdevNoneOptionsList *native_i = (NetdevNoneOptionsList *)i; 3348 visit_type_NetdevNoneOptions(m, &native_i->value, NULL, &err); 3349 } 3350 error_propagate(errp, err); 3351 err = NULL; 3352 3353 /* Always call end_list if start_list succeeded. */ 3354 visit_end_list(m, &err); 3355 } 3356 error_propagate(errp, err); 3357 } 3358 } 3359 3360 static void visit_type_NetLegacyNicOptions_fields(Visitor *m, NetLegacyNicOptions ** obj, Error **errp) 3361 { 3362 Error *err = NULL; 3363 visit_start_optional(m, obj ? &(*obj)->has_netdev : NULL, "netdev", &err); 3364 if (obj && (*obj)->has_netdev) { 3365 visit_type_str(m, obj ? &(*obj)->netdev : NULL, "netdev", &err); 3366 } 3367 visit_end_optional(m, &err); 3368 visit_start_optional(m, obj ? &(*obj)->has_macaddr : NULL, "macaddr", &err); 3369 if (obj && (*obj)->has_macaddr) { 3370 visit_type_str(m, obj ? &(*obj)->macaddr : NULL, "macaddr", &err); 3371 } 3372 visit_end_optional(m, &err); 3373 visit_start_optional(m, obj ? &(*obj)->has_model : NULL, "model", &err); 3374 if (obj && (*obj)->has_model) { 3375 visit_type_str(m, obj ? &(*obj)->model : NULL, "model", &err); 3376 } 3377 visit_end_optional(m, &err); 3378 visit_start_optional(m, obj ? &(*obj)->has_addr : NULL, "addr", &err); 3379 if (obj && (*obj)->has_addr) { 3380 visit_type_str(m, obj ? &(*obj)->addr : NULL, "addr", &err); 3381 } 3382 visit_end_optional(m, &err); 3383 visit_start_optional(m, obj ? &(*obj)->has_vectors : NULL, "vectors", &err); 3384 if (obj && (*obj)->has_vectors) { 3385 visit_type_uint32(m, obj ? &(*obj)->vectors : NULL, "vectors", &err); 3386 } 3387 visit_end_optional(m, &err); 3388 3389 error_propagate(errp, err); 3390 } 3391 3392 void visit_type_NetLegacyNicOptions(Visitor *m, NetLegacyNicOptions ** obj, const char *name, Error **errp) 3393 { 3394 if (!error_is_set(errp)) { 3395 Error *err = NULL; 3396 visit_start_struct(m, (void **)obj, "NetLegacyNicOptions", name, sizeof(NetLegacyNicOptions), &err); 3397 if (!err) { 3398 if (!obj || *obj) { 3399 visit_type_NetLegacyNicOptions_fields(m, obj, &err); 3400 error_propagate(errp, err); 3401 err = NULL; 3402 } 3403 /* Always call end_struct if start_struct succeeded. */ 3404 visit_end_struct(m, &err); 3405 } 3406 error_propagate(errp, err); 3407 } 3408 } 3409 3410 void visit_type_NetLegacyNicOptionsList(Visitor *m, NetLegacyNicOptionsList ** obj, const char *name, Error **errp) 3411 { 3412 GenericList *i, **prev = (GenericList **)obj; 3413 Error *err = NULL; 3414 3415 if (!error_is_set(errp)) { 3416 visit_start_list(m, name, &err); 3417 if (!err) { 3418 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3419 NetLegacyNicOptionsList *native_i = (NetLegacyNicOptionsList *)i; 3420 visit_type_NetLegacyNicOptions(m, &native_i->value, NULL, &err); 3421 } 3422 error_propagate(errp, err); 3423 err = NULL; 3424 3425 /* Always call end_list if start_list succeeded. */ 3426 visit_end_list(m, &err); 3427 } 3428 error_propagate(errp, err); 3429 } 3430 } 3431 3432 static void visit_type_String_fields(Visitor *m, String ** obj, Error **errp) 3433 { 3434 Error *err = NULL; 3435 visit_type_str(m, obj ? &(*obj)->str : NULL, "str", &err); 3436 3437 error_propagate(errp, err); 3438 } 3439 3440 void visit_type_String(Visitor *m, String ** obj, const char *name, Error **errp) 3441 { 3442 if (!error_is_set(errp)) { 3443 Error *err = NULL; 3444 visit_start_struct(m, (void **)obj, "String", name, sizeof(String), &err); 3445 if (!err) { 3446 if (!obj || *obj) { 3447 visit_type_String_fields(m, obj, &err); 3448 error_propagate(errp, err); 3449 err = NULL; 3450 } 3451 /* Always call end_struct if start_struct succeeded. */ 3452 visit_end_struct(m, &err); 3453 } 3454 error_propagate(errp, err); 3455 } 3456 } 3457 3458 void visit_type_StringList(Visitor *m, StringList ** obj, const char *name, Error **errp) 3459 { 3460 GenericList *i, **prev = (GenericList **)obj; 3461 Error *err = NULL; 3462 3463 if (!error_is_set(errp)) { 3464 visit_start_list(m, name, &err); 3465 if (!err) { 3466 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3467 StringList *native_i = (StringList *)i; 3468 visit_type_String(m, &native_i->value, NULL, &err); 3469 } 3470 error_propagate(errp, err); 3471 err = NULL; 3472 3473 /* Always call end_list if start_list succeeded. */ 3474 visit_end_list(m, &err); 3475 } 3476 error_propagate(errp, err); 3477 } 3478 } 3479 3480 static void visit_type_NetdevUserOptions_fields(Visitor *m, NetdevUserOptions ** obj, Error **errp) 3481 { 3482 Error *err = NULL; 3483 visit_start_optional(m, obj ? &(*obj)->has_hostname : NULL, "hostname", &err); 3484 if (obj && (*obj)->has_hostname) { 3485 visit_type_str(m, obj ? &(*obj)->hostname : NULL, "hostname", &err); 3486 } 3487 visit_end_optional(m, &err); 3488 visit_start_optional(m, obj ? &(*obj)->has_q_restrict : NULL, "restrict", &err); 3489 if (obj && (*obj)->has_q_restrict) { 3490 visit_type_bool(m, obj ? &(*obj)->q_restrict : NULL, "restrict", &err); 3491 } 3492 visit_end_optional(m, &err); 3493 visit_start_optional(m, obj ? &(*obj)->has_ip : NULL, "ip", &err); 3494 if (obj && (*obj)->has_ip) { 3495 visit_type_str(m, obj ? &(*obj)->ip : NULL, "ip", &err); 3496 } 3497 visit_end_optional(m, &err); 3498 visit_start_optional(m, obj ? &(*obj)->has_net : NULL, "net", &err); 3499 if (obj && (*obj)->has_net) { 3500 visit_type_str(m, obj ? &(*obj)->net : NULL, "net", &err); 3501 } 3502 visit_end_optional(m, &err); 3503 visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err); 3504 if (obj && (*obj)->has_host) { 3505 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 3506 } 3507 visit_end_optional(m, &err); 3508 visit_start_optional(m, obj ? &(*obj)->has_tftp : NULL, "tftp", &err); 3509 if (obj && (*obj)->has_tftp) { 3510 visit_type_str(m, obj ? &(*obj)->tftp : NULL, "tftp", &err); 3511 } 3512 visit_end_optional(m, &err); 3513 visit_start_optional(m, obj ? &(*obj)->has_bootfile : NULL, "bootfile", &err); 3514 if (obj && (*obj)->has_bootfile) { 3515 visit_type_str(m, obj ? &(*obj)->bootfile : NULL, "bootfile", &err); 3516 } 3517 visit_end_optional(m, &err); 3518 visit_start_optional(m, obj ? &(*obj)->has_dhcpstart : NULL, "dhcpstart", &err); 3519 if (obj && (*obj)->has_dhcpstart) { 3520 visit_type_str(m, obj ? &(*obj)->dhcpstart : NULL, "dhcpstart", &err); 3521 } 3522 visit_end_optional(m, &err); 3523 visit_start_optional(m, obj ? &(*obj)->has_dns : NULL, "dns", &err); 3524 if (obj && (*obj)->has_dns) { 3525 visit_type_str(m, obj ? &(*obj)->dns : NULL, "dns", &err); 3526 } 3527 visit_end_optional(m, &err); 3528 visit_start_optional(m, obj ? &(*obj)->has_dnssearch : NULL, "dnssearch", &err); 3529 if (obj && (*obj)->has_dnssearch) { 3530 visit_type_StringList(m, obj ? &(*obj)->dnssearch : NULL, "dnssearch", &err); 3531 } 3532 visit_end_optional(m, &err); 3533 visit_start_optional(m, obj ? &(*obj)->has_smb : NULL, "smb", &err); 3534 if (obj && (*obj)->has_smb) { 3535 visit_type_str(m, obj ? &(*obj)->smb : NULL, "smb", &err); 3536 } 3537 visit_end_optional(m, &err); 3538 visit_start_optional(m, obj ? &(*obj)->has_smbserver : NULL, "smbserver", &err); 3539 if (obj && (*obj)->has_smbserver) { 3540 visit_type_str(m, obj ? &(*obj)->smbserver : NULL, "smbserver", &err); 3541 } 3542 visit_end_optional(m, &err); 3543 visit_start_optional(m, obj ? &(*obj)->has_hostfwd : NULL, "hostfwd", &err); 3544 if (obj && (*obj)->has_hostfwd) { 3545 visit_type_StringList(m, obj ? &(*obj)->hostfwd : NULL, "hostfwd", &err); 3546 } 3547 visit_end_optional(m, &err); 3548 visit_start_optional(m, obj ? &(*obj)->has_guestfwd : NULL, "guestfwd", &err); 3549 if (obj && (*obj)->has_guestfwd) { 3550 visit_type_StringList(m, obj ? &(*obj)->guestfwd : NULL, "guestfwd", &err); 3551 } 3552 visit_end_optional(m, &err); 3553 3554 error_propagate(errp, err); 3555 } 3556 3557 void visit_type_NetdevUserOptions(Visitor *m, NetdevUserOptions ** obj, const char *name, Error **errp) 3558 { 3559 if (!error_is_set(errp)) { 3560 Error *err = NULL; 3561 visit_start_struct(m, (void **)obj, "NetdevUserOptions", name, sizeof(NetdevUserOptions), &err); 3562 if (!err) { 3563 if (!obj || *obj) { 3564 visit_type_NetdevUserOptions_fields(m, obj, &err); 3565 error_propagate(errp, err); 3566 err = NULL; 3567 } 3568 /* Always call end_struct if start_struct succeeded. */ 3569 visit_end_struct(m, &err); 3570 } 3571 error_propagate(errp, err); 3572 } 3573 } 3574 3575 void visit_type_NetdevUserOptionsList(Visitor *m, NetdevUserOptionsList ** obj, const char *name, Error **errp) 3576 { 3577 GenericList *i, **prev = (GenericList **)obj; 3578 Error *err = NULL; 3579 3580 if (!error_is_set(errp)) { 3581 visit_start_list(m, name, &err); 3582 if (!err) { 3583 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3584 NetdevUserOptionsList *native_i = (NetdevUserOptionsList *)i; 3585 visit_type_NetdevUserOptions(m, &native_i->value, NULL, &err); 3586 } 3587 error_propagate(errp, err); 3588 err = NULL; 3589 3590 /* Always call end_list if start_list succeeded. */ 3591 visit_end_list(m, &err); 3592 } 3593 error_propagate(errp, err); 3594 } 3595 } 3596 3597 static void visit_type_NetdevTapOptions_fields(Visitor *m, NetdevTapOptions ** obj, Error **errp) 3598 { 3599 Error *err = NULL; 3600 visit_start_optional(m, obj ? &(*obj)->has_ifname : NULL, "ifname", &err); 3601 if (obj && (*obj)->has_ifname) { 3602 visit_type_str(m, obj ? &(*obj)->ifname : NULL, "ifname", &err); 3603 } 3604 visit_end_optional(m, &err); 3605 visit_start_optional(m, obj ? &(*obj)->has_fd : NULL, "fd", &err); 3606 if (obj && (*obj)->has_fd) { 3607 visit_type_str(m, obj ? &(*obj)->fd : NULL, "fd", &err); 3608 } 3609 visit_end_optional(m, &err); 3610 visit_start_optional(m, obj ? &(*obj)->has_fds : NULL, "fds", &err); 3611 if (obj && (*obj)->has_fds) { 3612 visit_type_str(m, obj ? &(*obj)->fds : NULL, "fds", &err); 3613 } 3614 visit_end_optional(m, &err); 3615 visit_start_optional(m, obj ? &(*obj)->has_script : NULL, "script", &err); 3616 if (obj && (*obj)->has_script) { 3617 visit_type_str(m, obj ? &(*obj)->script : NULL, "script", &err); 3618 } 3619 visit_end_optional(m, &err); 3620 visit_start_optional(m, obj ? &(*obj)->has_downscript : NULL, "downscript", &err); 3621 if (obj && (*obj)->has_downscript) { 3622 visit_type_str(m, obj ? &(*obj)->downscript : NULL, "downscript", &err); 3623 } 3624 visit_end_optional(m, &err); 3625 visit_start_optional(m, obj ? &(*obj)->has_helper : NULL, "helper", &err); 3626 if (obj && (*obj)->has_helper) { 3627 visit_type_str(m, obj ? &(*obj)->helper : NULL, "helper", &err); 3628 } 3629 visit_end_optional(m, &err); 3630 visit_start_optional(m, obj ? &(*obj)->has_sndbuf : NULL, "sndbuf", &err); 3631 if (obj && (*obj)->has_sndbuf) { 3632 visit_type_size(m, obj ? &(*obj)->sndbuf : NULL, "sndbuf", &err); 3633 } 3634 visit_end_optional(m, &err); 3635 visit_start_optional(m, obj ? &(*obj)->has_vnet_hdr : NULL, "vnet_hdr", &err); 3636 if (obj && (*obj)->has_vnet_hdr) { 3637 visit_type_bool(m, obj ? &(*obj)->vnet_hdr : NULL, "vnet_hdr", &err); 3638 } 3639 visit_end_optional(m, &err); 3640 visit_start_optional(m, obj ? &(*obj)->has_vhost : NULL, "vhost", &err); 3641 if (obj && (*obj)->has_vhost) { 3642 visit_type_bool(m, obj ? &(*obj)->vhost : NULL, "vhost", &err); 3643 } 3644 visit_end_optional(m, &err); 3645 visit_start_optional(m, obj ? &(*obj)->has_vhostfd : NULL, "vhostfd", &err); 3646 if (obj && (*obj)->has_vhostfd) { 3647 visit_type_str(m, obj ? &(*obj)->vhostfd : NULL, "vhostfd", &err); 3648 } 3649 visit_end_optional(m, &err); 3650 visit_start_optional(m, obj ? &(*obj)->has_vhostfds : NULL, "vhostfds", &err); 3651 if (obj && (*obj)->has_vhostfds) { 3652 visit_type_str(m, obj ? &(*obj)->vhostfds : NULL, "vhostfds", &err); 3653 } 3654 visit_end_optional(m, &err); 3655 visit_start_optional(m, obj ? &(*obj)->has_vhostforce : NULL, "vhostforce", &err); 3656 if (obj && (*obj)->has_vhostforce) { 3657 visit_type_bool(m, obj ? &(*obj)->vhostforce : NULL, "vhostforce", &err); 3658 } 3659 visit_end_optional(m, &err); 3660 visit_start_optional(m, obj ? &(*obj)->has_queues : NULL, "queues", &err); 3661 if (obj && (*obj)->has_queues) { 3662 visit_type_uint32(m, obj ? &(*obj)->queues : NULL, "queues", &err); 3663 } 3664 visit_end_optional(m, &err); 3665 3666 error_propagate(errp, err); 3667 } 3668 3669 void visit_type_NetdevTapOptions(Visitor *m, NetdevTapOptions ** obj, const char *name, Error **errp) 3670 { 3671 if (!error_is_set(errp)) { 3672 Error *err = NULL; 3673 visit_start_struct(m, (void **)obj, "NetdevTapOptions", name, sizeof(NetdevTapOptions), &err); 3674 if (!err) { 3675 if (!obj || *obj) { 3676 visit_type_NetdevTapOptions_fields(m, obj, &err); 3677 error_propagate(errp, err); 3678 err = NULL; 3679 } 3680 /* Always call end_struct if start_struct succeeded. */ 3681 visit_end_struct(m, &err); 3682 } 3683 error_propagate(errp, err); 3684 } 3685 } 3686 3687 void visit_type_NetdevTapOptionsList(Visitor *m, NetdevTapOptionsList ** obj, const char *name, Error **errp) 3688 { 3689 GenericList *i, **prev = (GenericList **)obj; 3690 Error *err = NULL; 3691 3692 if (!error_is_set(errp)) { 3693 visit_start_list(m, name, &err); 3694 if (!err) { 3695 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3696 NetdevTapOptionsList *native_i = (NetdevTapOptionsList *)i; 3697 visit_type_NetdevTapOptions(m, &native_i->value, NULL, &err); 3698 } 3699 error_propagate(errp, err); 3700 err = NULL; 3701 3702 /* Always call end_list if start_list succeeded. */ 3703 visit_end_list(m, &err); 3704 } 3705 error_propagate(errp, err); 3706 } 3707 } 3708 3709 static void visit_type_NetdevSocketOptions_fields(Visitor *m, NetdevSocketOptions ** obj, Error **errp) 3710 { 3711 Error *err = NULL; 3712 visit_start_optional(m, obj ? &(*obj)->has_fd : NULL, "fd", &err); 3713 if (obj && (*obj)->has_fd) { 3714 visit_type_str(m, obj ? &(*obj)->fd : NULL, "fd", &err); 3715 } 3716 visit_end_optional(m, &err); 3717 visit_start_optional(m, obj ? &(*obj)->has_listen : NULL, "listen", &err); 3718 if (obj && (*obj)->has_listen) { 3719 visit_type_str(m, obj ? &(*obj)->listen : NULL, "listen", &err); 3720 } 3721 visit_end_optional(m, &err); 3722 visit_start_optional(m, obj ? &(*obj)->has_connect : NULL, "connect", &err); 3723 if (obj && (*obj)->has_connect) { 3724 visit_type_str(m, obj ? &(*obj)->connect : NULL, "connect", &err); 3725 } 3726 visit_end_optional(m, &err); 3727 visit_start_optional(m, obj ? &(*obj)->has_mcast : NULL, "mcast", &err); 3728 if (obj && (*obj)->has_mcast) { 3729 visit_type_str(m, obj ? &(*obj)->mcast : NULL, "mcast", &err); 3730 } 3731 visit_end_optional(m, &err); 3732 visit_start_optional(m, obj ? &(*obj)->has_localaddr : NULL, "localaddr", &err); 3733 if (obj && (*obj)->has_localaddr) { 3734 visit_type_str(m, obj ? &(*obj)->localaddr : NULL, "localaddr", &err); 3735 } 3736 visit_end_optional(m, &err); 3737 visit_start_optional(m, obj ? &(*obj)->has_udp : NULL, "udp", &err); 3738 if (obj && (*obj)->has_udp) { 3739 visit_type_str(m, obj ? &(*obj)->udp : NULL, "udp", &err); 3740 } 3741 visit_end_optional(m, &err); 3742 3743 error_propagate(errp, err); 3744 } 3745 3746 void visit_type_NetdevSocketOptions(Visitor *m, NetdevSocketOptions ** obj, const char *name, Error **errp) 3747 { 3748 if (!error_is_set(errp)) { 3749 Error *err = NULL; 3750 visit_start_struct(m, (void **)obj, "NetdevSocketOptions", name, sizeof(NetdevSocketOptions), &err); 3751 if (!err) { 3752 if (!obj || *obj) { 3753 visit_type_NetdevSocketOptions_fields(m, obj, &err); 3754 error_propagate(errp, err); 3755 err = NULL; 3756 } 3757 /* Always call end_struct if start_struct succeeded. */ 3758 visit_end_struct(m, &err); 3759 } 3760 error_propagate(errp, err); 3761 } 3762 } 3763 3764 void visit_type_NetdevSocketOptionsList(Visitor *m, NetdevSocketOptionsList ** obj, const char *name, Error **errp) 3765 { 3766 GenericList *i, **prev = (GenericList **)obj; 3767 Error *err = NULL; 3768 3769 if (!error_is_set(errp)) { 3770 visit_start_list(m, name, &err); 3771 if (!err) { 3772 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3773 NetdevSocketOptionsList *native_i = (NetdevSocketOptionsList *)i; 3774 visit_type_NetdevSocketOptions(m, &native_i->value, NULL, &err); 3775 } 3776 error_propagate(errp, err); 3777 err = NULL; 3778 3779 /* Always call end_list if start_list succeeded. */ 3780 visit_end_list(m, &err); 3781 } 3782 error_propagate(errp, err); 3783 } 3784 } 3785 3786 static void visit_type_NetdevVdeOptions_fields(Visitor *m, NetdevVdeOptions ** obj, Error **errp) 3787 { 3788 Error *err = NULL; 3789 visit_start_optional(m, obj ? &(*obj)->has_sock : NULL, "sock", &err); 3790 if (obj && (*obj)->has_sock) { 3791 visit_type_str(m, obj ? &(*obj)->sock : NULL, "sock", &err); 3792 } 3793 visit_end_optional(m, &err); 3794 visit_start_optional(m, obj ? &(*obj)->has_port : NULL, "port", &err); 3795 if (obj && (*obj)->has_port) { 3796 visit_type_uint16(m, obj ? &(*obj)->port : NULL, "port", &err); 3797 } 3798 visit_end_optional(m, &err); 3799 visit_start_optional(m, obj ? &(*obj)->has_group : NULL, "group", &err); 3800 if (obj && (*obj)->has_group) { 3801 visit_type_str(m, obj ? &(*obj)->group : NULL, "group", &err); 3802 } 3803 visit_end_optional(m, &err); 3804 visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err); 3805 if (obj && (*obj)->has_mode) { 3806 visit_type_uint16(m, obj ? &(*obj)->mode : NULL, "mode", &err); 3807 } 3808 visit_end_optional(m, &err); 3809 3810 error_propagate(errp, err); 3811 } 3812 3813 void visit_type_NetdevVdeOptions(Visitor *m, NetdevVdeOptions ** obj, const char *name, Error **errp) 3814 { 3815 if (!error_is_set(errp)) { 3816 Error *err = NULL; 3817 visit_start_struct(m, (void **)obj, "NetdevVdeOptions", name, sizeof(NetdevVdeOptions), &err); 3818 if (!err) { 3819 if (!obj || *obj) { 3820 visit_type_NetdevVdeOptions_fields(m, obj, &err); 3821 error_propagate(errp, err); 3822 err = NULL; 3823 } 3824 /* Always call end_struct if start_struct succeeded. */ 3825 visit_end_struct(m, &err); 3826 } 3827 error_propagate(errp, err); 3828 } 3829 } 3830 3831 void visit_type_NetdevVdeOptionsList(Visitor *m, NetdevVdeOptionsList ** obj, const char *name, Error **errp) 3832 { 3833 GenericList *i, **prev = (GenericList **)obj; 3834 Error *err = NULL; 3835 3836 if (!error_is_set(errp)) { 3837 visit_start_list(m, name, &err); 3838 if (!err) { 3839 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3840 NetdevVdeOptionsList *native_i = (NetdevVdeOptionsList *)i; 3841 visit_type_NetdevVdeOptions(m, &native_i->value, NULL, &err); 3842 } 3843 error_propagate(errp, err); 3844 err = NULL; 3845 3846 /* Always call end_list if start_list succeeded. */ 3847 visit_end_list(m, &err); 3848 } 3849 error_propagate(errp, err); 3850 } 3851 } 3852 3853 static void visit_type_NetdevDumpOptions_fields(Visitor *m, NetdevDumpOptions ** obj, Error **errp) 3854 { 3855 Error *err = NULL; 3856 visit_start_optional(m, obj ? &(*obj)->has_len : NULL, "len", &err); 3857 if (obj && (*obj)->has_len) { 3858 visit_type_size(m, obj ? &(*obj)->len : NULL, "len", &err); 3859 } 3860 visit_end_optional(m, &err); 3861 visit_start_optional(m, obj ? &(*obj)->has_file : NULL, "file", &err); 3862 if (obj && (*obj)->has_file) { 3863 visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err); 3864 } 3865 visit_end_optional(m, &err); 3866 3867 error_propagate(errp, err); 3868 } 3869 3870 void visit_type_NetdevDumpOptions(Visitor *m, NetdevDumpOptions ** obj, const char *name, Error **errp) 3871 { 3872 if (!error_is_set(errp)) { 3873 Error *err = NULL; 3874 visit_start_struct(m, (void **)obj, "NetdevDumpOptions", name, sizeof(NetdevDumpOptions), &err); 3875 if (!err) { 3876 if (!obj || *obj) { 3877 visit_type_NetdevDumpOptions_fields(m, obj, &err); 3878 error_propagate(errp, err); 3879 err = NULL; 3880 } 3881 /* Always call end_struct if start_struct succeeded. */ 3882 visit_end_struct(m, &err); 3883 } 3884 error_propagate(errp, err); 3885 } 3886 } 3887 3888 void visit_type_NetdevDumpOptionsList(Visitor *m, NetdevDumpOptionsList ** obj, const char *name, Error **errp) 3889 { 3890 GenericList *i, **prev = (GenericList **)obj; 3891 Error *err = NULL; 3892 3893 if (!error_is_set(errp)) { 3894 visit_start_list(m, name, &err); 3895 if (!err) { 3896 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3897 NetdevDumpOptionsList *native_i = (NetdevDumpOptionsList *)i; 3898 visit_type_NetdevDumpOptions(m, &native_i->value, NULL, &err); 3899 } 3900 error_propagate(errp, err); 3901 err = NULL; 3902 3903 /* Always call end_list if start_list succeeded. */ 3904 visit_end_list(m, &err); 3905 } 3906 error_propagate(errp, err); 3907 } 3908 } 3909 3910 static void visit_type_NetdevBridgeOptions_fields(Visitor *m, NetdevBridgeOptions ** obj, Error **errp) 3911 { 3912 Error *err = NULL; 3913 visit_start_optional(m, obj ? &(*obj)->has_br : NULL, "br", &err); 3914 if (obj && (*obj)->has_br) { 3915 visit_type_str(m, obj ? &(*obj)->br : NULL, "br", &err); 3916 } 3917 visit_end_optional(m, &err); 3918 visit_start_optional(m, obj ? &(*obj)->has_helper : NULL, "helper", &err); 3919 if (obj && (*obj)->has_helper) { 3920 visit_type_str(m, obj ? &(*obj)->helper : NULL, "helper", &err); 3921 } 3922 visit_end_optional(m, &err); 3923 3924 error_propagate(errp, err); 3925 } 3926 3927 void visit_type_NetdevBridgeOptions(Visitor *m, NetdevBridgeOptions ** obj, const char *name, Error **errp) 3928 { 3929 if (!error_is_set(errp)) { 3930 Error *err = NULL; 3931 visit_start_struct(m, (void **)obj, "NetdevBridgeOptions", name, sizeof(NetdevBridgeOptions), &err); 3932 if (!err) { 3933 if (!obj || *obj) { 3934 visit_type_NetdevBridgeOptions_fields(m, obj, &err); 3935 error_propagate(errp, err); 3936 err = NULL; 3937 } 3938 /* Always call end_struct if start_struct succeeded. */ 3939 visit_end_struct(m, &err); 3940 } 3941 error_propagate(errp, err); 3942 } 3943 } 3944 3945 void visit_type_NetdevBridgeOptionsList(Visitor *m, NetdevBridgeOptionsList ** obj, const char *name, Error **errp) 3946 { 3947 GenericList *i, **prev = (GenericList **)obj; 3948 Error *err = NULL; 3949 3950 if (!error_is_set(errp)) { 3951 visit_start_list(m, name, &err); 3952 if (!err) { 3953 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 3954 NetdevBridgeOptionsList *native_i = (NetdevBridgeOptionsList *)i; 3955 visit_type_NetdevBridgeOptions(m, &native_i->value, NULL, &err); 3956 } 3957 error_propagate(errp, err); 3958 err = NULL; 3959 3960 /* Always call end_list if start_list succeeded. */ 3961 visit_end_list(m, &err); 3962 } 3963 error_propagate(errp, err); 3964 } 3965 } 3966 3967 static void visit_type_NetdevHubPortOptions_fields(Visitor *m, NetdevHubPortOptions ** obj, Error **errp) 3968 { 3969 Error *err = NULL; 3970 visit_type_int32(m, obj ? &(*obj)->hubid : NULL, "hubid", &err); 3971 3972 error_propagate(errp, err); 3973 } 3974 3975 void visit_type_NetdevHubPortOptions(Visitor *m, NetdevHubPortOptions ** obj, const char *name, Error **errp) 3976 { 3977 if (!error_is_set(errp)) { 3978 Error *err = NULL; 3979 visit_start_struct(m, (void **)obj, "NetdevHubPortOptions", name, sizeof(NetdevHubPortOptions), &err); 3980 if (!err) { 3981 if (!obj || *obj) { 3982 visit_type_NetdevHubPortOptions_fields(m, obj, &err); 3983 error_propagate(errp, err); 3984 err = NULL; 3985 } 3986 /* Always call end_struct if start_struct succeeded. */ 3987 visit_end_struct(m, &err); 3988 } 3989 error_propagate(errp, err); 3990 } 3991 } 3992 3993 void visit_type_NetdevHubPortOptionsList(Visitor *m, NetdevHubPortOptionsList ** obj, const char *name, Error **errp) 3994 { 3995 GenericList *i, **prev = (GenericList **)obj; 3996 Error *err = NULL; 3997 3998 if (!error_is_set(errp)) { 3999 visit_start_list(m, name, &err); 4000 if (!err) { 4001 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4002 NetdevHubPortOptionsList *native_i = (NetdevHubPortOptionsList *)i; 4003 visit_type_NetdevHubPortOptions(m, &native_i->value, NULL, &err); 4004 } 4005 error_propagate(errp, err); 4006 err = NULL; 4007 4008 /* Always call end_list if start_list succeeded. */ 4009 visit_end_list(m, &err); 4010 } 4011 error_propagate(errp, err); 4012 } 4013 } 4014 4015 static void visit_type_NetdevNetmapOptions_fields(Visitor *m, NetdevNetmapOptions ** obj, Error **errp) 4016 { 4017 Error *err = NULL; 4018 visit_type_str(m, obj ? &(*obj)->ifname : NULL, "ifname", &err); 4019 visit_start_optional(m, obj ? &(*obj)->has_devname : NULL, "devname", &err); 4020 if (obj && (*obj)->has_devname) { 4021 visit_type_str(m, obj ? &(*obj)->devname : NULL, "devname", &err); 4022 } 4023 visit_end_optional(m, &err); 4024 4025 error_propagate(errp, err); 4026 } 4027 4028 void visit_type_NetdevNetmapOptions(Visitor *m, NetdevNetmapOptions ** obj, const char *name, Error **errp) 4029 { 4030 if (!error_is_set(errp)) { 4031 Error *err = NULL; 4032 visit_start_struct(m, (void **)obj, "NetdevNetmapOptions", name, sizeof(NetdevNetmapOptions), &err); 4033 if (!err) { 4034 if (!obj || *obj) { 4035 visit_type_NetdevNetmapOptions_fields(m, obj, &err); 4036 error_propagate(errp, err); 4037 err = NULL; 4038 } 4039 /* Always call end_struct if start_struct succeeded. */ 4040 visit_end_struct(m, &err); 4041 } 4042 error_propagate(errp, err); 4043 } 4044 } 4045 4046 void visit_type_NetdevNetmapOptionsList(Visitor *m, NetdevNetmapOptionsList ** obj, const char *name, Error **errp) 4047 { 4048 GenericList *i, **prev = (GenericList **)obj; 4049 Error *err = NULL; 4050 4051 if (!error_is_set(errp)) { 4052 visit_start_list(m, name, &err); 4053 if (!err) { 4054 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4055 NetdevNetmapOptionsList *native_i = (NetdevNetmapOptionsList *)i; 4056 visit_type_NetdevNetmapOptions(m, &native_i->value, NULL, &err); 4057 } 4058 error_propagate(errp, err); 4059 err = NULL; 4060 4061 /* Always call end_list if start_list succeeded. */ 4062 visit_end_list(m, &err); 4063 } 4064 error_propagate(errp, err); 4065 } 4066 } 4067 4068 void visit_type_NetClientOptionsKind(Visitor *m, NetClientOptionsKind * obj, const char *name, Error **errp) 4069 { 4070 visit_type_enum(m, (int *)obj, NetClientOptionsKind_lookup, "NetClientOptionsKind", name, errp); 4071 } 4072 4073 void visit_type_NetClientOptions(Visitor *m, NetClientOptions ** obj, const char *name, Error **errp) 4074 { 4075 Error *err = NULL; 4076 4077 if (!error_is_set(errp)) { 4078 visit_start_struct(m, (void **)obj, "NetClientOptions", name, sizeof(NetClientOptions), &err); 4079 if (!err) { 4080 if (obj && *obj) { 4081 visit_type_NetClientOptionsKind(m, &(*obj)->kind, "type", &err); 4082 if (!err) { 4083 switch ((*obj)->kind) { 4084 case NET_CLIENT_OPTIONS_KIND_NONE: 4085 visit_type_NetdevNoneOptions(m, &(*obj)->none, "data", &err); 4086 break; 4087 case NET_CLIENT_OPTIONS_KIND_NIC: 4088 visit_type_NetLegacyNicOptions(m, &(*obj)->nic, "data", &err); 4089 break; 4090 case NET_CLIENT_OPTIONS_KIND_USER: 4091 visit_type_NetdevUserOptions(m, &(*obj)->user, "data", &err); 4092 break; 4093 case NET_CLIENT_OPTIONS_KIND_TAP: 4094 visit_type_NetdevTapOptions(m, &(*obj)->tap, "data", &err); 4095 break; 4096 case NET_CLIENT_OPTIONS_KIND_SOCKET: 4097 visit_type_NetdevSocketOptions(m, &(*obj)->socket, "data", &err); 4098 break; 4099 case NET_CLIENT_OPTIONS_KIND_VDE: 4100 visit_type_NetdevVdeOptions(m, &(*obj)->vde, "data", &err); 4101 break; 4102 case NET_CLIENT_OPTIONS_KIND_DUMP: 4103 visit_type_NetdevDumpOptions(m, &(*obj)->dump, "data", &err); 4104 break; 4105 case NET_CLIENT_OPTIONS_KIND_BRIDGE: 4106 visit_type_NetdevBridgeOptions(m, &(*obj)->bridge, "data", &err); 4107 break; 4108 case NET_CLIENT_OPTIONS_KIND_HUBPORT: 4109 visit_type_NetdevHubPortOptions(m, &(*obj)->hubport, "data", &err); 4110 break; 4111 case NET_CLIENT_OPTIONS_KIND_NETMAP: 4112 visit_type_NetdevNetmapOptions(m, &(*obj)->netmap, "data", &err); 4113 break; 4114 default: 4115 abort(); 4116 } 4117 } 4118 error_propagate(errp, err); 4119 err = NULL; 4120 } 4121 /* Always call end_struct if start_struct succeeded. */ 4122 visit_end_struct(m, &err); 4123 } 4124 error_propagate(errp, err); 4125 } 4126 } 4127 4128 void visit_type_NetClientOptionsList(Visitor *m, NetClientOptionsList ** obj, const char *name, Error **errp) 4129 { 4130 GenericList *i, **prev = (GenericList **)obj; 4131 Error *err = NULL; 4132 4133 if (!error_is_set(errp)) { 4134 visit_start_list(m, name, &err); 4135 if (!err) { 4136 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4137 NetClientOptionsList *native_i = (NetClientOptionsList *)i; 4138 visit_type_NetClientOptions(m, &native_i->value, NULL, &err); 4139 } 4140 error_propagate(errp, err); 4141 err = NULL; 4142 4143 /* Always call end_list if start_list succeeded. */ 4144 visit_end_list(m, &err); 4145 } 4146 error_propagate(errp, err); 4147 } 4148 } 4149 4150 static void visit_type_NetLegacy_fields(Visitor *m, NetLegacy ** obj, Error **errp) 4151 { 4152 Error *err = NULL; 4153 visit_start_optional(m, obj ? &(*obj)->has_vlan : NULL, "vlan", &err); 4154 if (obj && (*obj)->has_vlan) { 4155 visit_type_int32(m, obj ? &(*obj)->vlan : NULL, "vlan", &err); 4156 } 4157 visit_end_optional(m, &err); 4158 visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err); 4159 if (obj && (*obj)->has_id) { 4160 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 4161 } 4162 visit_end_optional(m, &err); 4163 visit_start_optional(m, obj ? &(*obj)->has_name : NULL, "name", &err); 4164 if (obj && (*obj)->has_name) { 4165 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 4166 } 4167 visit_end_optional(m, &err); 4168 visit_type_NetClientOptions(m, obj ? &(*obj)->opts : NULL, "opts", &err); 4169 4170 error_propagate(errp, err); 4171 } 4172 4173 void visit_type_NetLegacy(Visitor *m, NetLegacy ** obj, const char *name, Error **errp) 4174 { 4175 if (!error_is_set(errp)) { 4176 Error *err = NULL; 4177 visit_start_struct(m, (void **)obj, "NetLegacy", name, sizeof(NetLegacy), &err); 4178 if (!err) { 4179 if (!obj || *obj) { 4180 visit_type_NetLegacy_fields(m, obj, &err); 4181 error_propagate(errp, err); 4182 err = NULL; 4183 } 4184 /* Always call end_struct if start_struct succeeded. */ 4185 visit_end_struct(m, &err); 4186 } 4187 error_propagate(errp, err); 4188 } 4189 } 4190 4191 void visit_type_NetLegacyList(Visitor *m, NetLegacyList ** obj, const char *name, Error **errp) 4192 { 4193 GenericList *i, **prev = (GenericList **)obj; 4194 Error *err = NULL; 4195 4196 if (!error_is_set(errp)) { 4197 visit_start_list(m, name, &err); 4198 if (!err) { 4199 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4200 NetLegacyList *native_i = (NetLegacyList *)i; 4201 visit_type_NetLegacy(m, &native_i->value, NULL, &err); 4202 } 4203 error_propagate(errp, err); 4204 err = NULL; 4205 4206 /* Always call end_list if start_list succeeded. */ 4207 visit_end_list(m, &err); 4208 } 4209 error_propagate(errp, err); 4210 } 4211 } 4212 4213 static void visit_type_Netdev_fields(Visitor *m, Netdev ** obj, Error **errp) 4214 { 4215 Error *err = NULL; 4216 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 4217 visit_type_NetClientOptions(m, obj ? &(*obj)->opts : NULL, "opts", &err); 4218 4219 error_propagate(errp, err); 4220 } 4221 4222 void visit_type_Netdev(Visitor *m, Netdev ** obj, const char *name, Error **errp) 4223 { 4224 if (!error_is_set(errp)) { 4225 Error *err = NULL; 4226 visit_start_struct(m, (void **)obj, "Netdev", name, sizeof(Netdev), &err); 4227 if (!err) { 4228 if (!obj || *obj) { 4229 visit_type_Netdev_fields(m, obj, &err); 4230 error_propagate(errp, err); 4231 err = NULL; 4232 } 4233 /* Always call end_struct if start_struct succeeded. */ 4234 visit_end_struct(m, &err); 4235 } 4236 error_propagate(errp, err); 4237 } 4238 } 4239 4240 void visit_type_NetdevList(Visitor *m, NetdevList ** obj, const char *name, Error **errp) 4241 { 4242 GenericList *i, **prev = (GenericList **)obj; 4243 Error *err = NULL; 4244 4245 if (!error_is_set(errp)) { 4246 visit_start_list(m, name, &err); 4247 if (!err) { 4248 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4249 NetdevList *native_i = (NetdevList *)i; 4250 visit_type_Netdev(m, &native_i->value, NULL, &err); 4251 } 4252 error_propagate(errp, err); 4253 err = NULL; 4254 4255 /* Always call end_list if start_list succeeded. */ 4256 visit_end_list(m, &err); 4257 } 4258 error_propagate(errp, err); 4259 } 4260 } 4261 4262 static void visit_type_InetSocketAddress_fields(Visitor *m, InetSocketAddress ** obj, Error **errp) 4263 { 4264 Error *err = NULL; 4265 visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err); 4266 visit_type_str(m, obj ? &(*obj)->port : NULL, "port", &err); 4267 visit_start_optional(m, obj ? &(*obj)->has_to : NULL, "to", &err); 4268 if (obj && (*obj)->has_to) { 4269 visit_type_uint16(m, obj ? &(*obj)->to : NULL, "to", &err); 4270 } 4271 visit_end_optional(m, &err); 4272 visit_start_optional(m, obj ? &(*obj)->has_ipv4 : NULL, "ipv4", &err); 4273 if (obj && (*obj)->has_ipv4) { 4274 visit_type_bool(m, obj ? &(*obj)->ipv4 : NULL, "ipv4", &err); 4275 } 4276 visit_end_optional(m, &err); 4277 visit_start_optional(m, obj ? &(*obj)->has_ipv6 : NULL, "ipv6", &err); 4278 if (obj && (*obj)->has_ipv6) { 4279 visit_type_bool(m, obj ? &(*obj)->ipv6 : NULL, "ipv6", &err); 4280 } 4281 visit_end_optional(m, &err); 4282 4283 error_propagate(errp, err); 4284 } 4285 4286 void visit_type_InetSocketAddress(Visitor *m, InetSocketAddress ** obj, const char *name, Error **errp) 4287 { 4288 if (!error_is_set(errp)) { 4289 Error *err = NULL; 4290 visit_start_struct(m, (void **)obj, "InetSocketAddress", name, sizeof(InetSocketAddress), &err); 4291 if (!err) { 4292 if (!obj || *obj) { 4293 visit_type_InetSocketAddress_fields(m, obj, &err); 4294 error_propagate(errp, err); 4295 err = NULL; 4296 } 4297 /* Always call end_struct if start_struct succeeded. */ 4298 visit_end_struct(m, &err); 4299 } 4300 error_propagate(errp, err); 4301 } 4302 } 4303 4304 void visit_type_InetSocketAddressList(Visitor *m, InetSocketAddressList ** obj, const char *name, Error **errp) 4305 { 4306 GenericList *i, **prev = (GenericList **)obj; 4307 Error *err = NULL; 4308 4309 if (!error_is_set(errp)) { 4310 visit_start_list(m, name, &err); 4311 if (!err) { 4312 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4313 InetSocketAddressList *native_i = (InetSocketAddressList *)i; 4314 visit_type_InetSocketAddress(m, &native_i->value, NULL, &err); 4315 } 4316 error_propagate(errp, err); 4317 err = NULL; 4318 4319 /* Always call end_list if start_list succeeded. */ 4320 visit_end_list(m, &err); 4321 } 4322 error_propagate(errp, err); 4323 } 4324 } 4325 4326 static void visit_type_UnixSocketAddress_fields(Visitor *m, UnixSocketAddress ** obj, Error **errp) 4327 { 4328 Error *err = NULL; 4329 visit_type_str(m, obj ? &(*obj)->path : NULL, "path", &err); 4330 4331 error_propagate(errp, err); 4332 } 4333 4334 void visit_type_UnixSocketAddress(Visitor *m, UnixSocketAddress ** obj, const char *name, Error **errp) 4335 { 4336 if (!error_is_set(errp)) { 4337 Error *err = NULL; 4338 visit_start_struct(m, (void **)obj, "UnixSocketAddress", name, sizeof(UnixSocketAddress), &err); 4339 if (!err) { 4340 if (!obj || *obj) { 4341 visit_type_UnixSocketAddress_fields(m, obj, &err); 4342 error_propagate(errp, err); 4343 err = NULL; 4344 } 4345 /* Always call end_struct if start_struct succeeded. */ 4346 visit_end_struct(m, &err); 4347 } 4348 error_propagate(errp, err); 4349 } 4350 } 4351 4352 void visit_type_UnixSocketAddressList(Visitor *m, UnixSocketAddressList ** obj, const char *name, Error **errp) 4353 { 4354 GenericList *i, **prev = (GenericList **)obj; 4355 Error *err = NULL; 4356 4357 if (!error_is_set(errp)) { 4358 visit_start_list(m, name, &err); 4359 if (!err) { 4360 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4361 UnixSocketAddressList *native_i = (UnixSocketAddressList *)i; 4362 visit_type_UnixSocketAddress(m, &native_i->value, NULL, &err); 4363 } 4364 error_propagate(errp, err); 4365 err = NULL; 4366 4367 /* Always call end_list if start_list succeeded. */ 4368 visit_end_list(m, &err); 4369 } 4370 error_propagate(errp, err); 4371 } 4372 } 4373 4374 void visit_type_SocketAddressKind(Visitor *m, SocketAddressKind * obj, const char *name, Error **errp) 4375 { 4376 visit_type_enum(m, (int *)obj, SocketAddressKind_lookup, "SocketAddressKind", name, errp); 4377 } 4378 4379 void visit_type_SocketAddress(Visitor *m, SocketAddress ** obj, const char *name, Error **errp) 4380 { 4381 Error *err = NULL; 4382 4383 if (!error_is_set(errp)) { 4384 visit_start_struct(m, (void **)obj, "SocketAddress", name, sizeof(SocketAddress), &err); 4385 if (!err) { 4386 if (obj && *obj) { 4387 visit_type_SocketAddressKind(m, &(*obj)->kind, "type", &err); 4388 if (!err) { 4389 switch ((*obj)->kind) { 4390 case SOCKET_ADDRESS_KIND_INET: 4391 visit_type_InetSocketAddress(m, &(*obj)->inet, "data", &err); 4392 break; 4393 case SOCKET_ADDRESS_KIND_UNIX: 4394 visit_type_UnixSocketAddress(m, &(*obj)->q_unix, "data", &err); 4395 break; 4396 case SOCKET_ADDRESS_KIND_FD: 4397 visit_type_String(m, &(*obj)->fd, "data", &err); 4398 break; 4399 default: 4400 abort(); 4401 } 4402 } 4403 error_propagate(errp, err); 4404 err = NULL; 4405 } 4406 /* Always call end_struct if start_struct succeeded. */ 4407 visit_end_struct(m, &err); 4408 } 4409 error_propagate(errp, err); 4410 } 4411 } 4412 4413 void visit_type_SocketAddressList(Visitor *m, SocketAddressList ** obj, const char *name, Error **errp) 4414 { 4415 GenericList *i, **prev = (GenericList **)obj; 4416 Error *err = NULL; 4417 4418 if (!error_is_set(errp)) { 4419 visit_start_list(m, name, &err); 4420 if (!err) { 4421 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4422 SocketAddressList *native_i = (SocketAddressList *)i; 4423 visit_type_SocketAddress(m, &native_i->value, NULL, &err); 4424 } 4425 error_propagate(errp, err); 4426 err = NULL; 4427 4428 /* Always call end_list if start_list succeeded. */ 4429 visit_end_list(m, &err); 4430 } 4431 error_propagate(errp, err); 4432 } 4433 } 4434 4435 static void visit_type_MachineInfo_fields(Visitor *m, MachineInfo ** obj, Error **errp) 4436 { 4437 Error *err = NULL; 4438 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 4439 visit_start_optional(m, obj ? &(*obj)->has_alias : NULL, "alias", &err); 4440 if (obj && (*obj)->has_alias) { 4441 visit_type_str(m, obj ? &(*obj)->alias : NULL, "alias", &err); 4442 } 4443 visit_end_optional(m, &err); 4444 visit_start_optional(m, obj ? &(*obj)->has_is_default : NULL, "is-default", &err); 4445 if (obj && (*obj)->has_is_default) { 4446 visit_type_bool(m, obj ? &(*obj)->is_default : NULL, "is-default", &err); 4447 } 4448 visit_end_optional(m, &err); 4449 visit_type_int(m, obj ? &(*obj)->cpu_max : NULL, "cpu-max", &err); 4450 4451 error_propagate(errp, err); 4452 } 4453 4454 void visit_type_MachineInfo(Visitor *m, MachineInfo ** obj, const char *name, Error **errp) 4455 { 4456 if (!error_is_set(errp)) { 4457 Error *err = NULL; 4458 visit_start_struct(m, (void **)obj, "MachineInfo", name, sizeof(MachineInfo), &err); 4459 if (!err) { 4460 if (!obj || *obj) { 4461 visit_type_MachineInfo_fields(m, obj, &err); 4462 error_propagate(errp, err); 4463 err = NULL; 4464 } 4465 /* Always call end_struct if start_struct succeeded. */ 4466 visit_end_struct(m, &err); 4467 } 4468 error_propagate(errp, err); 4469 } 4470 } 4471 4472 void visit_type_MachineInfoList(Visitor *m, MachineInfoList ** obj, const char *name, Error **errp) 4473 { 4474 GenericList *i, **prev = (GenericList **)obj; 4475 Error *err = NULL; 4476 4477 if (!error_is_set(errp)) { 4478 visit_start_list(m, name, &err); 4479 if (!err) { 4480 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4481 MachineInfoList *native_i = (MachineInfoList *)i; 4482 visit_type_MachineInfo(m, &native_i->value, NULL, &err); 4483 } 4484 error_propagate(errp, err); 4485 err = NULL; 4486 4487 /* Always call end_list if start_list succeeded. */ 4488 visit_end_list(m, &err); 4489 } 4490 error_propagate(errp, err); 4491 } 4492 } 4493 4494 static void visit_type_CpuDefinitionInfo_fields(Visitor *m, CpuDefinitionInfo ** obj, Error **errp) 4495 { 4496 Error *err = NULL; 4497 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 4498 4499 error_propagate(errp, err); 4500 } 4501 4502 void visit_type_CpuDefinitionInfo(Visitor *m, CpuDefinitionInfo ** obj, const char *name, Error **errp) 4503 { 4504 if (!error_is_set(errp)) { 4505 Error *err = NULL; 4506 visit_start_struct(m, (void **)obj, "CpuDefinitionInfo", name, sizeof(CpuDefinitionInfo), &err); 4507 if (!err) { 4508 if (!obj || *obj) { 4509 visit_type_CpuDefinitionInfo_fields(m, obj, &err); 4510 error_propagate(errp, err); 4511 err = NULL; 4512 } 4513 /* Always call end_struct if start_struct succeeded. */ 4514 visit_end_struct(m, &err); 4515 } 4516 error_propagate(errp, err); 4517 } 4518 } 4519 4520 void visit_type_CpuDefinitionInfoList(Visitor *m, CpuDefinitionInfoList ** obj, const char *name, Error **errp) 4521 { 4522 GenericList *i, **prev = (GenericList **)obj; 4523 Error *err = NULL; 4524 4525 if (!error_is_set(errp)) { 4526 visit_start_list(m, name, &err); 4527 if (!err) { 4528 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4529 CpuDefinitionInfoList *native_i = (CpuDefinitionInfoList *)i; 4530 visit_type_CpuDefinitionInfo(m, &native_i->value, NULL, &err); 4531 } 4532 error_propagate(errp, err); 4533 err = NULL; 4534 4535 /* Always call end_list if start_list succeeded. */ 4536 visit_end_list(m, &err); 4537 } 4538 error_propagate(errp, err); 4539 } 4540 } 4541 4542 static void visit_type_AddfdInfo_fields(Visitor *m, AddfdInfo ** obj, Error **errp) 4543 { 4544 Error *err = NULL; 4545 visit_type_int(m, obj ? &(*obj)->fdset_id : NULL, "fdset-id", &err); 4546 visit_type_int(m, obj ? &(*obj)->fd : NULL, "fd", &err); 4547 4548 error_propagate(errp, err); 4549 } 4550 4551 void visit_type_AddfdInfo(Visitor *m, AddfdInfo ** obj, const char *name, Error **errp) 4552 { 4553 if (!error_is_set(errp)) { 4554 Error *err = NULL; 4555 visit_start_struct(m, (void **)obj, "AddfdInfo", name, sizeof(AddfdInfo), &err); 4556 if (!err) { 4557 if (!obj || *obj) { 4558 visit_type_AddfdInfo_fields(m, obj, &err); 4559 error_propagate(errp, err); 4560 err = NULL; 4561 } 4562 /* Always call end_struct if start_struct succeeded. */ 4563 visit_end_struct(m, &err); 4564 } 4565 error_propagate(errp, err); 4566 } 4567 } 4568 4569 void visit_type_AddfdInfoList(Visitor *m, AddfdInfoList ** obj, const char *name, Error **errp) 4570 { 4571 GenericList *i, **prev = (GenericList **)obj; 4572 Error *err = NULL; 4573 4574 if (!error_is_set(errp)) { 4575 visit_start_list(m, name, &err); 4576 if (!err) { 4577 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4578 AddfdInfoList *native_i = (AddfdInfoList *)i; 4579 visit_type_AddfdInfo(m, &native_i->value, NULL, &err); 4580 } 4581 error_propagate(errp, err); 4582 err = NULL; 4583 4584 /* Always call end_list if start_list succeeded. */ 4585 visit_end_list(m, &err); 4586 } 4587 error_propagate(errp, err); 4588 } 4589 } 4590 4591 static void visit_type_FdsetFdInfo_fields(Visitor *m, FdsetFdInfo ** obj, Error **errp) 4592 { 4593 Error *err = NULL; 4594 visit_type_int(m, obj ? &(*obj)->fd : NULL, "fd", &err); 4595 visit_start_optional(m, obj ? &(*obj)->has_opaque : NULL, "opaque", &err); 4596 if (obj && (*obj)->has_opaque) { 4597 visit_type_str(m, obj ? &(*obj)->opaque : NULL, "opaque", &err); 4598 } 4599 visit_end_optional(m, &err); 4600 4601 error_propagate(errp, err); 4602 } 4603 4604 void visit_type_FdsetFdInfo(Visitor *m, FdsetFdInfo ** obj, const char *name, Error **errp) 4605 { 4606 if (!error_is_set(errp)) { 4607 Error *err = NULL; 4608 visit_start_struct(m, (void **)obj, "FdsetFdInfo", name, sizeof(FdsetFdInfo), &err); 4609 if (!err) { 4610 if (!obj || *obj) { 4611 visit_type_FdsetFdInfo_fields(m, obj, &err); 4612 error_propagate(errp, err); 4613 err = NULL; 4614 } 4615 /* Always call end_struct if start_struct succeeded. */ 4616 visit_end_struct(m, &err); 4617 } 4618 error_propagate(errp, err); 4619 } 4620 } 4621 4622 void visit_type_FdsetFdInfoList(Visitor *m, FdsetFdInfoList ** obj, const char *name, Error **errp) 4623 { 4624 GenericList *i, **prev = (GenericList **)obj; 4625 Error *err = NULL; 4626 4627 if (!error_is_set(errp)) { 4628 visit_start_list(m, name, &err); 4629 if (!err) { 4630 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4631 FdsetFdInfoList *native_i = (FdsetFdInfoList *)i; 4632 visit_type_FdsetFdInfo(m, &native_i->value, NULL, &err); 4633 } 4634 error_propagate(errp, err); 4635 err = NULL; 4636 4637 /* Always call end_list if start_list succeeded. */ 4638 visit_end_list(m, &err); 4639 } 4640 error_propagate(errp, err); 4641 } 4642 } 4643 4644 static void visit_type_FdsetInfo_fields(Visitor *m, FdsetInfo ** obj, Error **errp) 4645 { 4646 Error *err = NULL; 4647 visit_type_int(m, obj ? &(*obj)->fdset_id : NULL, "fdset-id", &err); 4648 visit_type_FdsetFdInfoList(m, obj ? &(*obj)->fds : NULL, "fds", &err); 4649 4650 error_propagate(errp, err); 4651 } 4652 4653 void visit_type_FdsetInfo(Visitor *m, FdsetInfo ** obj, const char *name, Error **errp) 4654 { 4655 if (!error_is_set(errp)) { 4656 Error *err = NULL; 4657 visit_start_struct(m, (void **)obj, "FdsetInfo", name, sizeof(FdsetInfo), &err); 4658 if (!err) { 4659 if (!obj || *obj) { 4660 visit_type_FdsetInfo_fields(m, obj, &err); 4661 error_propagate(errp, err); 4662 err = NULL; 4663 } 4664 /* Always call end_struct if start_struct succeeded. */ 4665 visit_end_struct(m, &err); 4666 } 4667 error_propagate(errp, err); 4668 } 4669 } 4670 4671 void visit_type_FdsetInfoList(Visitor *m, FdsetInfoList ** obj, const char *name, Error **errp) 4672 { 4673 GenericList *i, **prev = (GenericList **)obj; 4674 Error *err = NULL; 4675 4676 if (!error_is_set(errp)) { 4677 visit_start_list(m, name, &err); 4678 if (!err) { 4679 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4680 FdsetInfoList *native_i = (FdsetInfoList *)i; 4681 visit_type_FdsetInfo(m, &native_i->value, NULL, &err); 4682 } 4683 error_propagate(errp, err); 4684 err = NULL; 4685 4686 /* Always call end_list if start_list succeeded. */ 4687 visit_end_list(m, &err); 4688 } 4689 error_propagate(errp, err); 4690 } 4691 } 4692 4693 static void visit_type_TargetInfo_fields(Visitor *m, TargetInfo ** obj, Error **errp) 4694 { 4695 Error *err = NULL; 4696 visit_type_str(m, obj ? &(*obj)->arch : NULL, "arch", &err); 4697 4698 error_propagate(errp, err); 4699 } 4700 4701 void visit_type_TargetInfo(Visitor *m, TargetInfo ** obj, const char *name, Error **errp) 4702 { 4703 if (!error_is_set(errp)) { 4704 Error *err = NULL; 4705 visit_start_struct(m, (void **)obj, "TargetInfo", name, sizeof(TargetInfo), &err); 4706 if (!err) { 4707 if (!obj || *obj) { 4708 visit_type_TargetInfo_fields(m, obj, &err); 4709 error_propagate(errp, err); 4710 err = NULL; 4711 } 4712 /* Always call end_struct if start_struct succeeded. */ 4713 visit_end_struct(m, &err); 4714 } 4715 error_propagate(errp, err); 4716 } 4717 } 4718 4719 void visit_type_TargetInfoList(Visitor *m, TargetInfoList ** obj, const char *name, Error **errp) 4720 { 4721 GenericList *i, **prev = (GenericList **)obj; 4722 Error *err = NULL; 4723 4724 if (!error_is_set(errp)) { 4725 visit_start_list(m, name, &err); 4726 if (!err) { 4727 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4728 TargetInfoList *native_i = (TargetInfoList *)i; 4729 visit_type_TargetInfo(m, &native_i->value, NULL, &err); 4730 } 4731 error_propagate(errp, err); 4732 err = NULL; 4733 4734 /* Always call end_list if start_list succeeded. */ 4735 visit_end_list(m, &err); 4736 } 4737 error_propagate(errp, err); 4738 } 4739 } 4740 4741 void visit_type_QKeyCodeList(Visitor *m, QKeyCodeList ** obj, const char *name, Error **errp) 4742 { 4743 GenericList *i, **prev = (GenericList **)obj; 4744 Error *err = NULL; 4745 4746 if (!error_is_set(errp)) { 4747 visit_start_list(m, name, &err); 4748 if (!err) { 4749 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4750 QKeyCodeList *native_i = (QKeyCodeList *)i; 4751 visit_type_QKeyCode(m, &native_i->value, NULL, &err); 4752 } 4753 error_propagate(errp, err); 4754 err = NULL; 4755 4756 /* Always call end_list if start_list succeeded. */ 4757 visit_end_list(m, &err); 4758 } 4759 error_propagate(errp, err); 4760 } 4761 } 4762 4763 void visit_type_QKeyCode(Visitor *m, QKeyCode * obj, const char *name, Error **errp) 4764 { 4765 visit_type_enum(m, (int *)obj, QKeyCode_lookup, "QKeyCode", name, errp); 4766 } 4767 4768 void visit_type_KeyValueKind(Visitor *m, KeyValueKind * obj, const char *name, Error **errp) 4769 { 4770 visit_type_enum(m, (int *)obj, KeyValueKind_lookup, "KeyValueKind", name, errp); 4771 } 4772 4773 void visit_type_KeyValue(Visitor *m, KeyValue ** obj, const char *name, Error **errp) 4774 { 4775 Error *err = NULL; 4776 4777 if (!error_is_set(errp)) { 4778 visit_start_struct(m, (void **)obj, "KeyValue", name, sizeof(KeyValue), &err); 4779 if (!err) { 4780 if (obj && *obj) { 4781 visit_type_KeyValueKind(m, &(*obj)->kind, "type", &err); 4782 if (!err) { 4783 switch ((*obj)->kind) { 4784 case KEY_VALUE_KIND_NUMBER: 4785 visit_type_int(m, &(*obj)->number, "data", &err); 4786 break; 4787 case KEY_VALUE_KIND_QCODE: 4788 visit_type_QKeyCode(m, &(*obj)->qcode, "data", &err); 4789 break; 4790 default: 4791 abort(); 4792 } 4793 } 4794 error_propagate(errp, err); 4795 err = NULL; 4796 } 4797 /* Always call end_struct if start_struct succeeded. */ 4798 visit_end_struct(m, &err); 4799 } 4800 error_propagate(errp, err); 4801 } 4802 } 4803 4804 void visit_type_KeyValueList(Visitor *m, KeyValueList ** obj, const char *name, Error **errp) 4805 { 4806 GenericList *i, **prev = (GenericList **)obj; 4807 Error *err = NULL; 4808 4809 if (!error_is_set(errp)) { 4810 visit_start_list(m, name, &err); 4811 if (!err) { 4812 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4813 KeyValueList *native_i = (KeyValueList *)i; 4814 visit_type_KeyValue(m, &native_i->value, NULL, &err); 4815 } 4816 error_propagate(errp, err); 4817 err = NULL; 4818 4819 /* Always call end_list if start_list succeeded. */ 4820 visit_end_list(m, &err); 4821 } 4822 error_propagate(errp, err); 4823 } 4824 } 4825 4826 static void visit_type_ChardevFile_fields(Visitor *m, ChardevFile ** obj, Error **errp) 4827 { 4828 Error *err = NULL; 4829 visit_start_optional(m, obj ? &(*obj)->has_in : NULL, "in", &err); 4830 if (obj && (*obj)->has_in) { 4831 visit_type_str(m, obj ? &(*obj)->in : NULL, "in", &err); 4832 } 4833 visit_end_optional(m, &err); 4834 visit_type_str(m, obj ? &(*obj)->out : NULL, "out", &err); 4835 4836 error_propagate(errp, err); 4837 } 4838 4839 void visit_type_ChardevFile(Visitor *m, ChardevFile ** obj, const char *name, Error **errp) 4840 { 4841 if (!error_is_set(errp)) { 4842 Error *err = NULL; 4843 visit_start_struct(m, (void **)obj, "ChardevFile", name, sizeof(ChardevFile), &err); 4844 if (!err) { 4845 if (!obj || *obj) { 4846 visit_type_ChardevFile_fields(m, obj, &err); 4847 error_propagate(errp, err); 4848 err = NULL; 4849 } 4850 /* Always call end_struct if start_struct succeeded. */ 4851 visit_end_struct(m, &err); 4852 } 4853 error_propagate(errp, err); 4854 } 4855 } 4856 4857 void visit_type_ChardevFileList(Visitor *m, ChardevFileList ** obj, const char *name, Error **errp) 4858 { 4859 GenericList *i, **prev = (GenericList **)obj; 4860 Error *err = NULL; 4861 4862 if (!error_is_set(errp)) { 4863 visit_start_list(m, name, &err); 4864 if (!err) { 4865 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4866 ChardevFileList *native_i = (ChardevFileList *)i; 4867 visit_type_ChardevFile(m, &native_i->value, NULL, &err); 4868 } 4869 error_propagate(errp, err); 4870 err = NULL; 4871 4872 /* Always call end_list if start_list succeeded. */ 4873 visit_end_list(m, &err); 4874 } 4875 error_propagate(errp, err); 4876 } 4877 } 4878 4879 static void visit_type_ChardevHostdev_fields(Visitor *m, ChardevHostdev ** obj, Error **errp) 4880 { 4881 Error *err = NULL; 4882 visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err); 4883 4884 error_propagate(errp, err); 4885 } 4886 4887 void visit_type_ChardevHostdev(Visitor *m, ChardevHostdev ** obj, const char *name, Error **errp) 4888 { 4889 if (!error_is_set(errp)) { 4890 Error *err = NULL; 4891 visit_start_struct(m, (void **)obj, "ChardevHostdev", name, sizeof(ChardevHostdev), &err); 4892 if (!err) { 4893 if (!obj || *obj) { 4894 visit_type_ChardevHostdev_fields(m, obj, &err); 4895 error_propagate(errp, err); 4896 err = NULL; 4897 } 4898 /* Always call end_struct if start_struct succeeded. */ 4899 visit_end_struct(m, &err); 4900 } 4901 error_propagate(errp, err); 4902 } 4903 } 4904 4905 void visit_type_ChardevHostdevList(Visitor *m, ChardevHostdevList ** obj, const char *name, Error **errp) 4906 { 4907 GenericList *i, **prev = (GenericList **)obj; 4908 Error *err = NULL; 4909 4910 if (!error_is_set(errp)) { 4911 visit_start_list(m, name, &err); 4912 if (!err) { 4913 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4914 ChardevHostdevList *native_i = (ChardevHostdevList *)i; 4915 visit_type_ChardevHostdev(m, &native_i->value, NULL, &err); 4916 } 4917 error_propagate(errp, err); 4918 err = NULL; 4919 4920 /* Always call end_list if start_list succeeded. */ 4921 visit_end_list(m, &err); 4922 } 4923 error_propagate(errp, err); 4924 } 4925 } 4926 4927 static void visit_type_ChardevSocket_fields(Visitor *m, ChardevSocket ** obj, Error **errp) 4928 { 4929 Error *err = NULL; 4930 visit_type_SocketAddress(m, obj ? &(*obj)->addr : NULL, "addr", &err); 4931 visit_start_optional(m, obj ? &(*obj)->has_server : NULL, "server", &err); 4932 if (obj && (*obj)->has_server) { 4933 visit_type_bool(m, obj ? &(*obj)->server : NULL, "server", &err); 4934 } 4935 visit_end_optional(m, &err); 4936 visit_start_optional(m, obj ? &(*obj)->has_wait : NULL, "wait", &err); 4937 if (obj && (*obj)->has_wait) { 4938 visit_type_bool(m, obj ? &(*obj)->wait : NULL, "wait", &err); 4939 } 4940 visit_end_optional(m, &err); 4941 visit_start_optional(m, obj ? &(*obj)->has_nodelay : NULL, "nodelay", &err); 4942 if (obj && (*obj)->has_nodelay) { 4943 visit_type_bool(m, obj ? &(*obj)->nodelay : NULL, "nodelay", &err); 4944 } 4945 visit_end_optional(m, &err); 4946 visit_start_optional(m, obj ? &(*obj)->has_telnet : NULL, "telnet", &err); 4947 if (obj && (*obj)->has_telnet) { 4948 visit_type_bool(m, obj ? &(*obj)->telnet : NULL, "telnet", &err); 4949 } 4950 visit_end_optional(m, &err); 4951 4952 error_propagate(errp, err); 4953 } 4954 4955 void visit_type_ChardevSocket(Visitor *m, ChardevSocket ** obj, const char *name, Error **errp) 4956 { 4957 if (!error_is_set(errp)) { 4958 Error *err = NULL; 4959 visit_start_struct(m, (void **)obj, "ChardevSocket", name, sizeof(ChardevSocket), &err); 4960 if (!err) { 4961 if (!obj || *obj) { 4962 visit_type_ChardevSocket_fields(m, obj, &err); 4963 error_propagate(errp, err); 4964 err = NULL; 4965 } 4966 /* Always call end_struct if start_struct succeeded. */ 4967 visit_end_struct(m, &err); 4968 } 4969 error_propagate(errp, err); 4970 } 4971 } 4972 4973 void visit_type_ChardevSocketList(Visitor *m, ChardevSocketList ** obj, const char *name, Error **errp) 4974 { 4975 GenericList *i, **prev = (GenericList **)obj; 4976 Error *err = NULL; 4977 4978 if (!error_is_set(errp)) { 4979 visit_start_list(m, name, &err); 4980 if (!err) { 4981 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 4982 ChardevSocketList *native_i = (ChardevSocketList *)i; 4983 visit_type_ChardevSocket(m, &native_i->value, NULL, &err); 4984 } 4985 error_propagate(errp, err); 4986 err = NULL; 4987 4988 /* Always call end_list if start_list succeeded. */ 4989 visit_end_list(m, &err); 4990 } 4991 error_propagate(errp, err); 4992 } 4993 } 4994 4995 static void visit_type_ChardevUdp_fields(Visitor *m, ChardevUdp ** obj, Error **errp) 4996 { 4997 Error *err = NULL; 4998 visit_type_SocketAddress(m, obj ? &(*obj)->remote : NULL, "remote", &err); 4999 visit_start_optional(m, obj ? &(*obj)->has_local : NULL, "local", &err); 5000 if (obj && (*obj)->has_local) { 5001 visit_type_SocketAddress(m, obj ? &(*obj)->local : NULL, "local", &err); 5002 } 5003 visit_end_optional(m, &err); 5004 5005 error_propagate(errp, err); 5006 } 5007 5008 void visit_type_ChardevUdp(Visitor *m, ChardevUdp ** obj, const char *name, Error **errp) 5009 { 5010 if (!error_is_set(errp)) { 5011 Error *err = NULL; 5012 visit_start_struct(m, (void **)obj, "ChardevUdp", name, sizeof(ChardevUdp), &err); 5013 if (!err) { 5014 if (!obj || *obj) { 5015 visit_type_ChardevUdp_fields(m, obj, &err); 5016 error_propagate(errp, err); 5017 err = NULL; 5018 } 5019 /* Always call end_struct if start_struct succeeded. */ 5020 visit_end_struct(m, &err); 5021 } 5022 error_propagate(errp, err); 5023 } 5024 } 5025 5026 void visit_type_ChardevUdpList(Visitor *m, ChardevUdpList ** obj, const char *name, Error **errp) 5027 { 5028 GenericList *i, **prev = (GenericList **)obj; 5029 Error *err = NULL; 5030 5031 if (!error_is_set(errp)) { 5032 visit_start_list(m, name, &err); 5033 if (!err) { 5034 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5035 ChardevUdpList *native_i = (ChardevUdpList *)i; 5036 visit_type_ChardevUdp(m, &native_i->value, NULL, &err); 5037 } 5038 error_propagate(errp, err); 5039 err = NULL; 5040 5041 /* Always call end_list if start_list succeeded. */ 5042 visit_end_list(m, &err); 5043 } 5044 error_propagate(errp, err); 5045 } 5046 } 5047 5048 static void visit_type_ChardevMux_fields(Visitor *m, ChardevMux ** obj, Error **errp) 5049 { 5050 Error *err = NULL; 5051 visit_type_str(m, obj ? &(*obj)->chardev : NULL, "chardev", &err); 5052 5053 error_propagate(errp, err); 5054 } 5055 5056 void visit_type_ChardevMux(Visitor *m, ChardevMux ** obj, const char *name, Error **errp) 5057 { 5058 if (!error_is_set(errp)) { 5059 Error *err = NULL; 5060 visit_start_struct(m, (void **)obj, "ChardevMux", name, sizeof(ChardevMux), &err); 5061 if (!err) { 5062 if (!obj || *obj) { 5063 visit_type_ChardevMux_fields(m, obj, &err); 5064 error_propagate(errp, err); 5065 err = NULL; 5066 } 5067 /* Always call end_struct if start_struct succeeded. */ 5068 visit_end_struct(m, &err); 5069 } 5070 error_propagate(errp, err); 5071 } 5072 } 5073 5074 void visit_type_ChardevMuxList(Visitor *m, ChardevMuxList ** obj, const char *name, Error **errp) 5075 { 5076 GenericList *i, **prev = (GenericList **)obj; 5077 Error *err = NULL; 5078 5079 if (!error_is_set(errp)) { 5080 visit_start_list(m, name, &err); 5081 if (!err) { 5082 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5083 ChardevMuxList *native_i = (ChardevMuxList *)i; 5084 visit_type_ChardevMux(m, &native_i->value, NULL, &err); 5085 } 5086 error_propagate(errp, err); 5087 err = NULL; 5088 5089 /* Always call end_list if start_list succeeded. */ 5090 visit_end_list(m, &err); 5091 } 5092 error_propagate(errp, err); 5093 } 5094 } 5095 5096 static void visit_type_ChardevStdio_fields(Visitor *m, ChardevStdio ** obj, Error **errp) 5097 { 5098 Error *err = NULL; 5099 visit_start_optional(m, obj ? &(*obj)->has_signal : NULL, "signal", &err); 5100 if (obj && (*obj)->has_signal) { 5101 visit_type_bool(m, obj ? &(*obj)->signal : NULL, "signal", &err); 5102 } 5103 visit_end_optional(m, &err); 5104 5105 error_propagate(errp, err); 5106 } 5107 5108 void visit_type_ChardevStdio(Visitor *m, ChardevStdio ** obj, const char *name, Error **errp) 5109 { 5110 if (!error_is_set(errp)) { 5111 Error *err = NULL; 5112 visit_start_struct(m, (void **)obj, "ChardevStdio", name, sizeof(ChardevStdio), &err); 5113 if (!err) { 5114 if (!obj || *obj) { 5115 visit_type_ChardevStdio_fields(m, obj, &err); 5116 error_propagate(errp, err); 5117 err = NULL; 5118 } 5119 /* Always call end_struct if start_struct succeeded. */ 5120 visit_end_struct(m, &err); 5121 } 5122 error_propagate(errp, err); 5123 } 5124 } 5125 5126 void visit_type_ChardevStdioList(Visitor *m, ChardevStdioList ** obj, const char *name, Error **errp) 5127 { 5128 GenericList *i, **prev = (GenericList **)obj; 5129 Error *err = NULL; 5130 5131 if (!error_is_set(errp)) { 5132 visit_start_list(m, name, &err); 5133 if (!err) { 5134 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5135 ChardevStdioList *native_i = (ChardevStdioList *)i; 5136 visit_type_ChardevStdio(m, &native_i->value, NULL, &err); 5137 } 5138 error_propagate(errp, err); 5139 err = NULL; 5140 5141 /* Always call end_list if start_list succeeded. */ 5142 visit_end_list(m, &err); 5143 } 5144 error_propagate(errp, err); 5145 } 5146 } 5147 5148 static void visit_type_ChardevSpiceChannel_fields(Visitor *m, ChardevSpiceChannel ** obj, Error **errp) 5149 { 5150 Error *err = NULL; 5151 visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err); 5152 5153 error_propagate(errp, err); 5154 } 5155 5156 void visit_type_ChardevSpiceChannel(Visitor *m, ChardevSpiceChannel ** obj, const char *name, Error **errp) 5157 { 5158 if (!error_is_set(errp)) { 5159 Error *err = NULL; 5160 visit_start_struct(m, (void **)obj, "ChardevSpiceChannel", name, sizeof(ChardevSpiceChannel), &err); 5161 if (!err) { 5162 if (!obj || *obj) { 5163 visit_type_ChardevSpiceChannel_fields(m, obj, &err); 5164 error_propagate(errp, err); 5165 err = NULL; 5166 } 5167 /* Always call end_struct if start_struct succeeded. */ 5168 visit_end_struct(m, &err); 5169 } 5170 error_propagate(errp, err); 5171 } 5172 } 5173 5174 void visit_type_ChardevSpiceChannelList(Visitor *m, ChardevSpiceChannelList ** obj, const char *name, Error **errp) 5175 { 5176 GenericList *i, **prev = (GenericList **)obj; 5177 Error *err = NULL; 5178 5179 if (!error_is_set(errp)) { 5180 visit_start_list(m, name, &err); 5181 if (!err) { 5182 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5183 ChardevSpiceChannelList *native_i = (ChardevSpiceChannelList *)i; 5184 visit_type_ChardevSpiceChannel(m, &native_i->value, NULL, &err); 5185 } 5186 error_propagate(errp, err); 5187 err = NULL; 5188 5189 /* Always call end_list if start_list succeeded. */ 5190 visit_end_list(m, &err); 5191 } 5192 error_propagate(errp, err); 5193 } 5194 } 5195 5196 static void visit_type_ChardevSpicePort_fields(Visitor *m, ChardevSpicePort ** obj, Error **errp) 5197 { 5198 Error *err = NULL; 5199 visit_type_str(m, obj ? &(*obj)->fqdn : NULL, "fqdn", &err); 5200 5201 error_propagate(errp, err); 5202 } 5203 5204 void visit_type_ChardevSpicePort(Visitor *m, ChardevSpicePort ** obj, const char *name, Error **errp) 5205 { 5206 if (!error_is_set(errp)) { 5207 Error *err = NULL; 5208 visit_start_struct(m, (void **)obj, "ChardevSpicePort", name, sizeof(ChardevSpicePort), &err); 5209 if (!err) { 5210 if (!obj || *obj) { 5211 visit_type_ChardevSpicePort_fields(m, obj, &err); 5212 error_propagate(errp, err); 5213 err = NULL; 5214 } 5215 /* Always call end_struct if start_struct succeeded. */ 5216 visit_end_struct(m, &err); 5217 } 5218 error_propagate(errp, err); 5219 } 5220 } 5221 5222 void visit_type_ChardevSpicePortList(Visitor *m, ChardevSpicePortList ** obj, const char *name, Error **errp) 5223 { 5224 GenericList *i, **prev = (GenericList **)obj; 5225 Error *err = NULL; 5226 5227 if (!error_is_set(errp)) { 5228 visit_start_list(m, name, &err); 5229 if (!err) { 5230 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5231 ChardevSpicePortList *native_i = (ChardevSpicePortList *)i; 5232 visit_type_ChardevSpicePort(m, &native_i->value, NULL, &err); 5233 } 5234 error_propagate(errp, err); 5235 err = NULL; 5236 5237 /* Always call end_list if start_list succeeded. */ 5238 visit_end_list(m, &err); 5239 } 5240 error_propagate(errp, err); 5241 } 5242 } 5243 5244 static void visit_type_ChardevVC_fields(Visitor *m, ChardevVC ** obj, Error **errp) 5245 { 5246 Error *err = NULL; 5247 visit_start_optional(m, obj ? &(*obj)->has_width : NULL, "width", &err); 5248 if (obj && (*obj)->has_width) { 5249 visit_type_int(m, obj ? &(*obj)->width : NULL, "width", &err); 5250 } 5251 visit_end_optional(m, &err); 5252 visit_start_optional(m, obj ? &(*obj)->has_height : NULL, "height", &err); 5253 if (obj && (*obj)->has_height) { 5254 visit_type_int(m, obj ? &(*obj)->height : NULL, "height", &err); 5255 } 5256 visit_end_optional(m, &err); 5257 visit_start_optional(m, obj ? &(*obj)->has_cols : NULL, "cols", &err); 5258 if (obj && (*obj)->has_cols) { 5259 visit_type_int(m, obj ? &(*obj)->cols : NULL, "cols", &err); 5260 } 5261 visit_end_optional(m, &err); 5262 visit_start_optional(m, obj ? &(*obj)->has_rows : NULL, "rows", &err); 5263 if (obj && (*obj)->has_rows) { 5264 visit_type_int(m, obj ? &(*obj)->rows : NULL, "rows", &err); 5265 } 5266 visit_end_optional(m, &err); 5267 5268 error_propagate(errp, err); 5269 } 5270 5271 void visit_type_ChardevVC(Visitor *m, ChardevVC ** obj, const char *name, Error **errp) 5272 { 5273 if (!error_is_set(errp)) { 5274 Error *err = NULL; 5275 visit_start_struct(m, (void **)obj, "ChardevVC", name, sizeof(ChardevVC), &err); 5276 if (!err) { 5277 if (!obj || *obj) { 5278 visit_type_ChardevVC_fields(m, obj, &err); 5279 error_propagate(errp, err); 5280 err = NULL; 5281 } 5282 /* Always call end_struct if start_struct succeeded. */ 5283 visit_end_struct(m, &err); 5284 } 5285 error_propagate(errp, err); 5286 } 5287 } 5288 5289 void visit_type_ChardevVCList(Visitor *m, ChardevVCList ** obj, const char *name, Error **errp) 5290 { 5291 GenericList *i, **prev = (GenericList **)obj; 5292 Error *err = NULL; 5293 5294 if (!error_is_set(errp)) { 5295 visit_start_list(m, name, &err); 5296 if (!err) { 5297 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5298 ChardevVCList *native_i = (ChardevVCList *)i; 5299 visit_type_ChardevVC(m, &native_i->value, NULL, &err); 5300 } 5301 error_propagate(errp, err); 5302 err = NULL; 5303 5304 /* Always call end_list if start_list succeeded. */ 5305 visit_end_list(m, &err); 5306 } 5307 error_propagate(errp, err); 5308 } 5309 } 5310 5311 static void visit_type_ChardevRingbuf_fields(Visitor *m, ChardevRingbuf ** obj, Error **errp) 5312 { 5313 Error *err = NULL; 5314 visit_start_optional(m, obj ? &(*obj)->has_size : NULL, "size", &err); 5315 if (obj && (*obj)->has_size) { 5316 visit_type_int(m, obj ? &(*obj)->size : NULL, "size", &err); 5317 } 5318 visit_end_optional(m, &err); 5319 5320 error_propagate(errp, err); 5321 } 5322 5323 void visit_type_ChardevRingbuf(Visitor *m, ChardevRingbuf ** obj, const char *name, Error **errp) 5324 { 5325 if (!error_is_set(errp)) { 5326 Error *err = NULL; 5327 visit_start_struct(m, (void **)obj, "ChardevRingbuf", name, sizeof(ChardevRingbuf), &err); 5328 if (!err) { 5329 if (!obj || *obj) { 5330 visit_type_ChardevRingbuf_fields(m, obj, &err); 5331 error_propagate(errp, err); 5332 err = NULL; 5333 } 5334 /* Always call end_struct if start_struct succeeded. */ 5335 visit_end_struct(m, &err); 5336 } 5337 error_propagate(errp, err); 5338 } 5339 } 5340 5341 void visit_type_ChardevRingbufList(Visitor *m, ChardevRingbufList ** obj, const char *name, Error **errp) 5342 { 5343 GenericList *i, **prev = (GenericList **)obj; 5344 Error *err = NULL; 5345 5346 if (!error_is_set(errp)) { 5347 visit_start_list(m, name, &err); 5348 if (!err) { 5349 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5350 ChardevRingbufList *native_i = (ChardevRingbufList *)i; 5351 visit_type_ChardevRingbuf(m, &native_i->value, NULL, &err); 5352 } 5353 error_propagate(errp, err); 5354 err = NULL; 5355 5356 /* Always call end_list if start_list succeeded. */ 5357 visit_end_list(m, &err); 5358 } 5359 error_propagate(errp, err); 5360 } 5361 } 5362 5363 static void visit_type_ChardevDummy_fields(Visitor *m, ChardevDummy ** obj, Error **errp) 5364 { 5365 Error *err = NULL; 5366 5367 error_propagate(errp, err); 5368 } 5369 5370 void visit_type_ChardevDummy(Visitor *m, ChardevDummy ** obj, const char *name, Error **errp) 5371 { 5372 if (!error_is_set(errp)) { 5373 Error *err = NULL; 5374 visit_start_struct(m, (void **)obj, "ChardevDummy", name, sizeof(ChardevDummy), &err); 5375 if (!err) { 5376 if (!obj || *obj) { 5377 visit_type_ChardevDummy_fields(m, obj, &err); 5378 error_propagate(errp, err); 5379 err = NULL; 5380 } 5381 /* Always call end_struct if start_struct succeeded. */ 5382 visit_end_struct(m, &err); 5383 } 5384 error_propagate(errp, err); 5385 } 5386 } 5387 5388 void visit_type_ChardevDummyList(Visitor *m, ChardevDummyList ** obj, const char *name, Error **errp) 5389 { 5390 GenericList *i, **prev = (GenericList **)obj; 5391 Error *err = NULL; 5392 5393 if (!error_is_set(errp)) { 5394 visit_start_list(m, name, &err); 5395 if (!err) { 5396 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5397 ChardevDummyList *native_i = (ChardevDummyList *)i; 5398 visit_type_ChardevDummy(m, &native_i->value, NULL, &err); 5399 } 5400 error_propagate(errp, err); 5401 err = NULL; 5402 5403 /* Always call end_list if start_list succeeded. */ 5404 visit_end_list(m, &err); 5405 } 5406 error_propagate(errp, err); 5407 } 5408 } 5409 5410 void visit_type_ChardevBackendKind(Visitor *m, ChardevBackendKind * obj, const char *name, Error **errp) 5411 { 5412 visit_type_enum(m, (int *)obj, ChardevBackendKind_lookup, "ChardevBackendKind", name, errp); 5413 } 5414 5415 void visit_type_ChardevBackend(Visitor *m, ChardevBackend ** obj, const char *name, Error **errp) 5416 { 5417 Error *err = NULL; 5418 5419 if (!error_is_set(errp)) { 5420 visit_start_struct(m, (void **)obj, "ChardevBackend", name, sizeof(ChardevBackend), &err); 5421 if (!err) { 5422 if (obj && *obj) { 5423 visit_type_ChardevBackendKind(m, &(*obj)->kind, "type", &err); 5424 if (!err) { 5425 switch ((*obj)->kind) { 5426 case CHARDEV_BACKEND_KIND_FILE: 5427 visit_type_ChardevFile(m, &(*obj)->file, "data", &err); 5428 break; 5429 case CHARDEV_BACKEND_KIND_SERIAL: 5430 visit_type_ChardevHostdev(m, &(*obj)->serial, "data", &err); 5431 break; 5432 case CHARDEV_BACKEND_KIND_PARALLEL: 5433 visit_type_ChardevHostdev(m, &(*obj)->parallel, "data", &err); 5434 break; 5435 case CHARDEV_BACKEND_KIND_PIPE: 5436 visit_type_ChardevHostdev(m, &(*obj)->pipe, "data", &err); 5437 break; 5438 case CHARDEV_BACKEND_KIND_SOCKET: 5439 visit_type_ChardevSocket(m, &(*obj)->socket, "data", &err); 5440 break; 5441 case CHARDEV_BACKEND_KIND_UDP: 5442 visit_type_ChardevUdp(m, &(*obj)->udp, "data", &err); 5443 break; 5444 case CHARDEV_BACKEND_KIND_PTY: 5445 visit_type_ChardevDummy(m, &(*obj)->pty, "data", &err); 5446 break; 5447 case CHARDEV_BACKEND_KIND_NULL: 5448 visit_type_ChardevDummy(m, &(*obj)->null, "data", &err); 5449 break; 5450 case CHARDEV_BACKEND_KIND_MUX: 5451 visit_type_ChardevMux(m, &(*obj)->mux, "data", &err); 5452 break; 5453 case CHARDEV_BACKEND_KIND_MSMOUSE: 5454 visit_type_ChardevDummy(m, &(*obj)->msmouse, "data", &err); 5455 break; 5456 case CHARDEV_BACKEND_KIND_BRAILLE: 5457 visit_type_ChardevDummy(m, &(*obj)->braille, "data", &err); 5458 break; 5459 case CHARDEV_BACKEND_KIND_STDIO: 5460 visit_type_ChardevStdio(m, &(*obj)->stdio, "data", &err); 5461 break; 5462 case CHARDEV_BACKEND_KIND_CONSOLE: 5463 visit_type_ChardevDummy(m, &(*obj)->console, "data", &err); 5464 break; 5465 case CHARDEV_BACKEND_KIND_SPICEVMC: 5466 visit_type_ChardevSpiceChannel(m, &(*obj)->spicevmc, "data", &err); 5467 break; 5468 case CHARDEV_BACKEND_KIND_SPICEPORT: 5469 visit_type_ChardevSpicePort(m, &(*obj)->spiceport, "data", &err); 5470 break; 5471 case CHARDEV_BACKEND_KIND_VC: 5472 visit_type_ChardevVC(m, &(*obj)->vc, "data", &err); 5473 break; 5474 case CHARDEV_BACKEND_KIND_RINGBUF: 5475 visit_type_ChardevRingbuf(m, &(*obj)->ringbuf, "data", &err); 5476 break; 5477 case CHARDEV_BACKEND_KIND_MEMORY: 5478 visit_type_ChardevRingbuf(m, &(*obj)->memory, "data", &err); 5479 break; 5480 default: 5481 abort(); 5482 } 5483 } 5484 error_propagate(errp, err); 5485 err = NULL; 5486 } 5487 /* Always call end_struct if start_struct succeeded. */ 5488 visit_end_struct(m, &err); 5489 } 5490 error_propagate(errp, err); 5491 } 5492 } 5493 5494 void visit_type_ChardevBackendList(Visitor *m, ChardevBackendList ** obj, const char *name, Error **errp) 5495 { 5496 GenericList *i, **prev = (GenericList **)obj; 5497 Error *err = NULL; 5498 5499 if (!error_is_set(errp)) { 5500 visit_start_list(m, name, &err); 5501 if (!err) { 5502 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5503 ChardevBackendList *native_i = (ChardevBackendList *)i; 5504 visit_type_ChardevBackend(m, &native_i->value, NULL, &err); 5505 } 5506 error_propagate(errp, err); 5507 err = NULL; 5508 5509 /* Always call end_list if start_list succeeded. */ 5510 visit_end_list(m, &err); 5511 } 5512 error_propagate(errp, err); 5513 } 5514 } 5515 5516 static void visit_type_ChardevReturn_fields(Visitor *m, ChardevReturn ** obj, Error **errp) 5517 { 5518 Error *err = NULL; 5519 visit_start_optional(m, obj ? &(*obj)->has_pty : NULL, "pty", &err); 5520 if (obj && (*obj)->has_pty) { 5521 visit_type_str(m, obj ? &(*obj)->pty : NULL, "pty", &err); 5522 } 5523 visit_end_optional(m, &err); 5524 5525 error_propagate(errp, err); 5526 } 5527 5528 void visit_type_ChardevReturn(Visitor *m, ChardevReturn ** obj, const char *name, Error **errp) 5529 { 5530 if (!error_is_set(errp)) { 5531 Error *err = NULL; 5532 visit_start_struct(m, (void **)obj, "ChardevReturn", name, sizeof(ChardevReturn), &err); 5533 if (!err) { 5534 if (!obj || *obj) { 5535 visit_type_ChardevReturn_fields(m, obj, &err); 5536 error_propagate(errp, err); 5537 err = NULL; 5538 } 5539 /* Always call end_struct if start_struct succeeded. */ 5540 visit_end_struct(m, &err); 5541 } 5542 error_propagate(errp, err); 5543 } 5544 } 5545 5546 void visit_type_ChardevReturnList(Visitor *m, ChardevReturnList ** obj, const char *name, Error **errp) 5547 { 5548 GenericList *i, **prev = (GenericList **)obj; 5549 Error *err = NULL; 5550 5551 if (!error_is_set(errp)) { 5552 visit_start_list(m, name, &err); 5553 if (!err) { 5554 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5555 ChardevReturnList *native_i = (ChardevReturnList *)i; 5556 visit_type_ChardevReturn(m, &native_i->value, NULL, &err); 5557 } 5558 error_propagate(errp, err); 5559 err = NULL; 5560 5561 /* Always call end_list if start_list succeeded. */ 5562 visit_end_list(m, &err); 5563 } 5564 error_propagate(errp, err); 5565 } 5566 } 5567 5568 void visit_type_TpmModelList(Visitor *m, TpmModelList ** obj, const char *name, Error **errp) 5569 { 5570 GenericList *i, **prev = (GenericList **)obj; 5571 Error *err = NULL; 5572 5573 if (!error_is_set(errp)) { 5574 visit_start_list(m, name, &err); 5575 if (!err) { 5576 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5577 TpmModelList *native_i = (TpmModelList *)i; 5578 visit_type_TpmModel(m, &native_i->value, NULL, &err); 5579 } 5580 error_propagate(errp, err); 5581 err = NULL; 5582 5583 /* Always call end_list if start_list succeeded. */ 5584 visit_end_list(m, &err); 5585 } 5586 error_propagate(errp, err); 5587 } 5588 } 5589 5590 void visit_type_TpmModel(Visitor *m, TpmModel * obj, const char *name, Error **errp) 5591 { 5592 visit_type_enum(m, (int *)obj, TpmModel_lookup, "TpmModel", name, errp); 5593 } 5594 5595 void visit_type_TpmTypeList(Visitor *m, TpmTypeList ** obj, const char *name, Error **errp) 5596 { 5597 GenericList *i, **prev = (GenericList **)obj; 5598 Error *err = NULL; 5599 5600 if (!error_is_set(errp)) { 5601 visit_start_list(m, name, &err); 5602 if (!err) { 5603 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5604 TpmTypeList *native_i = (TpmTypeList *)i; 5605 visit_type_TpmType(m, &native_i->value, NULL, &err); 5606 } 5607 error_propagate(errp, err); 5608 err = NULL; 5609 5610 /* Always call end_list if start_list succeeded. */ 5611 visit_end_list(m, &err); 5612 } 5613 error_propagate(errp, err); 5614 } 5615 } 5616 5617 void visit_type_TpmType(Visitor *m, TpmType * obj, const char *name, Error **errp) 5618 { 5619 visit_type_enum(m, (int *)obj, TpmType_lookup, "TpmType", name, errp); 5620 } 5621 5622 static void visit_type_TPMPassthroughOptions_fields(Visitor *m, TPMPassthroughOptions ** obj, Error **errp) 5623 { 5624 Error *err = NULL; 5625 visit_start_optional(m, obj ? &(*obj)->has_path : NULL, "path", &err); 5626 if (obj && (*obj)->has_path) { 5627 visit_type_str(m, obj ? &(*obj)->path : NULL, "path", &err); 5628 } 5629 visit_end_optional(m, &err); 5630 visit_start_optional(m, obj ? &(*obj)->has_cancel_path : NULL, "cancel-path", &err); 5631 if (obj && (*obj)->has_cancel_path) { 5632 visit_type_str(m, obj ? &(*obj)->cancel_path : NULL, "cancel-path", &err); 5633 } 5634 visit_end_optional(m, &err); 5635 5636 error_propagate(errp, err); 5637 } 5638 5639 void visit_type_TPMPassthroughOptions(Visitor *m, TPMPassthroughOptions ** obj, const char *name, Error **errp) 5640 { 5641 if (!error_is_set(errp)) { 5642 Error *err = NULL; 5643 visit_start_struct(m, (void **)obj, "TPMPassthroughOptions", name, sizeof(TPMPassthroughOptions), &err); 5644 if (!err) { 5645 if (!obj || *obj) { 5646 visit_type_TPMPassthroughOptions_fields(m, obj, &err); 5647 error_propagate(errp, err); 5648 err = NULL; 5649 } 5650 /* Always call end_struct if start_struct succeeded. */ 5651 visit_end_struct(m, &err); 5652 } 5653 error_propagate(errp, err); 5654 } 5655 } 5656 5657 void visit_type_TPMPassthroughOptionsList(Visitor *m, TPMPassthroughOptionsList ** obj, const char *name, Error **errp) 5658 { 5659 GenericList *i, **prev = (GenericList **)obj; 5660 Error *err = NULL; 5661 5662 if (!error_is_set(errp)) { 5663 visit_start_list(m, name, &err); 5664 if (!err) { 5665 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5666 TPMPassthroughOptionsList *native_i = (TPMPassthroughOptionsList *)i; 5667 visit_type_TPMPassthroughOptions(m, &native_i->value, NULL, &err); 5668 } 5669 error_propagate(errp, err); 5670 err = NULL; 5671 5672 /* Always call end_list if start_list succeeded. */ 5673 visit_end_list(m, &err); 5674 } 5675 error_propagate(errp, err); 5676 } 5677 } 5678 5679 void visit_type_TpmTypeOptionsKind(Visitor *m, TpmTypeOptionsKind * obj, const char *name, Error **errp) 5680 { 5681 visit_type_enum(m, (int *)obj, TpmTypeOptionsKind_lookup, "TpmTypeOptionsKind", name, errp); 5682 } 5683 5684 void visit_type_TpmTypeOptions(Visitor *m, TpmTypeOptions ** obj, const char *name, Error **errp) 5685 { 5686 Error *err = NULL; 5687 5688 if (!error_is_set(errp)) { 5689 visit_start_struct(m, (void **)obj, "TpmTypeOptions", name, sizeof(TpmTypeOptions), &err); 5690 if (!err) { 5691 if (obj && *obj) { 5692 visit_type_TpmTypeOptionsKind(m, &(*obj)->kind, "type", &err); 5693 if (!err) { 5694 switch ((*obj)->kind) { 5695 case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH: 5696 visit_type_TPMPassthroughOptions(m, &(*obj)->passthrough, "data", &err); 5697 break; 5698 default: 5699 abort(); 5700 } 5701 } 5702 error_propagate(errp, err); 5703 err = NULL; 5704 } 5705 /* Always call end_struct if start_struct succeeded. */ 5706 visit_end_struct(m, &err); 5707 } 5708 error_propagate(errp, err); 5709 } 5710 } 5711 5712 void visit_type_TpmTypeOptionsList(Visitor *m, TpmTypeOptionsList ** obj, const char *name, Error **errp) 5713 { 5714 GenericList *i, **prev = (GenericList **)obj; 5715 Error *err = NULL; 5716 5717 if (!error_is_set(errp)) { 5718 visit_start_list(m, name, &err); 5719 if (!err) { 5720 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5721 TpmTypeOptionsList *native_i = (TpmTypeOptionsList *)i; 5722 visit_type_TpmTypeOptions(m, &native_i->value, NULL, &err); 5723 } 5724 error_propagate(errp, err); 5725 err = NULL; 5726 5727 /* Always call end_list if start_list succeeded. */ 5728 visit_end_list(m, &err); 5729 } 5730 error_propagate(errp, err); 5731 } 5732 } 5733 5734 static void visit_type_TPMInfo_fields(Visitor *m, TPMInfo ** obj, Error **errp) 5735 { 5736 Error *err = NULL; 5737 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 5738 visit_type_TpmModel(m, obj ? &(*obj)->model : NULL, "model", &err); 5739 visit_type_TpmTypeOptions(m, obj ? &(*obj)->options : NULL, "options", &err); 5740 5741 error_propagate(errp, err); 5742 } 5743 5744 void visit_type_TPMInfo(Visitor *m, TPMInfo ** obj, const char *name, Error **errp) 5745 { 5746 if (!error_is_set(errp)) { 5747 Error *err = NULL; 5748 visit_start_struct(m, (void **)obj, "TPMInfo", name, sizeof(TPMInfo), &err); 5749 if (!err) { 5750 if (!obj || *obj) { 5751 visit_type_TPMInfo_fields(m, obj, &err); 5752 error_propagate(errp, err); 5753 err = NULL; 5754 } 5755 /* Always call end_struct if start_struct succeeded. */ 5756 visit_end_struct(m, &err); 5757 } 5758 error_propagate(errp, err); 5759 } 5760 } 5761 5762 void visit_type_TPMInfoList(Visitor *m, TPMInfoList ** obj, const char *name, Error **errp) 5763 { 5764 GenericList *i, **prev = (GenericList **)obj; 5765 Error *err = NULL; 5766 5767 if (!error_is_set(errp)) { 5768 visit_start_list(m, name, &err); 5769 if (!err) { 5770 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5771 TPMInfoList *native_i = (TPMInfoList *)i; 5772 visit_type_TPMInfo(m, &native_i->value, NULL, &err); 5773 } 5774 error_propagate(errp, err); 5775 err = NULL; 5776 5777 /* Always call end_list if start_list succeeded. */ 5778 visit_end_list(m, &err); 5779 } 5780 error_propagate(errp, err); 5781 } 5782 } 5783 5784 static void visit_type_AcpiTableOptions_fields(Visitor *m, AcpiTableOptions ** obj, Error **errp) 5785 { 5786 Error *err = NULL; 5787 visit_start_optional(m, obj ? &(*obj)->has_sig : NULL, "sig", &err); 5788 if (obj && (*obj)->has_sig) { 5789 visit_type_str(m, obj ? &(*obj)->sig : NULL, "sig", &err); 5790 } 5791 visit_end_optional(m, &err); 5792 visit_start_optional(m, obj ? &(*obj)->has_rev : NULL, "rev", &err); 5793 if (obj && (*obj)->has_rev) { 5794 visit_type_uint8(m, obj ? &(*obj)->rev : NULL, "rev", &err); 5795 } 5796 visit_end_optional(m, &err); 5797 visit_start_optional(m, obj ? &(*obj)->has_oem_id : NULL, "oem_id", &err); 5798 if (obj && (*obj)->has_oem_id) { 5799 visit_type_str(m, obj ? &(*obj)->oem_id : NULL, "oem_id", &err); 5800 } 5801 visit_end_optional(m, &err); 5802 visit_start_optional(m, obj ? &(*obj)->has_oem_table_id : NULL, "oem_table_id", &err); 5803 if (obj && (*obj)->has_oem_table_id) { 5804 visit_type_str(m, obj ? &(*obj)->oem_table_id : NULL, "oem_table_id", &err); 5805 } 5806 visit_end_optional(m, &err); 5807 visit_start_optional(m, obj ? &(*obj)->has_oem_rev : NULL, "oem_rev", &err); 5808 if (obj && (*obj)->has_oem_rev) { 5809 visit_type_uint32(m, obj ? &(*obj)->oem_rev : NULL, "oem_rev", &err); 5810 } 5811 visit_end_optional(m, &err); 5812 visit_start_optional(m, obj ? &(*obj)->has_asl_compiler_id : NULL, "asl_compiler_id", &err); 5813 if (obj && (*obj)->has_asl_compiler_id) { 5814 visit_type_str(m, obj ? &(*obj)->asl_compiler_id : NULL, "asl_compiler_id", &err); 5815 } 5816 visit_end_optional(m, &err); 5817 visit_start_optional(m, obj ? &(*obj)->has_asl_compiler_rev : NULL, "asl_compiler_rev", &err); 5818 if (obj && (*obj)->has_asl_compiler_rev) { 5819 visit_type_uint32(m, obj ? &(*obj)->asl_compiler_rev : NULL, "asl_compiler_rev", &err); 5820 } 5821 visit_end_optional(m, &err); 5822 visit_start_optional(m, obj ? &(*obj)->has_file : NULL, "file", &err); 5823 if (obj && (*obj)->has_file) { 5824 visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err); 5825 } 5826 visit_end_optional(m, &err); 5827 visit_start_optional(m, obj ? &(*obj)->has_data : NULL, "data", &err); 5828 if (obj && (*obj)->has_data) { 5829 visit_type_str(m, obj ? &(*obj)->data : NULL, "data", &err); 5830 } 5831 visit_end_optional(m, &err); 5832 5833 error_propagate(errp, err); 5834 } 5835 5836 void visit_type_AcpiTableOptions(Visitor *m, AcpiTableOptions ** obj, const char *name, Error **errp) 5837 { 5838 if (!error_is_set(errp)) { 5839 Error *err = NULL; 5840 visit_start_struct(m, (void **)obj, "AcpiTableOptions", name, sizeof(AcpiTableOptions), &err); 5841 if (!err) { 5842 if (!obj || *obj) { 5843 visit_type_AcpiTableOptions_fields(m, obj, &err); 5844 error_propagate(errp, err); 5845 err = NULL; 5846 } 5847 /* Always call end_struct if start_struct succeeded. */ 5848 visit_end_struct(m, &err); 5849 } 5850 error_propagate(errp, err); 5851 } 5852 } 5853 5854 void visit_type_AcpiTableOptionsList(Visitor *m, AcpiTableOptionsList ** obj, const char *name, Error **errp) 5855 { 5856 GenericList *i, **prev = (GenericList **)obj; 5857 Error *err = NULL; 5858 5859 if (!error_is_set(errp)) { 5860 visit_start_list(m, name, &err); 5861 if (!err) { 5862 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5863 AcpiTableOptionsList *native_i = (AcpiTableOptionsList *)i; 5864 visit_type_AcpiTableOptions(m, &native_i->value, NULL, &err); 5865 } 5866 error_propagate(errp, err); 5867 err = NULL; 5868 5869 /* Always call end_list if start_list succeeded. */ 5870 visit_end_list(m, &err); 5871 } 5872 error_propagate(errp, err); 5873 } 5874 } 5875 5876 void visit_type_CommandLineParameterTypeList(Visitor *m, CommandLineParameterTypeList ** obj, const char *name, Error **errp) 5877 { 5878 GenericList *i, **prev = (GenericList **)obj; 5879 Error *err = NULL; 5880 5881 if (!error_is_set(errp)) { 5882 visit_start_list(m, name, &err); 5883 if (!err) { 5884 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5885 CommandLineParameterTypeList *native_i = (CommandLineParameterTypeList *)i; 5886 visit_type_CommandLineParameterType(m, &native_i->value, NULL, &err); 5887 } 5888 error_propagate(errp, err); 5889 err = NULL; 5890 5891 /* Always call end_list if start_list succeeded. */ 5892 visit_end_list(m, &err); 5893 } 5894 error_propagate(errp, err); 5895 } 5896 } 5897 5898 void visit_type_CommandLineParameterType(Visitor *m, CommandLineParameterType * obj, const char *name, Error **errp) 5899 { 5900 visit_type_enum(m, (int *)obj, CommandLineParameterType_lookup, "CommandLineParameterType", name, errp); 5901 } 5902 5903 static void visit_type_CommandLineParameterInfo_fields(Visitor *m, CommandLineParameterInfo ** obj, Error **errp) 5904 { 5905 Error *err = NULL; 5906 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 5907 visit_type_CommandLineParameterType(m, obj ? &(*obj)->type : NULL, "type", &err); 5908 visit_start_optional(m, obj ? &(*obj)->has_help : NULL, "help", &err); 5909 if (obj && (*obj)->has_help) { 5910 visit_type_str(m, obj ? &(*obj)->help : NULL, "help", &err); 5911 } 5912 visit_end_optional(m, &err); 5913 5914 error_propagate(errp, err); 5915 } 5916 5917 void visit_type_CommandLineParameterInfo(Visitor *m, CommandLineParameterInfo ** obj, const char *name, Error **errp) 5918 { 5919 if (!error_is_set(errp)) { 5920 Error *err = NULL; 5921 visit_start_struct(m, (void **)obj, "CommandLineParameterInfo", name, sizeof(CommandLineParameterInfo), &err); 5922 if (!err) { 5923 if (!obj || *obj) { 5924 visit_type_CommandLineParameterInfo_fields(m, obj, &err); 5925 error_propagate(errp, err); 5926 err = NULL; 5927 } 5928 /* Always call end_struct if start_struct succeeded. */ 5929 visit_end_struct(m, &err); 5930 } 5931 error_propagate(errp, err); 5932 } 5933 } 5934 5935 void visit_type_CommandLineParameterInfoList(Visitor *m, CommandLineParameterInfoList ** obj, const char *name, Error **errp) 5936 { 5937 GenericList *i, **prev = (GenericList **)obj; 5938 Error *err = NULL; 5939 5940 if (!error_is_set(errp)) { 5941 visit_start_list(m, name, &err); 5942 if (!err) { 5943 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5944 CommandLineParameterInfoList *native_i = (CommandLineParameterInfoList *)i; 5945 visit_type_CommandLineParameterInfo(m, &native_i->value, NULL, &err); 5946 } 5947 error_propagate(errp, err); 5948 err = NULL; 5949 5950 /* Always call end_list if start_list succeeded. */ 5951 visit_end_list(m, &err); 5952 } 5953 error_propagate(errp, err); 5954 } 5955 } 5956 5957 static void visit_type_CommandLineOptionInfo_fields(Visitor *m, CommandLineOptionInfo ** obj, Error **errp) 5958 { 5959 Error *err = NULL; 5960 visit_type_str(m, obj ? &(*obj)->option : NULL, "option", &err); 5961 visit_type_CommandLineParameterInfoList(m, obj ? &(*obj)->parameters : NULL, "parameters", &err); 5962 5963 error_propagate(errp, err); 5964 } 5965 5966 void visit_type_CommandLineOptionInfo(Visitor *m, CommandLineOptionInfo ** obj, const char *name, Error **errp) 5967 { 5968 if (!error_is_set(errp)) { 5969 Error *err = NULL; 5970 visit_start_struct(m, (void **)obj, "CommandLineOptionInfo", name, sizeof(CommandLineOptionInfo), &err); 5971 if (!err) { 5972 if (!obj || *obj) { 5973 visit_type_CommandLineOptionInfo_fields(m, obj, &err); 5974 error_propagate(errp, err); 5975 err = NULL; 5976 } 5977 /* Always call end_struct if start_struct succeeded. */ 5978 visit_end_struct(m, &err); 5979 } 5980 error_propagate(errp, err); 5981 } 5982 } 5983 5984 void visit_type_CommandLineOptionInfoList(Visitor *m, CommandLineOptionInfoList ** obj, const char *name, Error **errp) 5985 { 5986 GenericList *i, **prev = (GenericList **)obj; 5987 Error *err = NULL; 5988 5989 if (!error_is_set(errp)) { 5990 visit_start_list(m, name, &err); 5991 if (!err) { 5992 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 5993 CommandLineOptionInfoList *native_i = (CommandLineOptionInfoList *)i; 5994 visit_type_CommandLineOptionInfo(m, &native_i->value, NULL, &err); 5995 } 5996 error_propagate(errp, err); 5997 err = NULL; 5998 5999 /* Always call end_list if start_list succeeded. */ 6000 visit_end_list(m, &err); 6001 } 6002 error_propagate(errp, err); 6003 } 6004 } 6005 6006 void visit_type_X86CPURegister32List(Visitor *m, X86CPURegister32List ** obj, const char *name, Error **errp) 6007 { 6008 GenericList *i, **prev = (GenericList **)obj; 6009 Error *err = NULL; 6010 6011 if (!error_is_set(errp)) { 6012 visit_start_list(m, name, &err); 6013 if (!err) { 6014 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6015 X86CPURegister32List *native_i = (X86CPURegister32List *)i; 6016 visit_type_X86CPURegister32(m, &native_i->value, NULL, &err); 6017 } 6018 error_propagate(errp, err); 6019 err = NULL; 6020 6021 /* Always call end_list if start_list succeeded. */ 6022 visit_end_list(m, &err); 6023 } 6024 error_propagate(errp, err); 6025 } 6026 } 6027 6028 void visit_type_X86CPURegister32(Visitor *m, X86CPURegister32 * obj, const char *name, Error **errp) 6029 { 6030 visit_type_enum(m, (int *)obj, X86CPURegister32_lookup, "X86CPURegister32", name, errp); 6031 } 6032 6033 static void visit_type_X86CPUFeatureWordInfo_fields(Visitor *m, X86CPUFeatureWordInfo ** obj, Error **errp) 6034 { 6035 Error *err = NULL; 6036 visit_type_int(m, obj ? &(*obj)->cpuid_input_eax : NULL, "cpuid-input-eax", &err); 6037 visit_start_optional(m, obj ? &(*obj)->has_cpuid_input_ecx : NULL, "cpuid-input-ecx", &err); 6038 if (obj && (*obj)->has_cpuid_input_ecx) { 6039 visit_type_int(m, obj ? &(*obj)->cpuid_input_ecx : NULL, "cpuid-input-ecx", &err); 6040 } 6041 visit_end_optional(m, &err); 6042 visit_type_X86CPURegister32(m, obj ? &(*obj)->cpuid_register : NULL, "cpuid-register", &err); 6043 visit_type_int(m, obj ? &(*obj)->features : NULL, "features", &err); 6044 6045 error_propagate(errp, err); 6046 } 6047 6048 void visit_type_X86CPUFeatureWordInfo(Visitor *m, X86CPUFeatureWordInfo ** obj, const char *name, Error **errp) 6049 { 6050 if (!error_is_set(errp)) { 6051 Error *err = NULL; 6052 visit_start_struct(m, (void **)obj, "X86CPUFeatureWordInfo", name, sizeof(X86CPUFeatureWordInfo), &err); 6053 if (!err) { 6054 if (!obj || *obj) { 6055 visit_type_X86CPUFeatureWordInfo_fields(m, obj, &err); 6056 error_propagate(errp, err); 6057 err = NULL; 6058 } 6059 /* Always call end_struct if start_struct succeeded. */ 6060 visit_end_struct(m, &err); 6061 } 6062 error_propagate(errp, err); 6063 } 6064 } 6065 6066 void visit_type_X86CPUFeatureWordInfoList(Visitor *m, X86CPUFeatureWordInfoList ** obj, const char *name, Error **errp) 6067 { 6068 GenericList *i, **prev = (GenericList **)obj; 6069 Error *err = NULL; 6070 6071 if (!error_is_set(errp)) { 6072 visit_start_list(m, name, &err); 6073 if (!err) { 6074 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6075 X86CPUFeatureWordInfoList *native_i = (X86CPUFeatureWordInfoList *)i; 6076 visit_type_X86CPUFeatureWordInfo(m, &native_i->value, NULL, &err); 6077 } 6078 error_propagate(errp, err); 6079 err = NULL; 6080 6081 /* Always call end_list if start_list succeeded. */ 6082 visit_end_list(m, &err); 6083 } 6084 error_propagate(errp, err); 6085 } 6086 } 6087 6088 void visit_type_RxStateList(Visitor *m, RxStateList ** obj, const char *name, Error **errp) 6089 { 6090 GenericList *i, **prev = (GenericList **)obj; 6091 Error *err = NULL; 6092 6093 if (!error_is_set(errp)) { 6094 visit_start_list(m, name, &err); 6095 if (!err) { 6096 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6097 RxStateList *native_i = (RxStateList *)i; 6098 visit_type_RxState(m, &native_i->value, NULL, &err); 6099 } 6100 error_propagate(errp, err); 6101 err = NULL; 6102 6103 /* Always call end_list if start_list succeeded. */ 6104 visit_end_list(m, &err); 6105 } 6106 error_propagate(errp, err); 6107 } 6108 } 6109 6110 void visit_type_RxState(Visitor *m, RxState * obj, const char *name, Error **errp) 6111 { 6112 visit_type_enum(m, (int *)obj, RxState_lookup, "RxState", name, errp); 6113 } 6114 6115 static void visit_type_RxFilterInfo_fields(Visitor *m, RxFilterInfo ** obj, Error **errp) 6116 { 6117 Error *err = NULL; 6118 visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err); 6119 visit_type_bool(m, obj ? &(*obj)->promiscuous : NULL, "promiscuous", &err); 6120 visit_type_RxState(m, obj ? &(*obj)->multicast : NULL, "multicast", &err); 6121 visit_type_RxState(m, obj ? &(*obj)->unicast : NULL, "unicast", &err); 6122 visit_type_bool(m, obj ? &(*obj)->broadcast_allowed : NULL, "broadcast-allowed", &err); 6123 visit_type_bool(m, obj ? &(*obj)->multicast_overflow : NULL, "multicast-overflow", &err); 6124 visit_type_bool(m, obj ? &(*obj)->unicast_overflow : NULL, "unicast-overflow", &err); 6125 visit_type_str(m, obj ? &(*obj)->main_mac : NULL, "main-mac", &err); 6126 visit_type_intList(m, obj ? &(*obj)->vlan_table : NULL, "vlan-table", &err); 6127 visit_type_strList(m, obj ? &(*obj)->unicast_table : NULL, "unicast-table", &err); 6128 visit_type_strList(m, obj ? &(*obj)->multicast_table : NULL, "multicast-table", &err); 6129 6130 error_propagate(errp, err); 6131 } 6132 6133 void visit_type_RxFilterInfo(Visitor *m, RxFilterInfo ** obj, const char *name, Error **errp) 6134 { 6135 if (!error_is_set(errp)) { 6136 Error *err = NULL; 6137 visit_start_struct(m, (void **)obj, "RxFilterInfo", name, sizeof(RxFilterInfo), &err); 6138 if (!err) { 6139 if (!obj || *obj) { 6140 visit_type_RxFilterInfo_fields(m, obj, &err); 6141 error_propagate(errp, err); 6142 err = NULL; 6143 } 6144 /* Always call end_struct if start_struct succeeded. */ 6145 visit_end_struct(m, &err); 6146 } 6147 error_propagate(errp, err); 6148 } 6149 } 6150 6151 void visit_type_RxFilterInfoList(Visitor *m, RxFilterInfoList ** obj, const char *name, Error **errp) 6152 { 6153 GenericList *i, **prev = (GenericList **)obj; 6154 Error *err = NULL; 6155 6156 if (!error_is_set(errp)) { 6157 visit_start_list(m, name, &err); 6158 if (!err) { 6159 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6160 RxFilterInfoList *native_i = (RxFilterInfoList *)i; 6161 visit_type_RxFilterInfo(m, &native_i->value, NULL, &err); 6162 } 6163 error_propagate(errp, err); 6164 err = NULL; 6165 6166 /* Always call end_list if start_list succeeded. */ 6167 visit_end_list(m, &err); 6168 } 6169 error_propagate(errp, err); 6170 } 6171 } 6172 6173 void visit_type_BlockdevDiscardOptionsList(Visitor *m, BlockdevDiscardOptionsList ** obj, const char *name, Error **errp) 6174 { 6175 GenericList *i, **prev = (GenericList **)obj; 6176 Error *err = NULL; 6177 6178 if (!error_is_set(errp)) { 6179 visit_start_list(m, name, &err); 6180 if (!err) { 6181 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6182 BlockdevDiscardOptionsList *native_i = (BlockdevDiscardOptionsList *)i; 6183 visit_type_BlockdevDiscardOptions(m, &native_i->value, NULL, &err); 6184 } 6185 error_propagate(errp, err); 6186 err = NULL; 6187 6188 /* Always call end_list if start_list succeeded. */ 6189 visit_end_list(m, &err); 6190 } 6191 error_propagate(errp, err); 6192 } 6193 } 6194 6195 void visit_type_BlockdevDiscardOptions(Visitor *m, BlockdevDiscardOptions * obj, const char *name, Error **errp) 6196 { 6197 visit_type_enum(m, (int *)obj, BlockdevDiscardOptions_lookup, "BlockdevDiscardOptions", name, errp); 6198 } 6199 6200 void visit_type_BlockdevAioOptionsList(Visitor *m, BlockdevAioOptionsList ** obj, const char *name, Error **errp) 6201 { 6202 GenericList *i, **prev = (GenericList **)obj; 6203 Error *err = NULL; 6204 6205 if (!error_is_set(errp)) { 6206 visit_start_list(m, name, &err); 6207 if (!err) { 6208 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6209 BlockdevAioOptionsList *native_i = (BlockdevAioOptionsList *)i; 6210 visit_type_BlockdevAioOptions(m, &native_i->value, NULL, &err); 6211 } 6212 error_propagate(errp, err); 6213 err = NULL; 6214 6215 /* Always call end_list if start_list succeeded. */ 6216 visit_end_list(m, &err); 6217 } 6218 error_propagate(errp, err); 6219 } 6220 } 6221 6222 void visit_type_BlockdevAioOptions(Visitor *m, BlockdevAioOptions * obj, const char *name, Error **errp) 6223 { 6224 visit_type_enum(m, (int *)obj, BlockdevAioOptions_lookup, "BlockdevAioOptions", name, errp); 6225 } 6226 6227 static void visit_type_BlockdevCacheOptions_fields(Visitor *m, BlockdevCacheOptions ** obj, Error **errp) 6228 { 6229 Error *err = NULL; 6230 visit_start_optional(m, obj ? &(*obj)->has_writeback : NULL, "writeback", &err); 6231 if (obj && (*obj)->has_writeback) { 6232 visit_type_bool(m, obj ? &(*obj)->writeback : NULL, "writeback", &err); 6233 } 6234 visit_end_optional(m, &err); 6235 visit_start_optional(m, obj ? &(*obj)->has_direct : NULL, "direct", &err); 6236 if (obj && (*obj)->has_direct) { 6237 visit_type_bool(m, obj ? &(*obj)->direct : NULL, "direct", &err); 6238 } 6239 visit_end_optional(m, &err); 6240 visit_start_optional(m, obj ? &(*obj)->has_no_flush : NULL, "no-flush", &err); 6241 if (obj && (*obj)->has_no_flush) { 6242 visit_type_bool(m, obj ? &(*obj)->no_flush : NULL, "no-flush", &err); 6243 } 6244 visit_end_optional(m, &err); 6245 6246 error_propagate(errp, err); 6247 } 6248 6249 void visit_type_BlockdevCacheOptions(Visitor *m, BlockdevCacheOptions ** obj, const char *name, Error **errp) 6250 { 6251 if (!error_is_set(errp)) { 6252 Error *err = NULL; 6253 visit_start_struct(m, (void **)obj, "BlockdevCacheOptions", name, sizeof(BlockdevCacheOptions), &err); 6254 if (!err) { 6255 if (!obj || *obj) { 6256 visit_type_BlockdevCacheOptions_fields(m, obj, &err); 6257 error_propagate(errp, err); 6258 err = NULL; 6259 } 6260 /* Always call end_struct if start_struct succeeded. */ 6261 visit_end_struct(m, &err); 6262 } 6263 error_propagate(errp, err); 6264 } 6265 } 6266 6267 void visit_type_BlockdevCacheOptionsList(Visitor *m, BlockdevCacheOptionsList ** obj, const char *name, Error **errp) 6268 { 6269 GenericList *i, **prev = (GenericList **)obj; 6270 Error *err = NULL; 6271 6272 if (!error_is_set(errp)) { 6273 visit_start_list(m, name, &err); 6274 if (!err) { 6275 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6276 BlockdevCacheOptionsList *native_i = (BlockdevCacheOptionsList *)i; 6277 visit_type_BlockdevCacheOptions(m, &native_i->value, NULL, &err); 6278 } 6279 error_propagate(errp, err); 6280 err = NULL; 6281 6282 /* Always call end_list if start_list succeeded. */ 6283 visit_end_list(m, &err); 6284 } 6285 error_propagate(errp, err); 6286 } 6287 } 6288 6289 static void visit_type_BlockdevOptionsBase_fields(Visitor *m, BlockdevOptionsBase ** obj, Error **errp) 6290 { 6291 Error *err = NULL; 6292 visit_type_str(m, obj ? &(*obj)->driver : NULL, "driver", &err); 6293 visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err); 6294 if (obj && (*obj)->has_id) { 6295 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 6296 } 6297 visit_end_optional(m, &err); 6298 visit_start_optional(m, obj ? &(*obj)->has_discard : NULL, "discard", &err); 6299 if (obj && (*obj)->has_discard) { 6300 visit_type_BlockdevDiscardOptions(m, obj ? &(*obj)->discard : NULL, "discard", &err); 6301 } 6302 visit_end_optional(m, &err); 6303 visit_start_optional(m, obj ? &(*obj)->has_cache : NULL, "cache", &err); 6304 if (obj && (*obj)->has_cache) { 6305 visit_type_BlockdevCacheOptions(m, obj ? &(*obj)->cache : NULL, "cache", &err); 6306 } 6307 visit_end_optional(m, &err); 6308 visit_start_optional(m, obj ? &(*obj)->has_aio : NULL, "aio", &err); 6309 if (obj && (*obj)->has_aio) { 6310 visit_type_BlockdevAioOptions(m, obj ? &(*obj)->aio : NULL, "aio", &err); 6311 } 6312 visit_end_optional(m, &err); 6313 visit_start_optional(m, obj ? &(*obj)->has_rerror : NULL, "rerror", &err); 6314 if (obj && (*obj)->has_rerror) { 6315 visit_type_BlockdevOnError(m, obj ? &(*obj)->rerror : NULL, "rerror", &err); 6316 } 6317 visit_end_optional(m, &err); 6318 visit_start_optional(m, obj ? &(*obj)->has_werror : NULL, "werror", &err); 6319 if (obj && (*obj)->has_werror) { 6320 visit_type_BlockdevOnError(m, obj ? &(*obj)->werror : NULL, "werror", &err); 6321 } 6322 visit_end_optional(m, &err); 6323 visit_start_optional(m, obj ? &(*obj)->has_read_only : NULL, "read-only", &err); 6324 if (obj && (*obj)->has_read_only) { 6325 visit_type_bool(m, obj ? &(*obj)->read_only : NULL, "read-only", &err); 6326 } 6327 visit_end_optional(m, &err); 6328 6329 error_propagate(errp, err); 6330 } 6331 6332 void visit_type_BlockdevOptionsBase(Visitor *m, BlockdevOptionsBase ** obj, const char *name, Error **errp) 6333 { 6334 if (!error_is_set(errp)) { 6335 Error *err = NULL; 6336 visit_start_struct(m, (void **)obj, "BlockdevOptionsBase", name, sizeof(BlockdevOptionsBase), &err); 6337 if (!err) { 6338 if (!obj || *obj) { 6339 visit_type_BlockdevOptionsBase_fields(m, obj, &err); 6340 error_propagate(errp, err); 6341 err = NULL; 6342 } 6343 /* Always call end_struct if start_struct succeeded. */ 6344 visit_end_struct(m, &err); 6345 } 6346 error_propagate(errp, err); 6347 } 6348 } 6349 6350 void visit_type_BlockdevOptionsBaseList(Visitor *m, BlockdevOptionsBaseList ** obj, const char *name, Error **errp) 6351 { 6352 GenericList *i, **prev = (GenericList **)obj; 6353 Error *err = NULL; 6354 6355 if (!error_is_set(errp)) { 6356 visit_start_list(m, name, &err); 6357 if (!err) { 6358 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6359 BlockdevOptionsBaseList *native_i = (BlockdevOptionsBaseList *)i; 6360 visit_type_BlockdevOptionsBase(m, &native_i->value, NULL, &err); 6361 } 6362 error_propagate(errp, err); 6363 err = NULL; 6364 6365 /* Always call end_list if start_list succeeded. */ 6366 visit_end_list(m, &err); 6367 } 6368 error_propagate(errp, err); 6369 } 6370 } 6371 6372 static void visit_type_BlockdevOptionsFile_fields(Visitor *m, BlockdevOptionsFile ** obj, Error **errp) 6373 { 6374 Error *err = NULL; 6375 visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err); 6376 6377 error_propagate(errp, err); 6378 } 6379 6380 void visit_type_BlockdevOptionsFile(Visitor *m, BlockdevOptionsFile ** obj, const char *name, Error **errp) 6381 { 6382 if (!error_is_set(errp)) { 6383 Error *err = NULL; 6384 visit_start_struct(m, (void **)obj, "BlockdevOptionsFile", name, sizeof(BlockdevOptionsFile), &err); 6385 if (!err) { 6386 if (!obj || *obj) { 6387 visit_type_BlockdevOptionsFile_fields(m, obj, &err); 6388 error_propagate(errp, err); 6389 err = NULL; 6390 } 6391 /* Always call end_struct if start_struct succeeded. */ 6392 visit_end_struct(m, &err); 6393 } 6394 error_propagate(errp, err); 6395 } 6396 } 6397 6398 void visit_type_BlockdevOptionsFileList(Visitor *m, BlockdevOptionsFileList ** obj, const char *name, Error **errp) 6399 { 6400 GenericList *i, **prev = (GenericList **)obj; 6401 Error *err = NULL; 6402 6403 if (!error_is_set(errp)) { 6404 visit_start_list(m, name, &err); 6405 if (!err) { 6406 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6407 BlockdevOptionsFileList *native_i = (BlockdevOptionsFileList *)i; 6408 visit_type_BlockdevOptionsFile(m, &native_i->value, NULL, &err); 6409 } 6410 error_propagate(errp, err); 6411 err = NULL; 6412 6413 /* Always call end_list if start_list succeeded. */ 6414 visit_end_list(m, &err); 6415 } 6416 error_propagate(errp, err); 6417 } 6418 } 6419 6420 static void visit_type_BlockdevOptionsVVFAT_fields(Visitor *m, BlockdevOptionsVVFAT ** obj, Error **errp) 6421 { 6422 Error *err = NULL; 6423 visit_type_str(m, obj ? &(*obj)->dir : NULL, "dir", &err); 6424 visit_start_optional(m, obj ? &(*obj)->has_fat_type : NULL, "fat-type", &err); 6425 if (obj && (*obj)->has_fat_type) { 6426 visit_type_int(m, obj ? &(*obj)->fat_type : NULL, "fat-type", &err); 6427 } 6428 visit_end_optional(m, &err); 6429 visit_start_optional(m, obj ? &(*obj)->has_floppy : NULL, "floppy", &err); 6430 if (obj && (*obj)->has_floppy) { 6431 visit_type_bool(m, obj ? &(*obj)->floppy : NULL, "floppy", &err); 6432 } 6433 visit_end_optional(m, &err); 6434 visit_start_optional(m, obj ? &(*obj)->has_rw : NULL, "rw", &err); 6435 if (obj && (*obj)->has_rw) { 6436 visit_type_bool(m, obj ? &(*obj)->rw : NULL, "rw", &err); 6437 } 6438 visit_end_optional(m, &err); 6439 6440 error_propagate(errp, err); 6441 } 6442 6443 void visit_type_BlockdevOptionsVVFAT(Visitor *m, BlockdevOptionsVVFAT ** obj, const char *name, Error **errp) 6444 { 6445 if (!error_is_set(errp)) { 6446 Error *err = NULL; 6447 visit_start_struct(m, (void **)obj, "BlockdevOptionsVVFAT", name, sizeof(BlockdevOptionsVVFAT), &err); 6448 if (!err) { 6449 if (!obj || *obj) { 6450 visit_type_BlockdevOptionsVVFAT_fields(m, obj, &err); 6451 error_propagate(errp, err); 6452 err = NULL; 6453 } 6454 /* Always call end_struct if start_struct succeeded. */ 6455 visit_end_struct(m, &err); 6456 } 6457 error_propagate(errp, err); 6458 } 6459 } 6460 6461 void visit_type_BlockdevOptionsVVFATList(Visitor *m, BlockdevOptionsVVFATList ** obj, const char *name, Error **errp) 6462 { 6463 GenericList *i, **prev = (GenericList **)obj; 6464 Error *err = NULL; 6465 6466 if (!error_is_set(errp)) { 6467 visit_start_list(m, name, &err); 6468 if (!err) { 6469 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6470 BlockdevOptionsVVFATList *native_i = (BlockdevOptionsVVFATList *)i; 6471 visit_type_BlockdevOptionsVVFAT(m, &native_i->value, NULL, &err); 6472 } 6473 error_propagate(errp, err); 6474 err = NULL; 6475 6476 /* Always call end_list if start_list succeeded. */ 6477 visit_end_list(m, &err); 6478 } 6479 error_propagate(errp, err); 6480 } 6481 } 6482 6483 static void visit_type_BlockdevOptionsGenericFormat_fields(Visitor *m, BlockdevOptionsGenericFormat ** obj, Error **errp) 6484 { 6485 Error *err = NULL; 6486 visit_type_BlockdevRef(m, obj ? &(*obj)->file : NULL, "file", &err); 6487 6488 error_propagate(errp, err); 6489 } 6490 6491 void visit_type_BlockdevOptionsGenericFormat(Visitor *m, BlockdevOptionsGenericFormat ** obj, const char *name, Error **errp) 6492 { 6493 if (!error_is_set(errp)) { 6494 Error *err = NULL; 6495 visit_start_struct(m, (void **)obj, "BlockdevOptionsGenericFormat", name, sizeof(BlockdevOptionsGenericFormat), &err); 6496 if (!err) { 6497 if (!obj || *obj) { 6498 visit_type_BlockdevOptionsGenericFormat_fields(m, obj, &err); 6499 error_propagate(errp, err); 6500 err = NULL; 6501 } 6502 /* Always call end_struct if start_struct succeeded. */ 6503 visit_end_struct(m, &err); 6504 } 6505 error_propagate(errp, err); 6506 } 6507 } 6508 6509 void visit_type_BlockdevOptionsGenericFormatList(Visitor *m, BlockdevOptionsGenericFormatList ** obj, const char *name, Error **errp) 6510 { 6511 GenericList *i, **prev = (GenericList **)obj; 6512 Error *err = NULL; 6513 6514 if (!error_is_set(errp)) { 6515 visit_start_list(m, name, &err); 6516 if (!err) { 6517 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6518 BlockdevOptionsGenericFormatList *native_i = (BlockdevOptionsGenericFormatList *)i; 6519 visit_type_BlockdevOptionsGenericFormat(m, &native_i->value, NULL, &err); 6520 } 6521 error_propagate(errp, err); 6522 err = NULL; 6523 6524 /* Always call end_list if start_list succeeded. */ 6525 visit_end_list(m, &err); 6526 } 6527 error_propagate(errp, err); 6528 } 6529 } 6530 6531 static void visit_type_BlockdevOptionsGenericCOWFormat_fields(Visitor *m, BlockdevOptionsGenericCOWFormat ** obj, Error **errp) 6532 { 6533 Error *err = NULL; 6534 visit_start_implicit_struct(m, obj ? (void**) &(*obj)->base : NULL, sizeof(BlockdevOptionsGenericFormat), &err); 6535 if (!err) { 6536 visit_type_BlockdevOptionsGenericFormat_fields(m, obj ? &(*obj)->base : NULL, &err); 6537 error_propagate(errp, err); 6538 err = NULL; 6539 visit_end_implicit_struct(m, &err); 6540 } 6541 visit_start_optional(m, obj ? &(*obj)->has_backing : NULL, "backing", &err); 6542 if (obj && (*obj)->has_backing) { 6543 visit_type_BlockdevRef(m, obj ? &(*obj)->backing : NULL, "backing", &err); 6544 } 6545 visit_end_optional(m, &err); 6546 6547 error_propagate(errp, err); 6548 } 6549 6550 void visit_type_BlockdevOptionsGenericCOWFormat(Visitor *m, BlockdevOptionsGenericCOWFormat ** obj, const char *name, Error **errp) 6551 { 6552 if (!error_is_set(errp)) { 6553 Error *err = NULL; 6554 visit_start_struct(m, (void **)obj, "BlockdevOptionsGenericCOWFormat", name, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6555 if (!err) { 6556 if (!obj || *obj) { 6557 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, obj, &err); 6558 error_propagate(errp, err); 6559 err = NULL; 6560 } 6561 /* Always call end_struct if start_struct succeeded. */ 6562 visit_end_struct(m, &err); 6563 } 6564 error_propagate(errp, err); 6565 } 6566 } 6567 6568 void visit_type_BlockdevOptionsGenericCOWFormatList(Visitor *m, BlockdevOptionsGenericCOWFormatList ** obj, const char *name, Error **errp) 6569 { 6570 GenericList *i, **prev = (GenericList **)obj; 6571 Error *err = NULL; 6572 6573 if (!error_is_set(errp)) { 6574 visit_start_list(m, name, &err); 6575 if (!err) { 6576 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6577 BlockdevOptionsGenericCOWFormatList *native_i = (BlockdevOptionsGenericCOWFormatList *)i; 6578 visit_type_BlockdevOptionsGenericCOWFormat(m, &native_i->value, NULL, &err); 6579 } 6580 error_propagate(errp, err); 6581 err = NULL; 6582 6583 /* Always call end_list if start_list succeeded. */ 6584 visit_end_list(m, &err); 6585 } 6586 error_propagate(errp, err); 6587 } 6588 } 6589 6590 static void visit_type_BlockdevOptionsQcow2_fields(Visitor *m, BlockdevOptionsQcow2 ** obj, Error **errp) 6591 { 6592 Error *err = NULL; 6593 visit_start_implicit_struct(m, obj ? (void**) &(*obj)->base : NULL, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6594 if (!err) { 6595 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, obj ? &(*obj)->base : NULL, &err); 6596 error_propagate(errp, err); 6597 err = NULL; 6598 visit_end_implicit_struct(m, &err); 6599 } 6600 visit_start_optional(m, obj ? &(*obj)->has_lazy_refcounts : NULL, "lazy-refcounts", &err); 6601 if (obj && (*obj)->has_lazy_refcounts) { 6602 visit_type_bool(m, obj ? &(*obj)->lazy_refcounts : NULL, "lazy-refcounts", &err); 6603 } 6604 visit_end_optional(m, &err); 6605 visit_start_optional(m, obj ? &(*obj)->has_pass_discard_request : NULL, "pass-discard-request", &err); 6606 if (obj && (*obj)->has_pass_discard_request) { 6607 visit_type_bool(m, obj ? &(*obj)->pass_discard_request : NULL, "pass-discard-request", &err); 6608 } 6609 visit_end_optional(m, &err); 6610 visit_start_optional(m, obj ? &(*obj)->has_pass_discard_snapshot : NULL, "pass-discard-snapshot", &err); 6611 if (obj && (*obj)->has_pass_discard_snapshot) { 6612 visit_type_bool(m, obj ? &(*obj)->pass_discard_snapshot : NULL, "pass-discard-snapshot", &err); 6613 } 6614 visit_end_optional(m, &err); 6615 visit_start_optional(m, obj ? &(*obj)->has_pass_discard_other : NULL, "pass-discard-other", &err); 6616 if (obj && (*obj)->has_pass_discard_other) { 6617 visit_type_bool(m, obj ? &(*obj)->pass_discard_other : NULL, "pass-discard-other", &err); 6618 } 6619 visit_end_optional(m, &err); 6620 6621 error_propagate(errp, err); 6622 } 6623 6624 void visit_type_BlockdevOptionsQcow2(Visitor *m, BlockdevOptionsQcow2 ** obj, const char *name, Error **errp) 6625 { 6626 if (!error_is_set(errp)) { 6627 Error *err = NULL; 6628 visit_start_struct(m, (void **)obj, "BlockdevOptionsQcow2", name, sizeof(BlockdevOptionsQcow2), &err); 6629 if (!err) { 6630 if (!obj || *obj) { 6631 visit_type_BlockdevOptionsQcow2_fields(m, obj, &err); 6632 error_propagate(errp, err); 6633 err = NULL; 6634 } 6635 /* Always call end_struct if start_struct succeeded. */ 6636 visit_end_struct(m, &err); 6637 } 6638 error_propagate(errp, err); 6639 } 6640 } 6641 6642 void visit_type_BlockdevOptionsQcow2List(Visitor *m, BlockdevOptionsQcow2List ** obj, const char *name, Error **errp) 6643 { 6644 GenericList *i, **prev = (GenericList **)obj; 6645 Error *err = NULL; 6646 6647 if (!error_is_set(errp)) { 6648 visit_start_list(m, name, &err); 6649 if (!err) { 6650 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6651 BlockdevOptionsQcow2List *native_i = (BlockdevOptionsQcow2List *)i; 6652 visit_type_BlockdevOptionsQcow2(m, &native_i->value, NULL, &err); 6653 } 6654 error_propagate(errp, err); 6655 err = NULL; 6656 6657 /* Always call end_list if start_list succeeded. */ 6658 visit_end_list(m, &err); 6659 } 6660 error_propagate(errp, err); 6661 } 6662 } 6663 6664 void visit_type_BlockdevOptionsKind(Visitor *m, BlockdevOptionsKind * obj, const char *name, Error **errp) 6665 { 6666 visit_type_enum(m, (int *)obj, BlockdevOptionsKind_lookup, "BlockdevOptionsKind", name, errp); 6667 } 6668 6669 static void visit_type_BlockdevOptions_fields(Visitor *m, BlockdevOptions ** obj, Error **errp) 6670 { 6671 Error *err = NULL; 6672 visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err); 6673 if (obj && (*obj)->has_id) { 6674 visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err); 6675 } 6676 visit_end_optional(m, &err); 6677 visit_start_optional(m, obj ? &(*obj)->has_discard : NULL, "discard", &err); 6678 if (obj && (*obj)->has_discard) { 6679 visit_type_BlockdevDiscardOptions(m, obj ? &(*obj)->discard : NULL, "discard", &err); 6680 } 6681 visit_end_optional(m, &err); 6682 visit_start_optional(m, obj ? &(*obj)->has_cache : NULL, "cache", &err); 6683 if (obj && (*obj)->has_cache) { 6684 visit_type_BlockdevCacheOptions(m, obj ? &(*obj)->cache : NULL, "cache", &err); 6685 } 6686 visit_end_optional(m, &err); 6687 visit_start_optional(m, obj ? &(*obj)->has_aio : NULL, "aio", &err); 6688 if (obj && (*obj)->has_aio) { 6689 visit_type_BlockdevAioOptions(m, obj ? &(*obj)->aio : NULL, "aio", &err); 6690 } 6691 visit_end_optional(m, &err); 6692 visit_start_optional(m, obj ? &(*obj)->has_rerror : NULL, "rerror", &err); 6693 if (obj && (*obj)->has_rerror) { 6694 visit_type_BlockdevOnError(m, obj ? &(*obj)->rerror : NULL, "rerror", &err); 6695 } 6696 visit_end_optional(m, &err); 6697 visit_start_optional(m, obj ? &(*obj)->has_werror : NULL, "werror", &err); 6698 if (obj && (*obj)->has_werror) { 6699 visit_type_BlockdevOnError(m, obj ? &(*obj)->werror : NULL, "werror", &err); 6700 } 6701 visit_end_optional(m, &err); 6702 visit_start_optional(m, obj ? &(*obj)->has_read_only : NULL, "read-only", &err); 6703 if (obj && (*obj)->has_read_only) { 6704 visit_type_bool(m, obj ? &(*obj)->read_only : NULL, "read-only", &err); 6705 } 6706 visit_end_optional(m, &err); 6707 6708 error_propagate(errp, err); 6709 } 6710 6711 void visit_type_BlockdevOptions(Visitor *m, BlockdevOptions ** obj, const char *name, Error **errp) 6712 { 6713 Error *err = NULL; 6714 6715 if (!error_is_set(errp)) { 6716 visit_start_struct(m, (void **)obj, "BlockdevOptions", name, sizeof(BlockdevOptions), &err); 6717 if (!err) { 6718 if (obj && *obj) { 6719 visit_type_BlockdevOptions_fields(m, obj, &err); 6720 visit_type_BlockdevOptionsKind(m, &(*obj)->kind, "driver", &err); 6721 if (!err) { 6722 switch ((*obj)->kind) { 6723 case BLOCKDEV_OPTIONS_KIND_FILE: 6724 visit_start_implicit_struct(m, (void**) &(*obj)->file, sizeof(BlockdevOptionsFile), &err); 6725 if (!err) { 6726 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->file, &err); 6727 error_propagate(errp, err); 6728 err = NULL; 6729 visit_end_implicit_struct(m, &err); 6730 } 6731 break; 6732 case BLOCKDEV_OPTIONS_KIND_HTTP: 6733 visit_start_implicit_struct(m, (void**) &(*obj)->http, sizeof(BlockdevOptionsFile), &err); 6734 if (!err) { 6735 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->http, &err); 6736 error_propagate(errp, err); 6737 err = NULL; 6738 visit_end_implicit_struct(m, &err); 6739 } 6740 break; 6741 case BLOCKDEV_OPTIONS_KIND_HTTPS: 6742 visit_start_implicit_struct(m, (void**) &(*obj)->https, sizeof(BlockdevOptionsFile), &err); 6743 if (!err) { 6744 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->https, &err); 6745 error_propagate(errp, err); 6746 err = NULL; 6747 visit_end_implicit_struct(m, &err); 6748 } 6749 break; 6750 case BLOCKDEV_OPTIONS_KIND_FTP: 6751 visit_start_implicit_struct(m, (void**) &(*obj)->ftp, sizeof(BlockdevOptionsFile), &err); 6752 if (!err) { 6753 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->ftp, &err); 6754 error_propagate(errp, err); 6755 err = NULL; 6756 visit_end_implicit_struct(m, &err); 6757 } 6758 break; 6759 case BLOCKDEV_OPTIONS_KIND_FTPS: 6760 visit_start_implicit_struct(m, (void**) &(*obj)->ftps, sizeof(BlockdevOptionsFile), &err); 6761 if (!err) { 6762 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->ftps, &err); 6763 error_propagate(errp, err); 6764 err = NULL; 6765 visit_end_implicit_struct(m, &err); 6766 } 6767 break; 6768 case BLOCKDEV_OPTIONS_KIND_TFTP: 6769 visit_start_implicit_struct(m, (void**) &(*obj)->tftp, sizeof(BlockdevOptionsFile), &err); 6770 if (!err) { 6771 visit_type_BlockdevOptionsFile_fields(m, &(*obj)->tftp, &err); 6772 error_propagate(errp, err); 6773 err = NULL; 6774 visit_end_implicit_struct(m, &err); 6775 } 6776 break; 6777 case BLOCKDEV_OPTIONS_KIND_VVFAT: 6778 visit_start_implicit_struct(m, (void**) &(*obj)->vvfat, sizeof(BlockdevOptionsVVFAT), &err); 6779 if (!err) { 6780 visit_type_BlockdevOptionsVVFAT_fields(m, &(*obj)->vvfat, &err); 6781 error_propagate(errp, err); 6782 err = NULL; 6783 visit_end_implicit_struct(m, &err); 6784 } 6785 break; 6786 case BLOCKDEV_OPTIONS_KIND_BOCHS: 6787 visit_start_implicit_struct(m, (void**) &(*obj)->bochs, sizeof(BlockdevOptionsGenericFormat), &err); 6788 if (!err) { 6789 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->bochs, &err); 6790 error_propagate(errp, err); 6791 err = NULL; 6792 visit_end_implicit_struct(m, &err); 6793 } 6794 break; 6795 case BLOCKDEV_OPTIONS_KIND_CLOOP: 6796 visit_start_implicit_struct(m, (void**) &(*obj)->cloop, sizeof(BlockdevOptionsGenericFormat), &err); 6797 if (!err) { 6798 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->cloop, &err); 6799 error_propagate(errp, err); 6800 err = NULL; 6801 visit_end_implicit_struct(m, &err); 6802 } 6803 break; 6804 case BLOCKDEV_OPTIONS_KIND_COW: 6805 visit_start_implicit_struct(m, (void**) &(*obj)->cow, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6806 if (!err) { 6807 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->cow, &err); 6808 error_propagate(errp, err); 6809 err = NULL; 6810 visit_end_implicit_struct(m, &err); 6811 } 6812 break; 6813 case BLOCKDEV_OPTIONS_KIND_DMG: 6814 visit_start_implicit_struct(m, (void**) &(*obj)->dmg, sizeof(BlockdevOptionsGenericFormat), &err); 6815 if (!err) { 6816 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->dmg, &err); 6817 error_propagate(errp, err); 6818 err = NULL; 6819 visit_end_implicit_struct(m, &err); 6820 } 6821 break; 6822 case BLOCKDEV_OPTIONS_KIND_PARALLELS: 6823 visit_start_implicit_struct(m, (void**) &(*obj)->parallels, sizeof(BlockdevOptionsGenericFormat), &err); 6824 if (!err) { 6825 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->parallels, &err); 6826 error_propagate(errp, err); 6827 err = NULL; 6828 visit_end_implicit_struct(m, &err); 6829 } 6830 break; 6831 case BLOCKDEV_OPTIONS_KIND_QCOW: 6832 visit_start_implicit_struct(m, (void**) &(*obj)->qcow, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6833 if (!err) { 6834 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->qcow, &err); 6835 error_propagate(errp, err); 6836 err = NULL; 6837 visit_end_implicit_struct(m, &err); 6838 } 6839 break; 6840 case BLOCKDEV_OPTIONS_KIND_QCOW2: 6841 visit_start_implicit_struct(m, (void**) &(*obj)->qcow2, sizeof(BlockdevOptionsQcow2), &err); 6842 if (!err) { 6843 visit_type_BlockdevOptionsQcow2_fields(m, &(*obj)->qcow2, &err); 6844 error_propagate(errp, err); 6845 err = NULL; 6846 visit_end_implicit_struct(m, &err); 6847 } 6848 break; 6849 case BLOCKDEV_OPTIONS_KIND_QED: 6850 visit_start_implicit_struct(m, (void**) &(*obj)->qed, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6851 if (!err) { 6852 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->qed, &err); 6853 error_propagate(errp, err); 6854 err = NULL; 6855 visit_end_implicit_struct(m, &err); 6856 } 6857 break; 6858 case BLOCKDEV_OPTIONS_KIND_RAW: 6859 visit_start_implicit_struct(m, (void**) &(*obj)->raw, sizeof(BlockdevOptionsGenericFormat), &err); 6860 if (!err) { 6861 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->raw, &err); 6862 error_propagate(errp, err); 6863 err = NULL; 6864 visit_end_implicit_struct(m, &err); 6865 } 6866 break; 6867 case BLOCKDEV_OPTIONS_KIND_VDI: 6868 visit_start_implicit_struct(m, (void**) &(*obj)->vdi, sizeof(BlockdevOptionsGenericFormat), &err); 6869 if (!err) { 6870 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vdi, &err); 6871 error_propagate(errp, err); 6872 err = NULL; 6873 visit_end_implicit_struct(m, &err); 6874 } 6875 break; 6876 case BLOCKDEV_OPTIONS_KIND_VHDX: 6877 visit_start_implicit_struct(m, (void**) &(*obj)->vhdx, sizeof(BlockdevOptionsGenericFormat), &err); 6878 if (!err) { 6879 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vhdx, &err); 6880 error_propagate(errp, err); 6881 err = NULL; 6882 visit_end_implicit_struct(m, &err); 6883 } 6884 break; 6885 case BLOCKDEV_OPTIONS_KIND_VMDK: 6886 visit_start_implicit_struct(m, (void**) &(*obj)->vmdk, sizeof(BlockdevOptionsGenericCOWFormat), &err); 6887 if (!err) { 6888 visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->vmdk, &err); 6889 error_propagate(errp, err); 6890 err = NULL; 6891 visit_end_implicit_struct(m, &err); 6892 } 6893 break; 6894 case BLOCKDEV_OPTIONS_KIND_VPC: 6895 visit_start_implicit_struct(m, (void**) &(*obj)->vpc, sizeof(BlockdevOptionsGenericFormat), &err); 6896 if (!err) { 6897 visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vpc, &err); 6898 error_propagate(errp, err); 6899 err = NULL; 6900 visit_end_implicit_struct(m, &err); 6901 } 6902 break; 6903 default: 6904 abort(); 6905 } 6906 } 6907 error_propagate(errp, err); 6908 err = NULL; 6909 } 6910 /* Always call end_struct if start_struct succeeded. */ 6911 visit_end_struct(m, &err); 6912 } 6913 error_propagate(errp, err); 6914 } 6915 } 6916 6917 void visit_type_BlockdevOptionsList(Visitor *m, BlockdevOptionsList ** obj, const char *name, Error **errp) 6918 { 6919 GenericList *i, **prev = (GenericList **)obj; 6920 Error *err = NULL; 6921 6922 if (!error_is_set(errp)) { 6923 visit_start_list(m, name, &err); 6924 if (!err) { 6925 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6926 BlockdevOptionsList *native_i = (BlockdevOptionsList *)i; 6927 visit_type_BlockdevOptions(m, &native_i->value, NULL, &err); 6928 } 6929 error_propagate(errp, err); 6930 err = NULL; 6931 6932 /* Always call end_list if start_list succeeded. */ 6933 visit_end_list(m, &err); 6934 } 6935 error_propagate(errp, err); 6936 } 6937 } 6938 6939 void visit_type_BlockdevRef(Visitor *m, BlockdevRef ** obj, const char *name, Error **errp) 6940 { 6941 Error *err = NULL; 6942 6943 if (!error_is_set(errp)) { 6944 visit_start_implicit_struct(m, (void**) obj, sizeof(BlockdevRef), &err); 6945 visit_get_next_type(m, (int*) &(*obj)->kind, BlockdevRef_qtypes, name, &err); 6946 switch ((*obj)->kind) { 6947 case BLOCKDEV_REF_KIND_DEFINITION: 6948 visit_type_BlockdevOptions(m, &(*obj)->definition, name, &err); 6949 break; 6950 case BLOCKDEV_REF_KIND_REFERENCE: 6951 visit_type_str(m, &(*obj)->reference, name, &err); 6952 break; 6953 default: 6954 abort(); 6955 } 6956 error_propagate(errp, err); 6957 err = NULL; 6958 visit_end_implicit_struct(m, &err); 6959 } 6960 } 6961 6962 void visit_type_BlockdevRefList(Visitor *m, BlockdevRefList ** obj, const char *name, Error **errp) 6963 { 6964 GenericList *i, **prev = (GenericList **)obj; 6965 Error *err = NULL; 6966 6967 if (!error_is_set(errp)) { 6968 visit_start_list(m, name, &err); 6969 if (!err) { 6970 for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) { 6971 BlockdevRefList *native_i = (BlockdevRefList *)i; 6972 visit_type_BlockdevRef(m, &native_i->value, NULL, &err); 6973 } 6974 error_propagate(errp, err); 6975 err = NULL; 6976 6977 /* Always call end_list if start_list succeeded. */ 6978 visit_end_list(m, &err); 6979 } 6980 error_propagate(errp, err); 6981 } 6982 } 6983