xref: /openbmc/qemu/include/qapi/qmp/qnum.h (revision 80adf54e)
1 /*
2  * QNum Module
3  *
4  * Copyright (C) 2009 Red Hat Inc.
5  *
6  * Authors:
7  *  Luiz Capitulino <lcapitulino@redhat.com>
8  *  Anthony Liguori <aliguori@us.ibm.com>
9  *  Marc-André Lureau <marcandre.lureau@redhat.com>
10  *
11  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
12  * See the COPYING.LIB file in the top-level directory.
13  */
14 
15 #ifndef QNUM_H
16 #define QNUM_H
17 
18 #include "qapi/qmp/qobject.h"
19 
20 typedef enum {
21     QNUM_I64,
22     QNUM_U64,
23     QNUM_DOUBLE
24 } QNumKind;
25 
26 typedef struct QNum {
27     QObject base;
28     QNumKind kind;
29     union {
30         int64_t i64;
31         uint64_t u64;
32         double dbl;
33     } u;
34 } QNum;
35 
36 QNum *qnum_from_int(int64_t value);
37 QNum *qnum_from_uint(uint64_t value);
38 QNum *qnum_from_double(double value);
39 
40 bool qnum_get_try_int(const QNum *qn, int64_t *val);
41 int64_t qnum_get_int(const QNum *qn);
42 
43 bool qnum_get_try_uint(const QNum *qn, uint64_t *val);
44 uint64_t qnum_get_uint(const QNum *qn);
45 
46 double qnum_get_double(QNum *qn);
47 
48 char *qnum_to_string(QNum *qn);
49 
50 QNum *qobject_to_qnum(const QObject *obj);
51 void qnum_destroy_obj(QObject *obj);
52 
53 #endif /* QNUM_H */
54