File:  [Qemu by Fabrice Bellard] / qemu / json-lexer.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:56:51 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, qemu1000, qemu0151, HEAD
qemu 0.15.1

    1: /*
    2:  * JSON lexer
    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 QEMU_JSON_LEXER_H
   15: #define QEMU_JSON_LEXER_H
   16: 
   17: #include "qstring.h"
   18: #include "qlist.h"
   19: 
   20: typedef enum json_token_type {
   21:     JSON_OPERATOR = 100,
   22:     JSON_INTEGER,
   23:     JSON_FLOAT,
   24:     JSON_KEYWORD,
   25:     JSON_STRING,
   26:     JSON_ESCAPE,
   27:     JSON_SKIP,
   28:     JSON_ERROR,
   29: } JSONTokenType;
   30: 
   31: typedef struct JSONLexer JSONLexer;
   32: 
   33: typedef void (JSONLexerEmitter)(JSONLexer *, QString *, JSONTokenType, int x, int y);
   34: 
   35: struct JSONLexer
   36: {
   37:     JSONLexerEmitter *emit;
   38:     int state;
   39:     QString *token;
   40:     int x, y;
   41: };
   42: 
   43: void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func);
   44: 
   45: int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
   46: 
   47: int json_lexer_flush(JSONLexer *lexer);
   48: 
   49: void json_lexer_destroy(JSONLexer *lexer);
   50: 
   51: #endif

unix.superglobalmegacorp.com