2015-01-19 21:47:09 +00:00
|
|
|
#ifndef __RARCHDB_MSGPACK_DOM_H__
|
|
|
|
#define __RARCHDB_MSGPACK_DOM_H__
|
|
|
|
|
2015-05-30 16:17:11 +00:00
|
|
|
#include <stdio.h>
|
2015-01-19 21:47:09 +00:00
|
|
|
#include <stdint.h>
|
|
|
|
|
2015-01-23 05:05:54 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2015-01-19 21:47:09 +00:00
|
|
|
enum rmsgpack_dom_type {
|
|
|
|
RDT_NULL = 0,
|
|
|
|
RDT_BOOL,
|
|
|
|
RDT_UINT,
|
|
|
|
RDT_INT,
|
|
|
|
RDT_STRING,
|
|
|
|
RDT_BINARY,
|
|
|
|
RDT_MAP,
|
|
|
|
RDT_ARRAY
|
|
|
|
};
|
|
|
|
|
|
|
|
struct rmsgpack_dom_value {
|
|
|
|
enum rmsgpack_dom_type type;
|
|
|
|
union {
|
|
|
|
uint64_t uint_;
|
|
|
|
int64_t int_;
|
2015-06-26 18:33:40 +00:00
|
|
|
struct
|
|
|
|
{
|
2015-01-19 21:47:09 +00:00
|
|
|
uint32_t len;
|
|
|
|
char * buff;
|
|
|
|
} string;
|
2015-06-26 18:33:40 +00:00
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
2015-01-19 21:47:09 +00:00
|
|
|
uint32_t len;
|
|
|
|
char * buff;
|
|
|
|
} binary;
|
2015-06-26 18:33:40 +00:00
|
|
|
|
2015-01-19 21:47:09 +00:00
|
|
|
int bool_;
|
2015-06-26 18:33:40 +00:00
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
2015-01-19 21:47:09 +00:00
|
|
|
uint32_t len;
|
|
|
|
struct rmsgpack_dom_pair * items;
|
|
|
|
} map;
|
2015-06-26 18:33:40 +00:00
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
2015-01-19 21:47:09 +00:00
|
|
|
uint32_t len;
|
|
|
|
struct rmsgpack_dom_value * items;
|
|
|
|
} array;
|
2015-06-26 18:33:40 +00:00
|
|
|
} val;
|
2015-01-19 21:47:09 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct rmsgpack_dom_pair {
|
|
|
|
struct rmsgpack_dom_value key;
|
|
|
|
struct rmsgpack_dom_value value;
|
|
|
|
};
|
|
|
|
|
|
|
|
void rmsgpack_dom_value_print(struct rmsgpack_dom_value * obj);
|
|
|
|
void rmsgpack_dom_value_free(struct rmsgpack_dom_value * v);
|
|
|
|
int rmsgpack_dom_value_cmp(
|
|
|
|
const struct rmsgpack_dom_value * a,
|
|
|
|
const struct rmsgpack_dom_value * b
|
|
|
|
);
|
|
|
|
|
|
|
|
struct rmsgpack_dom_value * rmsgpack_dom_value_map_value(
|
|
|
|
const struct rmsgpack_dom_value * map,
|
|
|
|
const struct rmsgpack_dom_value * key
|
|
|
|
);
|
|
|
|
|
|
|
|
int rmsgpack_dom_read(
|
2015-05-30 16:17:11 +00:00
|
|
|
FILE *fp,
|
2015-01-19 21:47:09 +00:00
|
|
|
struct rmsgpack_dom_value * out
|
|
|
|
);
|
|
|
|
int rmsgpack_dom_write(
|
2015-05-30 16:17:11 +00:00
|
|
|
FILE *fp,
|
2015-01-19 21:47:09 +00:00
|
|
|
const struct rmsgpack_dom_value * obj
|
|
|
|
);
|
2015-01-23 05:05:54 +00:00
|
|
|
|
2015-05-30 16:17:11 +00:00
|
|
|
int rmsgpack_dom_read_into(FILE *fp, ...);
|
2015-01-23 05:05:54 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2015-01-19 21:47:09 +00:00
|
|
|
#endif
|