xref: /openbmc/qemu/include/qapi/qmp/qlit.h (revision 4bdc24fa018901892bb8a5bd1808ebd605f4c64d)
128035bcdSMarc-André Lureau /*
228035bcdSMarc-André Lureau  * Copyright IBM, Corp. 2009
328035bcdSMarc-André Lureau  * Copyright (c) 2013, 2015, 2017 Red Hat Inc.
428035bcdSMarc-André Lureau  *
528035bcdSMarc-André Lureau  * Authors:
628035bcdSMarc-André Lureau  *  Anthony Liguori   <aliguori@us.ibm.com>
728035bcdSMarc-André Lureau  *  Markus Armbruster <armbru@redhat.com>
828035bcdSMarc-André Lureau  *  Marc-André Lureau <marcandre.lureau@redhat.com>
928035bcdSMarc-André Lureau  *
1028035bcdSMarc-André Lureau  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
1128035bcdSMarc-André Lureau  * See the COPYING.LIB file in the top-level directory.
1228035bcdSMarc-André Lureau  *
1328035bcdSMarc-André Lureau  */
1428035bcdSMarc-André Lureau #ifndef QLIT_H
1528035bcdSMarc-André Lureau #define QLIT_H
1628035bcdSMarc-André Lureau 
1728035bcdSMarc-André Lureau #include "qobject.h"
1828035bcdSMarc-André Lureau 
19082696e7SMarc-André Lureau typedef struct QLitDictEntry QLitDictEntry;
20082696e7SMarc-André Lureau typedef struct QLitObject QLitObject;
2128035bcdSMarc-André Lureau 
22082696e7SMarc-André Lureau struct QLitObject {
233d96ea44SMarc-André Lureau     QType type;
2428035bcdSMarc-André Lureau     union {
256c6084c1SMarc-André Lureau         bool qbool;
2628035bcdSMarc-André Lureau         int64_t qnum;
2728035bcdSMarc-André Lureau         const char *qstr;
28082696e7SMarc-André Lureau         QLitDictEntry *qdict;
29082696e7SMarc-André Lureau         QLitObject *qlist;
3028035bcdSMarc-André Lureau     } value;
3128035bcdSMarc-André Lureau };
3228035bcdSMarc-André Lureau 
33082696e7SMarc-André Lureau struct QLitDictEntry {
3428035bcdSMarc-André Lureau     const char *key;
35082696e7SMarc-André Lureau     QLitObject value;
3628035bcdSMarc-André Lureau };
3728035bcdSMarc-André Lureau 
386c6084c1SMarc-André Lureau #define QLIT_QNULL \
396c6084c1SMarc-André Lureau     { .type = QTYPE_QNULL }
406c6084c1SMarc-André Lureau #define QLIT_QBOOL(val) \
416c6084c1SMarc-André Lureau     { .type = QTYPE_QBOOL, .value.qbool = (val) }
4228035bcdSMarc-André Lureau #define QLIT_QNUM(val) \
43d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QNUM, .value.qnum = (val) }
4428035bcdSMarc-André Lureau #define QLIT_QSTR(val) \
45d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QSTRING, .value.qstr = (val) }
4628035bcdSMarc-André Lureau #define QLIT_QDICT(val) \
47d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QDICT, .value.qdict = (val) }
4828035bcdSMarc-André Lureau #define QLIT_QLIST(val) \
49d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QLIST, .value.qlist = (val) }
5028035bcdSMarc-André Lureau 
51e2346a19SMarc-André Lureau bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs);
5228035bcdSMarc-André Lureau 
53*3cf42b8bSMarc-André Lureau QObject *qobject_from_qlit(const QLitObject *qlit);
54*3cf42b8bSMarc-André Lureau 
5528035bcdSMarc-André Lureau #endif /* QLIT_H */
56