Basic array/dict/string parsing finished.
[yacjs.git] / src / yacjs.h
1 #ifndef YACJS_H
2 #define YACJS_H
3
4 #include <stdint.h>
5
6 struct yacjs_node;
7
8 enum yacjs_node_type {
9     YACJS_NODE_STRING,
10     YACJS_NODE_NUMBER,
11     YACJS_NODE_FLOAT,
12     YACJS_NODE_ARRAY,
13     YACJS_NODE_DICT,
14     YACJS_NODE_TYPES
15 };
16
17 enum yacjs_error {
18     YACJS_ERROR_NONE,
19     YACJS_ERROR_PARSE,
20     YACJS_ERROR_MEMORY,
21     YACJS_ERROR_TYPE,
22     YACJS_ERROR_BOUNDS,
23     YACJS_ERROR_TYPES
24 };
25
26 enum yacjs_error yacjs_last_error();
27
28 struct yacjs_node *yacjs_parse(const char *string);
29 void yacjs_destroy(struct yacjs_node *node);
30
31 enum yacjs_node_type yacjs_node_type(struct yacjs_node *node);
32 const char *yacjs_node_str(struct yacjs_node *node);
33 int64_t yacjs_node_num(struct yacjs_node *node);
34 double yacjs_node_float(struct yacjs_node *node);
35 int yacjs_node_array_size(struct yacjs_node *node);
36 struct yacjs_node *yacjs_node_array_elem(struct yacjs_node *node, int index);
37 struct yacjs_node *yacjs_node_dict_get(struct yacjs_node *node,
38     const char *key);
39
40 #endif