#ifndef JKEYVAL_H_QWERTY #define JKEYVAL_H_QWERTY #include #include #include #include typedef struct jblock jblock_t; typedef struct { char* key; int type; union { int64_t num; bool flag; char* str; double flt; cintarr_t numarr; cfltarr_t fltarr; cboolarr_t flagarr; //jblock_t* blk; //jblock_t* blkarr; //char** strarr; }; int arrsize; int arrcapa; } jkeyval_t; struct jblock { jkeyval_t* kvarr; int kvsize; int kvcapa; }; #define JKVTYPE_INT 0x01 #define JKVTYPE_STR 0x02 #define JKVTYPE_BOOL 0x03 #define JKVTYPE_FLT 0x04 #define JKVTYPE_BLK 0x05 #define JKVTYPE_INTARR 0x11 #define JKVTYPE_STRARR 0x12 #define JKVTYPE_BOOLARR 0x13 #define JKVTYPE_FLTARR 0x14 #define JKVTYPE_BLKARR 0x15 #define JB_MALLOCERR -1 #define JB_KEYEXISTS -2 jblock_t* new_jblock(); void jblock_init(jblock_t* block); void jblock_outjson(jblock_t* block, char** res); void jblock_destroy(jblock_t* block); void jblock_free(jblock_t* jb); int jblock_addint(jblock_t* block, char* key, int64_t val); int jblock_addfloat(jblock_t* block, char* key, double val); int jblock_addstr(jblock_t* block, char* key, char* val); int jblock_addbool(jblock_t* block, char* key, bool val); #endif