Home | History | Annotate | Download | only in qobject
      1 /*
      2  * QBool Module
      3  *
      4  * Copyright IBM, Corp. 2009
      5  *
      6  * Authors:
      7  *  Anthony Liguori   <aliguori (at) 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 "qapi/qmp/qbool.h"
     15 #include "qapi/qmp/qobject.h"
     16 #include "qemu-common.h"
     17 
     18 static void qbool_destroy_obj(QObject *obj);
     19 
     20 static const QType qbool_type = {
     21     .code = QTYPE_QBOOL,
     22     .destroy = qbool_destroy_obj,
     23 };
     24 
     25 /**
     26  * qbool_from_int(): Create a new QBool from an int
     27  *
     28  * Return strong reference.
     29  */
     30 QBool *qbool_from_int(int value)
     31 {
     32     QBool *qb;
     33 
     34     qb = g_malloc(sizeof(*qb));
     35     qb->value = value;
     36     QOBJECT_INIT(qb, &qbool_type);
     37 
     38     return qb;
     39 }
     40 
     41 /**
     42  * qbool_get_int(): Get the stored int
     43  */
     44 int qbool_get_int(const QBool *qb)
     45 {
     46     return qb->value;
     47 }
     48 
     49 /**
     50  * qobject_to_qbool(): Convert a QObject into a QBool
     51  */
     52 QBool *qobject_to_qbool(const QObject *obj)
     53 {
     54     if (qobject_type(obj) != QTYPE_QBOOL)
     55         return NULL;
     56 
     57     return container_of(obj, QBool, base);
     58 }
     59 
     60 /**
     61  * qbool_destroy_obj(): Free all memory allocated by a
     62  * QBool object
     63  */
     64 static void qbool_destroy_obj(QObject *obj)
     65 {
     66     assert(obj != NULL);
     67     g_free(qobject_to_qbool(obj));
     68 }
     69