mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +00:00
(libretro-db) Add TODO/FIXME notes
This commit is contained in:
parent
b8c41812bf
commit
110339c1cc
@ -43,6 +43,7 @@ struct bintree
|
|||||||
void *ctx;
|
void *ctx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* TODO/FIXME - static global variable */
|
||||||
static void *NIL_NODE = &NIL_NODE;
|
static void *NIL_NODE = &NIL_NODE;
|
||||||
|
|
||||||
static struct bintree_node *bintree_new_nil_node(struct bintree_node *parent)
|
static struct bintree_node *bintree_new_nil_node(struct bintree_node *parent)
|
||||||
|
@ -88,8 +88,6 @@ struct libretrodb_cursor
|
|||||||
libretrodb_t *db;
|
libretrodb_t *db;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rmsgpack_dom_value sentinal;
|
|
||||||
|
|
||||||
static int libretrodb_read_metadata(RFILE *fd, libretrodb_metadata_t *md)
|
static int libretrodb_read_metadata(RFILE *fd, libretrodb_metadata_t *md)
|
||||||
{
|
{
|
||||||
return rmsgpack_dom_read_into(fd, "count", &md->count, NULL);
|
return rmsgpack_dom_read_into(fd, "count", &md->count, NULL);
|
||||||
@ -140,10 +138,11 @@ int libretrodb_create(RFILE *fd, libretrodb_value_provider value_provider,
|
|||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
libretrodb_metadata_t md;
|
libretrodb_metadata_t md;
|
||||||
|
static struct rmsgpack_dom_value sentinal;
|
||||||
struct rmsgpack_dom_value item;
|
struct rmsgpack_dom_value item;
|
||||||
uint64_t item_count = 0;
|
uint64_t item_count = 0;
|
||||||
libretrodb_header_t header = {{0}};
|
libretrodb_header_t header = {{0}};
|
||||||
ssize_t root = filestream_tell(fd);
|
ssize_t root = filestream_tell(fd);
|
||||||
|
|
||||||
memcpy(header.magic_number, MAGIC_NUMBER, sizeof(MAGIC_NUMBER)-1);
|
memcpy(header.magic_number, MAGIC_NUMBER, sizeof(MAGIC_NUMBER)-1);
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ struct registered_func
|
|||||||
rarch_query_func func;
|
rarch_query_func func;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* TODO/FIXME - static global variable */
|
||||||
static char tmp_error_buff [MAX_ERROR_LEN] = {0};
|
static char tmp_error_buff [MAX_ERROR_LEN] = {0};
|
||||||
|
|
||||||
/* Forward declarations */
|
/* Forward declarations */
|
||||||
|
@ -39,14 +39,16 @@ struct dom_reader_state
|
|||||||
struct rmsgpack_dom_value *stack[MAX_DEPTH];
|
struct rmsgpack_dom_value *stack[MAX_DEPTH];
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct rmsgpack_dom_value *dom_reader_state_pop(struct dom_reader_state *s)
|
static struct rmsgpack_dom_value *dom_reader_state_pop(
|
||||||
|
struct dom_reader_state *s)
|
||||||
{
|
{
|
||||||
struct rmsgpack_dom_value *v = s->stack[s->i];
|
struct rmsgpack_dom_value *v = s->stack[s->i];
|
||||||
s->i--;
|
s->i--;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dom_reader_state_push(struct dom_reader_state *s, struct rmsgpack_dom_value *v)
|
static int dom_reader_state_push(
|
||||||
|
struct dom_reader_state *s, struct rmsgpack_dom_value *v)
|
||||||
{
|
{
|
||||||
if ((s->i + 1) == MAX_DEPTH)
|
if ((s->i + 1) == MAX_DEPTH)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -112,33 +114,33 @@ static int dom_read_string(char *value, uint32_t len, void *data)
|
|||||||
static int dom_read_bin(void *value, uint32_t len, void *data)
|
static int dom_read_bin(void *value, uint32_t len, void *data)
|
||||||
{
|
{
|
||||||
struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
|
struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
|
||||||
struct rmsgpack_dom_value *v =
|
struct rmsgpack_dom_value *v = (struct rmsgpack_dom_value*)
|
||||||
(struct rmsgpack_dom_value*)dom_reader_state_pop(dom_state);
|
dom_reader_state_pop(dom_state);
|
||||||
|
|
||||||
v->type = RDT_BINARY;
|
v->type = RDT_BINARY;
|
||||||
v->val.binary.len = len;
|
v->val.binary.len = len;
|
||||||
v->val.binary.buff = (char *)value;
|
v->val.binary.buff = (char *)value;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dom_read_map_start(uint32_t len, void *data)
|
static int dom_read_map_start(uint32_t len, void *data)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct rmsgpack_dom_pair *items = NULL;
|
struct rmsgpack_dom_pair *items = NULL;
|
||||||
struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
|
struct dom_reader_state *dom_state = (struct dom_reader_state *)data;
|
||||||
struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
|
struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
|
||||||
|
|
||||||
v->type = RDT_MAP;
|
v->type = RDT_MAP;
|
||||||
v->val.map.len = len;
|
v->val.map.len = len;
|
||||||
v->val.map.items = NULL;
|
v->val.map.items = NULL;
|
||||||
|
|
||||||
items = (struct rmsgpack_dom_pair *)calloc(len,
|
items = (struct rmsgpack_dom_pair *)
|
||||||
sizeof(struct rmsgpack_dom_pair));
|
calloc(len, sizeof(struct rmsgpack_dom_pair));
|
||||||
|
|
||||||
if (!items)
|
if (!items)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
v->val.map.items = items;
|
v->val.map.items = items;
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
for (i = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
@ -158,11 +160,12 @@ static int dom_read_array_start(uint32_t len, void *data)
|
|||||||
struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
|
struct rmsgpack_dom_value *v = dom_reader_state_pop(dom_state);
|
||||||
struct rmsgpack_dom_value *items = NULL;
|
struct rmsgpack_dom_value *items = NULL;
|
||||||
|
|
||||||
v->type = RDT_ARRAY;
|
v->type = RDT_ARRAY;
|
||||||
v->val.array.len = len;
|
v->val.array.len = len;
|
||||||
v->val.array.items = NULL;
|
v->val.array.items = NULL;
|
||||||
|
|
||||||
items = (struct rmsgpack_dom_value *)calloc(len, sizeof(*items));
|
items = (struct rmsgpack_dom_value *)
|
||||||
|
calloc(len, sizeof(*items));
|
||||||
|
|
||||||
if (!items)
|
if (!items)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -258,19 +261,21 @@ int rmsgpack_dom_value_cmp(
|
|||||||
case RDT_NULL:
|
case RDT_NULL:
|
||||||
return 0;
|
return 0;
|
||||||
case RDT_BOOL:
|
case RDT_BOOL:
|
||||||
return a->val.bool_ == b->val.bool_ ? 0 : 1;
|
return (a->val.bool_ == b->val.bool_) ? 0 : 1;
|
||||||
case RDT_INT:
|
case RDT_INT:
|
||||||
return a->val.int_ == b->val.int_ ? 0 : 1;
|
return (a->val.int_ == b->val.int_) ? 0 : 1;
|
||||||
case RDT_UINT:
|
case RDT_UINT:
|
||||||
return a->val.uint_ == b->val.uint_ ? 0 : 1;
|
return (a->val.uint_ == b->val.uint_) ? 0 : 1;
|
||||||
case RDT_STRING:
|
case RDT_STRING:
|
||||||
if (a->val.string.len != b->val.string.len)
|
if (a->val.string.len != b->val.string.len)
|
||||||
return 1;
|
return 1;
|
||||||
return strncmp(a->val.string.buff, b->val.string.buff, a->val.string.len);
|
return strncmp(a->val.string.buff,
|
||||||
|
b->val.string.buff, a->val.string.len);
|
||||||
case RDT_BINARY:
|
case RDT_BINARY:
|
||||||
if (a->val.binary.len != b->val.binary.len)
|
if (a->val.binary.len != b->val.binary.len)
|
||||||
return 1;
|
return 1;
|
||||||
return memcmp(a->val.binary.buff, b->val.binary.buff, a->val.binary.len);
|
return memcmp(a->val.binary.buff,
|
||||||
|
b->val.binary.buff, a->val.binary.len);
|
||||||
case RDT_MAP:
|
case RDT_MAP:
|
||||||
if (a->val.map.len != b->val.map.len)
|
if (a->val.map.len != b->val.map.len)
|
||||||
return 1;
|
return 1;
|
||||||
@ -405,7 +410,7 @@ int rmsgpack_dom_write(RFILE *fd, const struct rmsgpack_dom_value *obj)
|
|||||||
int rmsgpack_dom_read(RFILE *fd, struct rmsgpack_dom_value *out)
|
int rmsgpack_dom_read(RFILE *fd, struct rmsgpack_dom_value *out)
|
||||||
{
|
{
|
||||||
struct dom_reader_state s;
|
struct dom_reader_state s;
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
s.i = 0;
|
s.i = 0;
|
||||||
s.stack[0] = out;
|
s.stack[0] = out;
|
||||||
@ -420,10 +425,10 @@ int rmsgpack_dom_read(RFILE *fd, struct rmsgpack_dom_value *out)
|
|||||||
|
|
||||||
int rmsgpack_dom_read_into(RFILE *fd, ...)
|
int rmsgpack_dom_read_into(RFILE *fd, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
|
||||||
struct rmsgpack_dom_value map;
|
|
||||||
int rv;
|
int rv;
|
||||||
|
va_list ap;
|
||||||
const char *key_name;
|
const char *key_name;
|
||||||
|
struct rmsgpack_dom_value map;
|
||||||
struct rmsgpack_dom_value key;
|
struct rmsgpack_dom_value key;
|
||||||
struct rmsgpack_dom_value *value;
|
struct rmsgpack_dom_value *value;
|
||||||
int64_t *int_value;
|
int64_t *int_value;
|
||||||
@ -435,7 +440,7 @@ int rmsgpack_dom_read_into(RFILE *fd, ...)
|
|||||||
|
|
||||||
va_start(ap, fd);
|
va_start(ap, fd);
|
||||||
|
|
||||||
rv = rmsgpack_dom_read(fd, &map);
|
rv = rmsgpack_dom_read(fd, &map);
|
||||||
|
|
||||||
(void)value_type;
|
(void)value_type;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user