rizin/libr/include/r_util/r_json.h
2017-07-20 10:48:55 +02:00

63 lines
1.3 KiB
C

#ifndef R_JSON_H
#define R_JSON_H
#ifdef __cplusplus
extern "C" {
#endif
#define R_JSON_NULL "null"
#define R_JSON_TRUE "true"
#define R_JSON_FALSE "false"
#define R_JSON_EMPTY_OBJ "{}"
#define R_JSON_EMPTY_ARR "[]"
typedef struct r_json_var RJSVar;
typedef struct r_json_string {
const char* s;
ut32 l;
} RJSString;
typedef struct r_json_array {
RJSVar** a;
ut32 l;
} RJSArray;
typedef struct r_json_object {
RJSVar** a;
const char** n;
ut32 l;
} RJSObject;
struct r_json_var {
int type;
ut32 ref;
union {
int number;
bool boolean;
RJSArray array;
RJSString string;
RJSObject object;
};
};
R_API void r_json_var_free(RJSVar* var);
R_API RJSVar* r_json_object_new(void);
R_API RJSVar* r_json_array_new(int len);
R_API RJSVar* r_json_string_new(const char* name);
R_API RJSVar* r_json_number_new(int value);
R_API RJSVar* r_json_boolean_new(bool value);
R_API RJSVar* r_json_null_new(void);
R_API void r_json_object_add(RJSVar* object, const char* name, RJSVar* value);
R_API void r_json_array_add(RJSVar* array, RJSVar* value);
R_API RJSVar* r_json_object_get(RJSVar* object, const char* name);
R_API RJSVar* r_json_array_get(RJSVar* array, int index);
R_API char* r_json_stringify(RJSVar* var, bool expanded);
#ifdef __cplusplus
}
#endif
#endif /* R_JSON_H */