Implemented booleans, swapped to YACJS_NAME macro.
[yacjs.git] / src / yacjs.h
1 #ifndef YACJS_H
2 #define YACJS_H
3
4 #include <stdbool.h>
5 #include <stdint.h>
6
7 #include "yacjs_name.h"
8
9 struct YACJS_NAME(node);
10
11 enum YACJS_NAME(node_type) {
12     YACJS_NODE_NULL,
13     YACJS_NODE_BOOLEAN,
14     YACJS_NODE_STRING,
15     YACJS_NODE_NUMBER,
16     YACJS_NODE_FLOAT,
17     YACJS_NODE_ARRAY,
18     YACJS_NODE_DICT,
19     YACJS_NODE_TYPES
20 };
21
22 enum YACJS_NAME(error) {
23     YACJS_ERROR_NONE,
24     YACJS_ERROR_PARSE,
25     YACJS_ERROR_MEMORY,
26     YACJS_ERROR_TYPE,
27     YACJS_ERROR_BOUNDS,
28     YACJS_ERROR_TYPES
29 };
30
31 enum YACJS_NAME(error) YACJS_NAME(last_error)();
32
33 struct YACJS_NAME(node) *YACJS_NAME(parse)(const char *string);
34 void YACJS_NAME(destroy)(struct YACJS_NAME(node) *node);
35
36 enum YACJS_NAME(node_type) YACJS_NAME(node_type)(struct YACJS_NAME(node) *node);
37 bool YACJS_NAME(node_bool)(struct YACJS_NAME(node) *node);
38 const char *YACJS_NAME(node_str)(struct YACJS_NAME(node) *node);
39 int64_t YACJS_NAME(node_num)(struct YACJS_NAME(node) *node);
40 double YACJS_NAME(node_float)(struct YACJS_NAME(node) *node);
41 int YACJS_NAME(node_array_size)(struct YACJS_NAME(node) *node);
42 struct YACJS_NAME(node) *YACJS_NAME(node_array_elem)(
43     struct YACJS_NAME(node) *node, int index);
44 struct YACJS_NAME(node) *YACJS_NAME(node_dict_get)(
45     struct YACJS_NAME(node) *node, const char *key);
46
47 #endif