blob: d7d1b3021fa39778130412e51dd52c07bf9a8614 [file] [log] [blame]
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -03001/*
Luiz Capitulino41836a92010-05-12 16:34:42 -03002 * QInt Module
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -03003 *
4 * Copyright (C) 2009 Red Hat Inc.
5 *
6 * Authors:
7 * Luiz Capitulino <lcapitulino@redhat.com>
8 *
Luiz Capitulino41836a92010-05-12 16:34:42 -03009 * 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.
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030011 */
Luiz Capitulino41836a92010-05-12 16:34:42 -030012
Peter Maydellf2ad72b2016-01-29 17:50:01 +000013#include "qemu/osdep.h"
Paolo Bonzini7b1b5d12012-12-17 18:19:43 +010014#include "qapi/qmp/qint.h"
15#include "qapi/qmp/qobject.h"
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030016#include "qemu-common.h"
17
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030018/**
19 * qint_from_int(): Create a new QInt from an int64_t
20 *
21 * Return strong reference.
22 */
23QInt *qint_from_int(int64_t value)
24{
25 QInt *qi;
26
Anthony Liguori7267c092011-08-20 22:09:37 -050027 qi = g_malloc(sizeof(*qi));
Eric Blake55e18192015-12-01 22:20:45 -070028 qobject_init(QOBJECT(qi), QTYPE_QINT);
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030029 qi->value = value;
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030030
31 return qi;
32}
33
34/**
35 * qint_get_int(): Get the stored integer
36 */
37int64_t qint_get_int(const QInt *qi)
38{
39 return qi->value;
40}
41
42/**
43 * qobject_to_qint(): Convert a QObject into a QInt
44 */
45QInt *qobject_to_qint(const QObject *obj)
46{
Markus Armbrusterfcf73f62015-10-15 16:15:35 +020047 if (!obj || qobject_type(obj) != QTYPE_QINT) {
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030048 return NULL;
Markus Armbrusterfcf73f62015-10-15 16:15:35 +020049 }
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030050 return container_of(obj, QInt, base);
51}
52
53/**
54 * qint_destroy_obj(): Free all memory allocated by a
55 * QInt object
56 */
Eric Blake55e18192015-12-01 22:20:45 -070057void qint_destroy_obj(QObject *obj)
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030058{
59 assert(obj != NULL);
Anthony Liguori7267c092011-08-20 22:09:37 -050060 g_free(qobject_to_qint(obj));
Luiz Capitulino6b8d1ec2009-08-28 15:27:05 -030061}