xref: /qemu/include/qobject/qlit.h (revision 6c6084c1b0802f5265d5c7dc27f7125d9fd1cceb)
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 "qapi-types.h"
1828035bcdSMarc-André Lureau #include "qobject.h"
1928035bcdSMarc-André Lureau 
20082696e7SMarc-André Lureau typedef struct QLitDictEntry QLitDictEntry;
21082696e7SMarc-André Lureau typedef struct QLitObject QLitObject;
2228035bcdSMarc-André Lureau 
23082696e7SMarc-André Lureau struct QLitObject {
2428035bcdSMarc-André Lureau     int type;
2528035bcdSMarc-André Lureau     union {
26*6c6084c1SMarc-André Lureau         bool qbool;
2728035bcdSMarc-André Lureau         int64_t qnum;
2828035bcdSMarc-André Lureau         const char *qstr;
29082696e7SMarc-André Lureau         QLitDictEntry *qdict;
30082696e7SMarc-André Lureau         QLitObject *qlist;
3128035bcdSMarc-André Lureau     } value;
3228035bcdSMarc-André Lureau };
3328035bcdSMarc-André Lureau 
34082696e7SMarc-André Lureau struct QLitDictEntry {
3528035bcdSMarc-André Lureau     const char *key;
36082696e7SMarc-André Lureau     QLitObject value;
3728035bcdSMarc-André Lureau };
3828035bcdSMarc-André Lureau 
39*6c6084c1SMarc-André Lureau #define QLIT_QNULL \
40*6c6084c1SMarc-André Lureau     { .type = QTYPE_QNULL }
41*6c6084c1SMarc-André Lureau #define QLIT_QBOOL(val) \
42*6c6084c1SMarc-André Lureau     { .type = QTYPE_QBOOL, .value.qbool = (val) }
4328035bcdSMarc-André Lureau #define QLIT_QNUM(val) \
44d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QNUM, .value.qnum = (val) }
4528035bcdSMarc-André Lureau #define QLIT_QSTR(val) \
46d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QSTRING, .value.qstr = (val) }
4728035bcdSMarc-André Lureau #define QLIT_QDICT(val) \
48d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QDICT, .value.qdict = (val) }
4928035bcdSMarc-André Lureau #define QLIT_QLIST(val) \
50d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QLIST, .value.qlist = (val) }
5128035bcdSMarc-André Lureau 
52e2346a19SMarc-André Lureau bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs);
5328035bcdSMarc-André Lureau 
5428035bcdSMarc-André Lureau #endif /* QLIT_H */
55