mirror of
https://github.com/xemu-project/xemu.git
synced 2024-12-03 17:11:01 +00:00
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: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <1462380558-2030-3-git-send-email-armbru@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
parent
17b74b9867
commit
b72fe9e690
@ -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);
|
||||
|
@ -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,7 +95,10 @@ const char *qjson_get_str(QJSON *json)
|
||||
|
||||
QJSON *qjson_new(void)
|
||||
{
|
||||
QJSON *json = QJSON(object_new(TYPE_QJSON));
|
||||
QJSON *json = g_new0(QJSON, 1);
|
||||
|
||||
json->str = qstring_from_str("{ ");
|
||||
json->omit_comma = true;
|
||||
return json;
|
||||
}
|
||||
|
||||
@ -109,32 +107,7 @@ void qjson_finish(QJSON *json)
|
||||
json_end_object(json);
|
||||
}
|
||||
|
||||
static void qjson_initfn(Object *obj)
|
||||
void qjson_destroy(QJSON *json)
|
||||
{
|
||||
QJSON *json = QJSON(obj);
|
||||
|
||||
json->str = qstring_from_str("{ ");
|
||||
json->omit_comma = true;
|
||||
g_free(json);
|
||||
}
|
||||
|
||||
static void qjson_finalizefn(Object *obj)
|
||||
{
|
||||
QJSON *json = QJSON(obj);
|
||||
|
||||
qobject_decref(QOBJECT(json->str));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
type_register_static(&qjson_type_info);
|
||||
}
|
||||
|
||||
type_init(qjson_register_types)
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user