Commit b72fe9e6 authored by Markus Armbruster's avatar Markus Armbruster Committed by Amit Shah
Browse files

migration/qjson: Drop gratuitous use of QOM



All the use of QOM buys us here is the ability to destroy the thing
with object_unref(OBJECT(vmdesc)).  Not worth the notational overhead.

Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <1462380558-2030-3-git-send-email-armbru@redhat.com>
Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
parent 17b74b98
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -13,10 +13,10 @@
#ifndef QEMU_QJSON_H
#define QEMU_QJSON_H

#define TYPE_QJSON "QJSON"
typedef struct QJSON QJSON;

QJSON *qjson_new(void);
void qjson_destroy(QJSON *json);
void json_prop_str(QJSON *json, const char *name, const char *str);
void json_prop_int(QJSON *json, const char *name, int64_t val);
void json_end_array(QJSON *json);
+6 −33
Original line number Diff line number Diff line
@@ -26,17 +26,12 @@
#include "qemu/osdep.h"
#include "qapi/qmp/qstring.h"
#include "migration/qjson.h"
#include "qemu/module.h"
#include "qom/object.h"

struct QJSON {
    Object obj;
    QString *str;
    bool omit_comma;
};

#define QJSON(obj) OBJECT_CHECK(QJSON, (obj), TYPE_QJSON)

static void json_emit_element(QJSON *json, const char *name)
{
    /* Check whether we need to print a , before an element */
@@ -100,41 +95,19 @@ const char *qjson_get_str(QJSON *json)

QJSON *qjson_new(void)
{
    QJSON *json = QJSON(object_new(TYPE_QJSON));
    return json;
}

void qjson_finish(QJSON *json)
{
    json_end_object(json);
}

static void qjson_initfn(Object *obj)
{
    QJSON *json = QJSON(obj);
    QJSON *json = g_new0(QJSON, 1);

    json->str = qstring_from_str("{ ");
    json->omit_comma = true;
    return json;
}

static void qjson_finalizefn(Object *obj)
void qjson_finish(QJSON *json)
{
    QJSON *json = QJSON(obj);

    qobject_decref(QOBJECT(json->str));
    json_end_object(json);
}

static const TypeInfo qjson_type_info = {
    .name = TYPE_QJSON,
    .parent = TYPE_OBJECT,
    .instance_size = sizeof(QJSON),
    .instance_init = qjson_initfn,
    .instance_finalize = qjson_finalizefn,
};

static void qjson_register_types(void)
void qjson_destroy(QJSON *json)
{
    type_register_static(&qjson_type_info);
    g_free(json);
}

type_init(qjson_register_types)
+1 −1
Original line number Diff line number Diff line
@@ -1115,7 +1115,7 @@ void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only)
        qemu_put_be32(f, vmdesc_len);
        qemu_put_buffer(f, (uint8_t *)qjson_get_str(vmdesc), vmdesc_len);
    }
    object_unref(OBJECT(vmdesc));
    qjson_destroy(vmdesc);

    qemu_fflush(f);
}