blob: 450fa9ea912e0578047ff856e1eaf54e9f3d02c2 [file] [log] [blame]
/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
/*
* Schema-defined QAPI visitors
*
* Copyright IBM, Corp. 2011
* Copyright (C) 2014-2018 Red Hat, Inc.
*
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*/
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "qapi/error.h"
#include "qapi/qmp/qerror.h"
#include "qapi-visit-transaction.h"
void visit_type_Abort_members(Visitor *v, Abort *obj, Error **errp)
{
Error *err = NULL;
error_propagate(errp, err);
}
void visit_type_Abort(Visitor *v, const char *name, Abort **obj, Error **errp)
{
Error *err = NULL;
visit_start_struct(v, name, (void **)obj, sizeof(Abort), &err);
if (err) {
goto out;
}
if (!*obj) {
goto out_obj;
}
visit_type_Abort_members(v, *obj, &err);
if (err) {
goto out_obj;
}
visit_check_struct(v, &err);
out_obj:
visit_end_struct(v, (void **)obj);
if (err && visit_is_input(v)) {
qapi_free_Abort(*obj);
*obj = NULL;
}
out:
error_propagate(errp, err);
}
void visit_type_ActionCompletionMode(Visitor *v, const char *name, ActionCompletionMode *obj, Error **errp)
{
int value = *obj;
visit_type_enum(v, name, &value, &ActionCompletionMode_lookup, errp);
*obj = value;
}
void visit_type_q_obj_Abort_wrapper_members(Visitor *v, q_obj_Abort_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_Abort(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmapAdd_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockDirtyBitmapAdd(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockDirtyBitmap_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmap_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockDirtyBitmap(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockdevBackup_wrapper_members(Visitor *v, q_obj_BlockdevBackup_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockdevBackup(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockdevSnapshot_wrapper_members(Visitor *v, q_obj_BlockdevSnapshot_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockdevSnapshot(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotInternal_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockdevSnapshotInternal(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotSync_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_BlockdevSnapshotSync(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_DriveBackup_wrapper_members(Visitor *v, q_obj_DriveBackup_wrapper *obj, Error **errp)
{
Error *err = NULL;
visit_type_DriveBackup(v, "data", &obj->data, &err);
if (err) {
goto out;
}
out:
error_propagate(errp, err);
}
void visit_type_TransactionActionKind(Visitor *v, const char *name, TransactionActionKind *obj, Error **errp)
{
int value = *obj;
visit_type_enum(v, name, &value, &TransactionActionKind_lookup, errp);
*obj = value;
}
void visit_type_TransactionAction_members(Visitor *v, TransactionAction *obj, Error **errp)
{
Error *err = NULL;
visit_type_TransactionActionKind(v, "type", &obj->type, &err);
if (err) {
goto out;
}
switch (obj->type) {
case TRANSACTION_ACTION_KIND_ABORT:
visit_type_q_obj_Abort_wrapper_members(v, &obj->u.abort, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ADD:
visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(v, &obj->u.block_dirty_bitmap_add, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR:
visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_clear, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCKDEV_BACKUP:
visit_type_q_obj_BlockdevBackup_wrapper_members(v, &obj->u.blockdev_backup, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT:
visit_type_q_obj_BlockdevSnapshot_wrapper_members(v, &obj->u.blockdev_snapshot, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC:
visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(v, &obj->u.blockdev_snapshot_internal_sync, &err);
break;
case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC:
visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(v, &obj->u.blockdev_snapshot_sync, &err);
break;
case TRANSACTION_ACTION_KIND_DRIVE_BACKUP:
visit_type_q_obj_DriveBackup_wrapper_members(v, &obj->u.drive_backup, &err);
break;
default:
abort();
}
out:
error_propagate(errp, err);
}
void visit_type_TransactionAction(Visitor *v, const char *name, TransactionAction **obj, Error **errp)
{
Error *err = NULL;
visit_start_struct(v, name, (void **)obj, sizeof(TransactionAction), &err);
if (err) {
goto out;
}
if (!*obj) {
goto out_obj;
}
visit_type_TransactionAction_members(v, *obj, &err);
if (err) {
goto out_obj;
}
visit_check_struct(v, &err);
out_obj:
visit_end_struct(v, (void **)obj);
if (err && visit_is_input(v)) {
qapi_free_TransactionAction(*obj);
*obj = NULL;
}
out:
error_propagate(errp, err);
}
void visit_type_TransactionProperties_members(Visitor *v, TransactionProperties *obj, Error **errp)
{
Error *err = NULL;
if (visit_optional(v, "completion-mode", &obj->has_completion_mode)) {
visit_type_ActionCompletionMode(v, "completion-mode", &obj->completion_mode, &err);
if (err) {
goto out;
}
}
out:
error_propagate(errp, err);
}
void visit_type_TransactionProperties(Visitor *v, const char *name, TransactionProperties **obj, Error **errp)
{
Error *err = NULL;
visit_start_struct(v, name, (void **)obj, sizeof(TransactionProperties), &err);
if (err) {
goto out;
}
if (!*obj) {
goto out_obj;
}
visit_type_TransactionProperties_members(v, *obj, &err);
if (err) {
goto out_obj;
}
visit_check_struct(v, &err);
out_obj:
visit_end_struct(v, (void **)obj);
if (err && visit_is_input(v)) {
qapi_free_TransactionProperties(*obj);
*obj = NULL;
}
out:
error_propagate(errp, err);
}
void visit_type_TransactionActionList(Visitor *v, const char *name, TransactionActionList **obj, Error **errp)
{
Error *err = NULL;
TransactionActionList *tail;
size_t size = sizeof(**obj);
visit_start_list(v, name, (GenericList **)obj, size, &err);
if (err) {
goto out;
}
for (tail = *obj; tail;
tail = (TransactionActionList *)visit_next_list(v, (GenericList *)tail, size)) {
visit_type_TransactionAction(v, NULL, &tail->value, &err);
if (err) {
break;
}
}
if (!err) {
visit_check_list(v, &err);
}
visit_end_list(v, (void **)obj);
if (err && visit_is_input(v)) {
qapi_free_TransactionActionList(*obj);
*obj = NULL;
}
out:
error_propagate(errp, err);
}
void visit_type_q_obj_transaction_arg_members(Visitor *v, q_obj_transaction_arg *obj, Error **errp)
{
Error *err = NULL;
visit_type_TransactionActionList(v, "actions", &obj->actions, &err);
if (err) {
goto out;
}
if (visit_optional(v, "properties", &obj->has_properties)) {
visit_type_TransactionProperties(v, "properties", &obj->properties, &err);
if (err) {
goto out;
}
}
out:
error_propagate(errp, err);
}
/* Dummy declaration to prevent empty .o file */
char dummy_qapi_visit_transaction_c;