qemu/qobject/qfloat.c
<<
>>
Prefs
   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 */
  24QFloat *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 */
  38double 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 */
  46QFloat *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 */
  58void qfloat_destroy_obj(QObject *obj)
  59{
  60    assert(obj != NULL);
  61    g_free(qobject_to_qfloat(obj));
  62}
  63