blob: 935811533ad23537423dbe91829cea6dfd1d3dce (
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
38
39
40
41
42
43
44
45
|
#ifndef PARSER_H
#define PARSER_H
#include <stddef.h>
typedef struct memory memory;
typedef struct string_view string_view;
#define PARSER_BACKEND_UMANIFEST 1
#define PARSER_BACKEND_PKG 2
#define PARSER_STATE_GRACEFUL 1
#define PARSER_STATE_ERROR 2
typedef void (*parser_block_start_fn)(struct string_view*, void *userdata);
typedef void (*parser_block_end_fn)(struct string_view*, void *userdata);
typedef void (*parser_kv_fn)(struct string_view*, struct string_view*, void *userdata);
typedef void (*parser_init_fn)();
struct parser_backend {
parser_block_start_fn on_block_start;
parser_block_end_fn on_block_end;
parser_kv_fn on_kv;
parser_init_fn on_init;
};
struct parser {
struct parser_backend *backend;
char *src;
size_t pos;
size_t len;
int state;
void *userdata;
};
int parser_init(struct parser *parser,
struct string_view *mem,
struct parser_backend *backend,
void *userdata);
int parser_parse(struct parser *parser);
void parser_parse_block_start(struct parser *parser);
void parser_parse_block_end(struct parser *parser);
void parser_parse_kv(struct parser *parser);
#endif
|