1/* 2 * QInt Module 3 * 4 * Copyright (C) 2009 Red Hat Inc. 5 * 6 * Authors: 7 * Luiz Capitulino <lcapitulino@redhat.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#include "qemu/osdep.h" 14#include "qapi/qmp/qint.h" 15#include "qapi/qmp/qobject.h" 16#include "qemu-common.h" 17 18/** 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 27 qi = g_malloc(sizeof(*qi)); 28 qobject_init(QOBJECT(qi), QTYPE_QINT); 29 qi->value = value; 30 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{ 47 if (!obj || qobject_type(obj) != QTYPE_QINT) { 48 return NULL; 49 } 50 return container_of(obj, QInt, base); 51} 52 53/** 54 * qint_destroy_obj(): Free all memory allocated by a 55 * QInt object 56 */ 57void qint_destroy_obj(QObject *obj) 58{ 59 assert(obj != NULL); 60 g_free(qobject_to_qint(obj)); 61} 62