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