|
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); \
char * json_stringify(const JsonNode *node, const char *space)
Definition: json.cc:393
static void sb_free(SB *sb)
Definition: json.cc:112
EXTERNC JsonNode * json_find_member(JsonNode *object, const char *key)
Definition: json.cc:464
static bool expect_literal(const char **sp, const char *str)
Definition: json.cc:1254
char * json_encode_string(const char *str)
Definition: json.cc:383
static void emit_value_indented(SB *out, const JsonNode *node, const char *space, int indent_level)
Definition: json.cc:1003
JsonNode * json_mkbool(bool b)
Definition: json.cc:499
JsonNode * json_decode(const char *json)
Definition: json.cc:361
static void sb_grow(SB *sb, int need)
Definition: json.cc:71
static bool parse_array(const char **sp, JsonNode **out)
Definition: json.cc:691
static JsonNode * mknode(JsonTag tag)
Definition: json.cc:485
static void to_surrogate_pair(uchar_t unicode, uint16_t *uc, uint16_t *lc)
Definition: json.cc:317
EXTERNC JsonNode * json_mknull(void)
Definition: json.cc:494
static bool parse_number(const char **sp, double *out)
Definition: json.cc:920
EXTERNC bool json_validate(const char *json)
Definition: json.cc:432
EXTERNC JsonNode * json_first_child(const JsonNode *node)
Definition: json.cc:478
struct JsonNode::@0::@2 children
char * json_encode_string(const char *str)
Definition: json.cc:383
char * json_encode(const JsonNode *node)
Definition: json.cc:378
static void emit_array_indented(SB *out, const JsonNode *array, const char *space, int indent_level)
Definition: json.cc:1043
static void sb_puts(SB *sb, const char *str)
Definition: json.cc:100
JsonNode * json_mkobject(void)
Definition: json.cc:530
bool bool_
Definition: json.h:53
static char * sb_finish(SB *sb)
Definition: json.cc:105
uint32_t uchar_t
Definition: json.cc:129
char * json_encode(const JsonNode *node)
Definition: json.cc:378
#define json_foreach(i, object_or_array)
Definition: json.h:100
JsonNode * json_mknumber(double n)
Definition: json.cc:518
JsonTag
Definition: json.h:30
JsonNode * prev
Definition: json.h:45
static bool parse_string(const char **sp, char **out)
Definition: json.cc:795
@ JSON_OBJECT
Definition: json.h:36
static int write_hex16(char *out, uint16_t val)
Definition: json.cc:1303
EXTERNC JsonNode * json_find_element(JsonNode *array, int index)
Definition: json.cc:447
JsonNode * next
Definition: json.h:45
static void emit_number(SB *out, double num)
Definition: json.cc:1227
void json_remove_from_parent(JsonNode *node)
Definition: json.cc:600
void json_append_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.cc:583
static bool utf8_validate(const char *s)
Definition: json.cc:206
void json_append_element(JsonNode *array, JsonNode *element)
Definition: json.cc:567
char * start
Definition: json.cc:53
static bool from_surrogate_pair(uint16_t uc, uint16_t lc, uchar_t *unicode)
Definition: json.cc:302
bool json_validate(const char *json)
Definition: json.cc:432
void json_prepend_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.cc:591
JsonNode * json_mkobject(void)
Definition: json.cc:530
JsonNode * json_mkstring(const char *s)
Definition: json.cc:513
char * json_stringify(const JsonNode *node, const char *space)
Definition: json.cc:393
@ JSON_NUMBER
Definition: json.h:34
static void emit_object(SB *out, const JsonNode *object)
Definition: json.cc:1067
JsonNode * tail
Definition: json.h:64
#define sb_need(sb, need)
Definition: json.cc:66
char * key
Definition: json.h:48
static char * json_strdup(const char *str)
Definition: json.cc:38
void json_remove_from_parent(JsonNode *node)
Definition: json.cc:600
static void sb_init(SB *sb)
Definition: json.cc:56
void json_prepend_element(JsonNode *array, JsonNode *element)
Definition: json.cc:575
JsonNode * json_find_element(JsonNode *array, int index)
Definition: json.cc:447
static bool parse_value(const char **sp, JsonNode **out)
Definition: json.cc:622
static int utf8_read_char(const char *s, uchar_t *out)
Definition: json.cc:226
#define EXTERNC
Definition: json.h:73
#define is_digit(c)
Definition: json.cc:329
static void emit_string(SB *out, const char *str)
Definition: json.cc:1108
@ JSON_STRING
Definition: json.h:33
char * cur
Definition: json.cc:51
static void skip_space(const char **sp)
Definition: json.cc:968
static void sb_put(SB *sb, const char *bytes, int count)
Definition: json.cc:87
JsonNode * json_mknumber(double n)
Definition: json.cc:518
JsonNode * head
Definition: json.h:64
static bool parse_hex16(const char **sp, uint16_t *out)
Definition: json.cc:1270
static void emit_object_indented(SB *out, const JsonNode *object, const char *space, int indent_level)
Definition: json.cc:1082
#define sb_putc(sb, c)
Definition: json.cc:94
void json_append_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.cc:583
void json_prepend_member(JsonNode *object, const char *key, JsonNode *value)
Definition: json.cc:591
JsonNode * json_mkbool(bool b)
Definition: json.cc:499
char * end
Definition: json.cc:52
static void prepend_node(JsonNode *parent, JsonNode *child)
Definition: json.cc:548
#define out_of_memory()
Definition: json.cc:32
static void append_member(JsonNode *object, char *key, JsonNode *value)
Definition: json.cc:561
JsonTag tag
Definition: json.h:50
static void emit_array(SB *out, const JsonNode *array)
Definition: json.cc:1030
JsonNode * json_mknull(void)
Definition: json.cc:494
@ JSON_NULL
Definition: json.h:31
void json_delete(JsonNode *node)
Definition: json.cc:406
static bool tag_is_valid(unsigned int tag)
Definition: json.cc:1244
static void emit_value(SB *out, const JsonNode *node)
Definition: json.cc:976
EXTERNC bool json_check(const JsonNode *node, char errmsg[256])
Definition: json.cc:1315
static void append_node(JsonNode *parent, JsonNode *child)
Definition: json.cc:535
EXTERNC JsonNode * json_decode(const char *json)
Definition: json.cc:361
JsonNode * json_first_child(const JsonNode *node)
Definition: json.cc:478
static bool parse_object(const char **sp, JsonNode **out)
Definition: json.cc:735
char * string_
Definition: json.h:56
@ JSON_ARRAY
Definition: json.h:35
static bool number_is_valid(const char *num)
Definition: json.cc:1249
JsonNode * parent
Definition: json.h:44
EXTERNC void json_delete(JsonNode *node)
Definition: json.cc:406
@ JSON_BOOL
Definition: json.h:32
static JsonNode * mkstring(char *s)
Definition: json.cc:506
JsonNode * json_mkstring(const char *s)
Definition: json.cc:513
double number_
Definition: json.h:59
void json_append_element(JsonNode *array, JsonNode *element)
Definition: json.cc:567
JsonNode * json_mkarray(void)
Definition: json.cc:525
void json_prepend_element(JsonNode *array, JsonNode *element)
Definition: json.cc:575
static int utf8_validate_cz(const char *s)
Definition: json.cc:151
JsonNode * json_mkarray(void)
Definition: json.cc:525
static int utf8_write_char(uchar_t unicode, char *out)
Definition: json.cc:265
#define is_space(c)
Definition: json.cc:328
bool json_check(const JsonNode *node, char errmsg[256])
Definition: json.cc:1315
JsonNode * json_find_member(JsonNode *object, const char *name)
Definition: json.cc:464