These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / qobject / qfloat.c
1 /*
2  * QFloat Module
3  *
4  * Copyright IBM, Corp. 2009
5  *
6  * Authors:
7  *  Anthony Liguori   <aliguori@us.ibm.com>
8  *
9  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10  * See the COPYING.LIB file in the top-level directory.
11  *
12  */
13
14 #include "qemu/osdep.h"
15 #include "qapi/qmp/qfloat.h"
16 #include "qapi/qmp/qobject.h"
17 #include "qemu-common.h"
18
19 /**
20  * qfloat_from_int(): Create a new QFloat from a float
21  *
22  * Return strong reference.
23  */
24 QFloat *qfloat_from_double(double value)
25 {
26     QFloat *qf;
27
28     qf = g_malloc(sizeof(*qf));
29     qobject_init(QOBJECT(qf), QTYPE_QFLOAT);
30     qf->value = value;
31
32     return qf;
33 }
34
35 /**
36  * qfloat_get_double(): Get the stored float
37  */
38 double qfloat_get_double(const QFloat *qf)
39 {
40     return qf->value;
41 }
42
43 /**
44  * qobject_to_qfloat(): Convert a QObject into a QFloat
45  */
46 QFloat *qobject_to_qfloat(const QObject *obj)
47 {
48     if (!obj || qobject_type(obj) != QTYPE_QFLOAT) {
49         return NULL;
50     }
51     return container_of(obj, QFloat, base);
52 }
53
54 /**
55  * qfloat_destroy_obj(): Free all memory allocated by a
56  * QFloat object
57  */
58 void qfloat_destroy_obj(QObject *obj)
59 {
60     assert(obj != NULL);
61     g_free(qobject_to_qfloat(obj));
62 }