~ahs3/+junk/cq-qemu

« back to all changes in this revision

Viewing changes to json-lexer.h

  • Committer: Al Stone
  • Date: 2012-02-09 01:17:20 UTC
  • Revision ID: albert.stone@canonical.com-20120209011720-tztl7ik3qayz80p4
first commit to bzr for qemu

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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