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