xref: /qemu/include/qobject/qlit.h (revision d5cd8fbf130312bea91823c41de87d55818d599b)
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 {
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 
3828035bcdSMarc-André Lureau #define QLIT_QNUM(val) \
39*d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QNUM, .value.qnum = (val) }
4028035bcdSMarc-André Lureau #define QLIT_QSTR(val) \
41*d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QSTRING, .value.qstr = (val) }
4228035bcdSMarc-André Lureau #define QLIT_QDICT(val) \
43*d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QDICT, .value.qdict = (val) }
4428035bcdSMarc-André Lureau #define QLIT_QLIST(val) \
45*d5cd8fbfSMarc-André Lureau     { .type = QTYPE_QLIST, .value.qlist = (val) }
4628035bcdSMarc-André Lureau 
47082696e7SMarc-André Lureau int compare_litqobj_to_qobj(QLitObject *lhs, QObject *rhs);
4828035bcdSMarc-André Lureau 
4928035bcdSMarc-André Lureau #endif /* QLIT_H */
50