cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

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 */