Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 51 lines (39 sloc) 0.977 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
/*
* JSON lexer
*
* Copyright IBM, Corp. 2009
*
* Authors:
* Anthony Liguori <aliguori@us.ibm.com>
*
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*
*/

#ifndef QEMU_JSON_LEXER_H
#define QEMU_JSON_LEXER_H

#include "qstring.h"
#include "qlist.h"

typedef enum json_token_type {
    JSON_OPERATOR = 100,
    JSON_INTEGER,
    JSON_FLOAT,
    JSON_KEYWORD,
    JSON_STRING,
    JSON_ESCAPE,
    JSON_SKIP,
} JSONTokenType;

typedef struct JSONLexer JSONLexer;

typedef void (JSONLexerEmitter)(JSONLexer *, QString *, JSONTokenType, int x, int y);

struct JSONLexer
{
    JSONLexerEmitter *emit;
    int state;
    QString *token;
    int x, y;
};

void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func);

int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);

int json_lexer_flush(JSONLexer *lexer);

void json_lexer_destroy(JSONLexer *lexer);

#endif
Something went wrong with that request. Please try again.