5#ifndef SPA_UTILS_JSON_UTILS_H
6#define SPA_UTILS_JSON_UTILS_H
22#ifndef SPA_API_JSON_UTILS
24 #define SPA_API_JSON_UTILS SPA_API_IMPL
26 #define SPA_API_JSON_UTILS static inline
101 const char *data,
size_t size,
char type,
bool relax)
106 if (
res == -EPROTO && relax)
126 return sub.
cur + 1 - value;
148 if (res1 <= 0 && res1 != -ENOSPC)
151 if (res2 <= 0 || res1 != -ENOSPC)
159 int res, len = strlen(key) + 3;
169 const char *key,
char *value,
size_t maxlen)
196#define spa_json_make_str_array_unpack(maxlen,type,conv) \
198 struct spa_json iter; \
200 uint32_t count = 0; \
201 if (spa_json_begin_array_relax(&iter, arr, arr_len) <= 0) \
198 struct spa_json iter; \ {
…}
203 while (spa_json_get_string(&iter, v, sizeof(v)) > 0 && count < max) \
204 values[count++] = conv(v); \
209 uint32_t *values,
size_t max)
203 while (spa_json_get_string(&iter, v, sizeof(v)) > 0 && count < max) \ …
uint32_t int int res
Definition core.h:433
SPA_API_JSON_UTILS int spa_json_str_object_find(const char *obj, size_t obj_len, const char *key, char *value, size_t maxlen)
Definition json.h:175
SPA_API_JSON_UTILS int spa_json_enter_array(struct spa_json *iter, struct spa_json *sub)
Definition json.h:190
#define SPA_JSON_SAVE(iter)
Definition json-core.h:74
SPA_API_JSON_UTILS int spa_json_begin_array(struct spa_json *iter, const char *data, size_t size)
Definition json.h:198
SPA_API_JSON_UTILS int spa_json_object_next(struct spa_json *iter, char *key, int maxkeylen, const char **value)
Definition json.h:150
SPA_API_JSON_UTILS int spa_json_begin_object_relax(struct spa_json *iter, const char *data, size_t size)
Definition json.h:141
SPA_API_JSON void spa_json_init(struct spa_json *iter, const char *data, size_t size)
Definition json-core.h:61
SPA_API_JSON_UTILS int spa_json_begin_object(struct spa_json *iter, const char *data, size_t size)
Definition json.h:145
SPA_API_JSON_UTILS int spa_json_begin(struct spa_json *iter, const char *data, size_t size, const char **val)
Definition json.h:46
SPA_API_JSON_UTILS int spa_json_enter_object(struct spa_json *iter, struct spa_json *sub)
Definition json.h:137
SPA_API_JSON_UTILS int spa_json_begin_array_relax(struct spa_json *iter, const char *data, size_t size)
Definition json.h:194
SPA_API_JSON int spa_json_next(struct spa_json *iter, const char **value)
Get the next token.
Definition json-core.h:91
SPA_API_JSON int spa_json_parse_float(const char *val, int len, float *result)
Definition json-core.h:415
SPA_API_JSON_UTILS int spa_json_get_int(struct spa_json *iter, int *res)
Definition json.h:63
SPA_API_JSON int spa_json_parse_int(const char *val, int len, int *result)
Definition json-core.h:456
SPA_API_JSON_UTILS int spa_json_container_len(struct spa_json *iter, const char *value, int len 1)
Return length of container at current position, starting at value.
Definition json.h:124
SPA_API_JSON_UTILS int spa_json_get_bool(struct spa_json *iter, bool *res)
Definition json.h:73
SPA_API_JSON_UTILS int spa_json_object_find(struct spa_json *iter, const char *key, const char **value)
Definition json.h:163
SPA_API_JSON int spa_json_parse_bool(const char *val, int len, bool *result)
Definition json-core.h:492
SPA_API_JSON_UTILS int spa_json_str_array_uint32(const char *arr, size_t arr_len, uint32_t *values, size_t max)
Definition json.h:215
SPA_API_JSON int spa_json_parse_stringn(const char *val, int len, char *result, int maxlen)
Definition json-core.h:526
SPA_API_JSON void spa_json_enter(struct spa_json *iter, struct spa_json *sub)
Definition json-core.h:68
SPA_API_JSON_UTILS int spa_json_enter_container(struct spa_json *iter, struct spa_json *sub, char type)
Definition json.h:93
#define spa_json_make_str_array_unpack(maxlen, type, conv)
Definition json.h:203
SPA_API_JSON_UTILS int spa_json_begin_container(struct spa_json *iter, const char *data, size_t size, char type, bool relax)
Definition json.h:107
SPA_API_JSON int spa_json_is_container(const char *val, int len)
Definition json-core.h:391
SPA_API_JSON_UTILS int spa_json_get_string(struct spa_json *iter, char *res, int maxlen)
Definition json.h:83
SPA_API_JSON_UTILS int spa_json_get_float(struct spa_json *iter, float *res)
Definition json.h:53
SPA_API_STRING bool spa_streq(const char *s1, const char *s2)
Definition string.h:51
#define SPA_UNUSED
Definition defs.h:307
#define SPA_API_JSON_UTILS
Definition json.h:33
Definition json-core.h:48
const char * cur
Definition json-core.h:49