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

json-parser.h (1176B)


      1/*
      2 * JSON Parser
      3 *
      4 * Copyright IBM, Corp. 2009
      5 *
      6 * Authors:
      7 *  Anthony Liguori   <aliguori@us.ibm.com>
      8 *
      9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
     10 * See the COPYING.LIB file in the top-level directory.
     11 *
     12 */
     13
     14#ifndef QAPI_QMP_JSON_PARSER_H
     15#define QAPI_QMP_JSON_PARSER_H
     16
     17typedef struct JSONLexer {
     18    int start_state, state;
     19    GString *token;
     20    int x, y;
     21} JSONLexer;
     22
     23typedef struct JSONMessageParser {
     24    void (*emit)(void *opaque, QObject *json, Error *err);
     25    void *opaque;
     26    va_list *ap;
     27    JSONLexer lexer;
     28    int brace_count;
     29    int bracket_count;
     30    GQueue tokens;
     31    uint64_t token_size;
     32} JSONMessageParser;
     33
     34void json_message_parser_init(JSONMessageParser *parser,
     35                              void (*emit)(void *opaque, QObject *json,
     36                                           Error *err),
     37                              void *opaque, va_list *ap);
     38
     39void json_message_parser_feed(JSONMessageParser *parser,
     40                             const char *buffer, size_t size);
     41
     42void json_message_parser_flush(JSONMessageParser *parser);
     43
     44void json_message_parser_destroy(JSONMessageParser *parser);
     45
     46#endif