diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2009-11-11 10:37:39 -0600 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-11-17 08:49:39 -0600 |
commit | f7e6b1927f00631b1a2bf59e597ea4640dbddb31 (patch) | |
tree | d822015b84b41953a598756aa0014ed6917ed58b | |
parent | 9c9efb6b2962de5eec1cf0e394a96a55c36f714d (diff) |
Add a QBool type
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | qbool.c | 76 | ||||
-rw-r--r-- | qbool.h | 29 | ||||
-rw-r--r-- | qobject.h | 1 |
4 files changed, 107 insertions, 1 deletions
@@ -137,7 +137,7 @@ obj-y += buffered_file.o migration.o migration-tcp.o qemu-sockets.o obj-y += qemu-char.o aio.o savevm.o obj-y += msmouse.o ps2.o obj-y += qdev.o qdev-properties.o -obj-y += qint.o qstring.o qdict.o qlist.o qfloat.o +obj-y += qint.o qstring.o qdict.o qlist.o qfloat.o qbool.o obj-y += qemu-config.o block-migration.o obj-$(CONFIG_BRLAPI) += baum.o diff --git a/qbool.c b/qbool.c new file mode 100644 index 0000000000..5ab734c2c7 --- /dev/null +++ b/qbool.c @@ -0,0 +1,76 @@ +/* + * QBool Module + * + * Copyright (C) 2009 Red Hat Inc. + * + * Authors: + * Luiz Capitulino <lcapitulino@redhat.com> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Copyright IBM, Corp. 2009 + * + * Authors: + * Anthony Liguori <aliguori@us.ibm.com> + * + * 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 "qbool.h" +#include "qobject.h" +#include "qemu-common.h" + +static void qbool_destroy_obj(QObject *obj); + +static const QType qbool_type = { + .code = QTYPE_QBOOL, + .destroy = qbool_destroy_obj, +}; + +/** + * qbool_from_int(): Create a new QBool from an int + * + * Return strong reference. + */ +QBool *qbool_from_int(int value) +{ + QBool *qb; + + qb = qemu_malloc(sizeof(*qb)); + qb->value = value; + QOBJECT_INIT(qb, &qbool_type); + + return qb; +} + +/** + * qbool_get_int(): Get the stored int + */ +int qbool_get_int(const QBool *qb) +{ + return qb->value; +} + +/** + * qobject_to_qbool(): Convert a QObject into a QBool + */ +QBool *qobject_to_qbool(const QObject *obj) +{ + if (qobject_type(obj) != QTYPE_QBOOL) + return NULL; + + return container_of(obj, QBool, base); +} + +/** + * qbool_destroy_obj(): Free all memory allocated by a + * QBool object + */ +static void qbool_destroy_obj(QObject *obj) +{ + assert(obj != NULL); + qemu_free(qobject_to_qbool(obj)); +} diff --git a/qbool.h b/qbool.h new file mode 100644 index 0000000000..fe66fcd455 --- /dev/null +++ b/qbool.h @@ -0,0 +1,29 @@ +/* + * QBool Module + * + * Copyright IBM, Corp. 2009 + * + * Authors: + * Anthony Liguori <aliguori@us.ibm.com> + * + * 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. + * + */ + +#ifndef QBOOL_H +#define QBOOL_H + +#include <stdint.h> +#include "qobject.h" + +typedef struct QBool { + QObject_HEAD; + int value; +} QBool; + +QBool *qbool_from_int(int value); +int qbool_get_int(const QBool *qb); +QBool *qobject_to_qbool(const QObject *obj); + +#endif /* QBOOL_H */ @@ -42,6 +42,7 @@ typedef enum { QTYPE_QDICT, QTYPE_QLIST, QTYPE_QFLOAT, + QTYPE_QBOOL, } qtype_code; struct QObject; |