summaryrefslogtreecommitdiffstats
path: root/jv_parse.h
blob: 1d538c12b07222232d7d3641bb1af8af86dcad46 (plain)
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
#ifndef JV_PARSE_H
#define JV_PARSE_H
#include "jv_dtoa.h"
struct jv_parser {
  const char* curr_buf;
  int curr_buf_length;
  int curr_buf_pos;
  int curr_buf_is_partial;
  unsigned bom_strip_position;

  jv* stack;
  int stackpos;
  int stacklen;
  jv next;
  
  char* tokenbuf;
  int tokenpos;
  int tokenlen;

  int line, column;
  
  struct dtoa_context dtoa;

  enum {
    JV_PARSER_NORMAL,
    JV_PARSER_STRING,
    JV_PARSER_STRING_ESCAPE
  } st;
};

void jv_parser_init(struct jv_parser* p);
void jv_parser_free(struct jv_parser* p);

void jv_parser_set_buf(struct jv_parser* p, const char* buf, int length, int is_partial);

jv jv_parser_next(struct jv_parser* p);
#endif