summaryrefslogtreecommitdiffstats
path: root/jv_parse.h
blob: 5b8e7cdf5e2917d2d10562db7d9cdb6cdbb5f6fd (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
#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;

  jv* stack;
  int stackpos;
  int stacklen;
  jv next;
  
  char* tokenbuf;
  int tokenpos;
  int tokenlen;
  
  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