qlit.h (1344B)
1/* 2 * Copyright IBM, Corp. 2009 3 * Copyright (c) 2013, 2015, 2017 Red Hat Inc. 4 * 5 * Authors: 6 * Anthony Liguori <aliguori@us.ibm.com> 7 * Markus Armbruster <armbru@redhat.com> 8 * Marc-André Lureau <marcandre.lureau@redhat.com> 9 * 10 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. 11 * See the COPYING.LIB file in the top-level directory. 12 * 13 */ 14#ifndef QLIT_H 15#define QLIT_H 16 17#include "qobject.h" 18 19typedef struct QLitDictEntry QLitDictEntry; 20typedef struct QLitObject QLitObject; 21 22struct QLitObject { 23 QType type; 24 union { 25 bool qbool; 26 int64_t qnum; 27 const char *qstr; 28 QLitDictEntry *qdict; 29 QLitObject *qlist; 30 } value; 31}; 32 33struct QLitDictEntry { 34 const char *key; 35 QLitObject value; 36}; 37 38#define QLIT_QNULL \ 39 { .type = QTYPE_QNULL } 40#define QLIT_QBOOL(val) \ 41 { .type = QTYPE_QBOOL, .value.qbool = (val) } 42#define QLIT_QNUM(val) \ 43 { .type = QTYPE_QNUM, .value.qnum = (val) } 44#define QLIT_QSTR(val) \ 45 { .type = QTYPE_QSTRING, .value.qstr = (val) } 46#define QLIT_QDICT(val) \ 47 { .type = QTYPE_QDICT, .value.qdict = (val) } 48#define QLIT_QLIST(val) \ 49 { .type = QTYPE_QLIST, .value.qlist = (val) } 50 51bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs); 52 53QObject *qobject_from_qlit(const QLitObject *qlit); 54 55#endif /* QLIT_H */