|
Robotran C Documentation
|
Go to the documentation of this file.
71 #define EXTERNC extern "C"
100 #define json_foreach(i, object_or_array) \
101 for ((i) = json_first_child(object_or_array); \
JsonNode * json_mkbool(bool b)
Definition: json.c:500
EXTERNC JsonNode * json_find_member(JsonNode *object, const char *key)
Definition: json.c:465
#define sb_need(sb, need)
Definition: json.c:66
char * json_encode_string(const char *str)
Definition: json.c:384
JsonNode * json_mkobject(void)
Definition: json.c:531
static void sb_put(SB *sb, const char *bytes, int count)
Definition: json.c:87
EXTERNC JsonNode * json_mkobject(void)
Definition: json.c:531
static bool parse_string(const char **sp, char **out)
Definition: json.c:793
static bool utf8_validate(const char *s)
Definition: json.c:206
struct JsonNode::@8::@10 children
#define out_of_memory()
Definition: json.c:32
EXTERNC JsonNode * json_mknull(void)
Definition: json.c:495
static bool parse_hex16(const char **sp, uint16_t *out)
Definition: json.c:1268
static void emit_string(SB *out, const char *str)
Definition: json.c:1106
EXTERNC JsonNode * json_mkstring(const char *s)
Definition: json.c:514
static bool parse_array(const char **sp, JsonNode **out)
Definition: json.c:693
EXTERNC bool json_validate(const char *json)
Definition: json.c:433
EXTERNC JsonNode * json_first_child(const JsonNode *node)
Definition: json.c:479
static void sb_init(SB *sb)
Definition: json.c:56
JsonNode * json_first_child(const JsonNode *node)
Definition: json.c:479
EXTERNC void json_prepend_element(JsonNode *array, JsonNode *element)
Definition: json.c:576
bool bool_
Definition: json.h:53
EXTERNC char * json_encode(const JsonNode *node)
Definition: json.c:379
EXTERNC void json_prepend_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.c:592
#define json_foreach(i, object_or_array)
Definition: json.h:100
static bool from_surrogate_pair(uint16_t uc, uint16_t lc, uchar_t *unicode)
Definition: json.c:302
static void sb_grow(SB *sb, int need)
Definition: json.c:71
static void to_surrogate_pair(uchar_t unicode, uint16_t *uc, uint16_t *lc)
Definition: json.c:317
bool json_validate(const char *json)
Definition: json.c:433
JsonTag
Definition: json.h:30
JsonNode * prev
Definition: json.h:45
@ JSON_OBJECT
Definition: json.h:36
EXTERNC JsonNode * json_find_element(JsonNode *array, int index)
Definition: json.c:448
void json_remove_from_parent(JsonNode *node)
Definition: json.c:601
static void emit_number(SB *out, double num)
Definition: json.c:1225
JsonNode * next
Definition: json.h:45
static bool tag_is_valid(unsigned int tag)
Definition: json.c:1242
EXTERNC JsonNode * json_mkbool(bool b)
Definition: json.c:500
JsonNode * json_mkarray(void)
Definition: json.c:526
EXTERNC JsonNode * json_mkarray(void)
Definition: json.c:526
static bool number_is_valid(const char *num)
Definition: json.c:1247
EXTERNC void json_append_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.c:584
JsonNode * json_mkstring(const char *s)
Definition: json.c:514
char * start
Definition: json.c:53
static void emit_array(SB *out, const JsonNode *array)
Definition: json.c:1028
void json_delete(JsonNode *node)
Definition: json.c:407
bool json_check(const JsonNode *node, char errmsg[256])
Definition: json.c:1313
JsonNode * json_find_element(JsonNode *array, int index)
Definition: json.c:448
void json_prepend_element(JsonNode *array, JsonNode *element)
Definition: json.c:576
char * json_encode_string(const char *str)
Definition: json.c:384
static void append_member(JsonNode *object, char *key, JsonNode *value)
Definition: json.c:562
@ JSON_NUMBER
Definition: json.h:34
static int utf8_validate_cz(const char *s)
Definition: json.c:151
EXTERNC void json_remove_from_parent(JsonNode *node)
Definition: json.c:601
static void emit_array_indented(SB *out, const JsonNode *array, const char *space, int indent_level)
Definition: json.c:1041
JsonNode * tail
Definition: json.h:64
static void append_node(JsonNode *parent, JsonNode *child)
Definition: json.c:536
char * key
Definition: json.h:48
#define sb_putc(sb, c)
Definition: json.c:94
static JsonNode * mkstring(char *s)
Definition: json.c:507
uint32_t uchar_t
Definition: json.c:129
static JsonNode * mknode(JsonTag tag)
Definition: json.c:486
#define EXTERNC
Definition: json.h:73
static bool parse_number(const char **sp, double *out)
Definition: json.c:918
static int utf8_read_char(const char *s, uchar_t *out)
Definition: json.c:226
char * json_encode(const JsonNode *node)
Definition: json.c:379
EXTERNC void json_append_element(JsonNode *array, JsonNode *element)
Definition: json.c:568
EXTERNC char * json_stringify(const JsonNode *node, const char *space)
Definition: json.c:394
static bool expect_literal(const char **sp, const char *str)
Definition: json.c:1252
@ JSON_STRING
Definition: json.h:33
static void emit_object(SB *out, const JsonNode *object)
Definition: json.c:1065
char * cur
Definition: json.c:51
static char * json_strdup(const char *str)
Definition: json.c:38
JsonNode * head
Definition: json.h:64
static void emit_value_indented(SB *out, const JsonNode *node, const char *space, int indent_level)
Definition: json.c:1001
JsonNode * json_find_member(JsonNode *object, const char *name)
Definition: json.c:465
#define is_space(c)
Definition: json.c:328
static bool parse_object(const char **sp, JsonNode **out)
Definition: json.c:737
char * end
Definition: json.c:52
JsonNode * json_mknull(void)
Definition: json.c:495
static void sb_free(SB *sb)
Definition: json.c:112
JsonTag tag
Definition: json.h:50
static int utf8_write_char(uchar_t unicode, char *out)
Definition: json.c:265
void json_prepend_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.c:592
static int write_hex16(char *out, uint16_t val)
Definition: json.c:1301
void json_append_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.c:584
@ JSON_NULL
Definition: json.h:31
static void sb_puts(SB *sb, const char *str)
Definition: json.c:100
static char * sb_finish(SB *sb)
Definition: json.c:105
EXTERNC bool json_check(const JsonNode *node, char errmsg[256])
Definition: json.c:1313
char * json_stringify(const JsonNode *node, const char *space)
Definition: json.c:394
static void emit_value(SB *out, const JsonNode *node)
Definition: json.c:974
EXTERNC JsonNode * json_decode(const char *json)
Definition: json.c:361
static void prepend_node(JsonNode *parent, JsonNode *child)
Definition: json.c:549
static bool parse_value(const char **sp, JsonNode **out)
Definition: json.c:623
char * string_
Definition: json.h:56
void json_append_element(JsonNode *array, JsonNode *element)
Definition: json.c:568
@ JSON_ARRAY
Definition: json.h:35
JsonNode * parent
Definition: json.h:44
EXTERNC void json_delete(JsonNode *node)
Definition: json.c:407
#define is_digit(c)
Definition: json.c:329
@ JSON_BOOL
Definition: json.h:32
double number_
Definition: json.h:59
JsonNode * json_mknumber(double n)
Definition: json.c:519
static void emit_object_indented(SB *out, const JsonNode *object, const char *space, int indent_level)
Definition: json.c:1080
JsonNode * json_decode(const char *json)
Definition: json.c:361
EXTERNC JsonNode * json_mknumber(double n)
Definition: json.c:519
static void skip_space(const char **sp)
Definition: json.c:966