File:  [Qemu by Fabrice Bellard] / qemu / json-lexer.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:35:09 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0150, qemu0141, qemu0140, qemu0130, qemu0125, qemu0124, qemu0123, qemu0122, qemu0121, qemu0120, HEAD
qemu 0.12.0

    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: } JSONTokenType;
   29: 
   30: typedef struct JSONLexer JSONLexer;
   31: 
   32: typedef void (JSONLexerEmitter)(JSONLexer *, QString *, JSONTokenType, int x, int y);
   33: 
   34: struct JSONLexer
   35: {
   36:     JSONLexerEmitter *emit;
   37:     int state;
   38:     QString *token;
   39:     int x, y;
   40: };
   41: 
   42: void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func);
   43: 
   44: int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
   45: 
   46: int json_lexer_flush(JSONLexer *lexer);
   47: 
   48: void json_lexer_destroy(JSONLexer *lexer);
   49: 
   50: #endif

unix.superglobalmegacorp.com