Files
cworker/clib/jblock.h
Олег Бородин eb55ce2b75 at work
2023-09-05 12:15:20 +02:00

67 lines
1.4 KiB
C

#ifndef JKEYVAL_H_QWERTY
#define JKEYVAL_H_QWERTY
#include <stdint.h>
#include <stdbool.h>
#include <cdynarr.h>
#include <cstring.h>
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