Support for dynamc keys.
FossilOrigin-Name: 3d1f1b8e659560761b88814c32b1d78b4093d28a9e9e0f7e52c551743055a589
This commit is contained in:
parent
f7f00c22e9
commit
533fb98dbb
@ -8,6 +8,7 @@
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
static int mbag_bstr16str(void *item,char *dst)
|
static int mbag_bstr16str(void *item,char *dst)
|
||||||
{
|
{
|
||||||
mbag_item_t *i= item;
|
mbag_item_t *i= item;
|
||||||
@ -27,7 +28,7 @@ static int mbag_bstr16str(void *item,char *dst)
|
|||||||
}
|
}
|
||||||
return d-dst;
|
return d-dst;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
static int mbag_strstr(void *item,char *dst)
|
static int mbag_strstr(void *item,char *dst)
|
||||||
{
|
{
|
||||||
@ -42,15 +43,17 @@ static struct mbag_item * mbag_fromstr(const char *src)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
i->type = MBAG_STR;
|
i->type = MBAG_STR;
|
||||||
|
i->dynid=0;
|
||||||
i->data = strndup(src,2000);
|
i->data = strndup(src,2000);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
const struct mbag_typedef mbag_type_byte = {
|
const struct mbag_typedef mbag_type_byte = {
|
||||||
"byte",NULL
|
"byte",NULL
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
const struct mbag_typedef mbag_type_word = {
|
const struct mbag_typedef mbag_type_word = {
|
||||||
@ -58,9 +61,11 @@ const struct mbag_typedef mbag_type_word = {
|
|||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
const struct mbag_typedef mbag_type_dword = {
|
const struct mbag_typedef mbag_type_dword = {
|
||||||
"dword",NULL
|
"dword",NULL
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
const struct mbag_typedef mbag_type_const_data = {
|
const struct mbag_typedef mbag_type_const_data = {
|
||||||
"data",NULL
|
"data",NULL
|
||||||
@ -70,14 +75,19 @@ const struct mbag_typedef mbag_type_bstr = {
|
|||||||
"bstr",free
|
"bstr",free
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
const struct mbag_typedef mbag_type_bstr16 = {
|
const struct mbag_typedef mbag_type_bstr16 = {
|
||||||
"bstr16",free,mbag_bstr16str
|
"bstr16",free,mbag_bstr16str
|
||||||
};
|
};
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
const struct mbag_typedef mbag_type_str = {
|
const struct mbag_typedef mbag_type_str = {
|
||||||
"str",free,mbag_strstr,mbag_fromstr
|
"str",free,mbag_strstr,mbag_fromstr
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
const struct mbag_typedef mbag_type_vendorstr = {
|
const struct mbag_typedef mbag_type_vendorstr = {
|
||||||
"vendorstr",free
|
"vendorstr",free
|
||||||
@ -109,6 +119,10 @@ const struct mbag_typedef mbag_type_mbag = {
|
|||||||
"mbag",mbag_type_mbag_del
|
"mbag",mbag_type_mbag_del
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const struct mbag_typedef mbag_type_mbag_dyn = {
|
||||||
|
"mbag",mbag_type_mbag_del
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static void mbag_del_data(struct mbag_item *i)
|
static void mbag_del_data(struct mbag_item *i)
|
||||||
{
|
{
|
||||||
@ -120,6 +134,10 @@ static void mbag_del_data(struct mbag_item *i)
|
|||||||
|
|
||||||
static void mbag_del_fun(void *e)
|
static void mbag_del_fun(void *e)
|
||||||
{
|
{
|
||||||
|
mbag_item_t * i = (mbag_item_t*)e;
|
||||||
|
if (i->dynid){
|
||||||
|
free((void*)i->id);
|
||||||
|
}
|
||||||
|
|
||||||
mbag_del_data(e);
|
mbag_del_data(e);
|
||||||
free(e);
|
free(e);
|
||||||
@ -158,6 +176,19 @@ mbag_t mbag_create()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mbag_item_t *mbag_item_new(mbagtype_t type)
|
||||||
|
{
|
||||||
|
struct mbag_item *i= malloc(sizeof(mbag_item_t));
|
||||||
|
if (!i)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
i->type = type;
|
||||||
|
i->dynid=0;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
struct mbag_item *mbag_item_create(mbag_t s, const char *id)
|
struct mbag_item *mbag_item_create(mbag_t s, const char *id)
|
||||||
{
|
{
|
||||||
struct mbag_item is;
|
struct mbag_item is;
|
||||||
@ -174,6 +205,7 @@ struct mbag_item *mbag_item_create(mbag_t s, const char *id)
|
|||||||
if (!i)
|
if (!i)
|
||||||
return NULL;
|
return NULL;
|
||||||
i->id = id;
|
i->id = id;
|
||||||
|
i->dynid=0;
|
||||||
return mavl_add(s, i);
|
return mavl_add(s, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,6 +226,7 @@ struct mbag_item *mbag_i_item_create(mbag_t s, uint32_t id)
|
|||||||
if (!i)
|
if (!i)
|
||||||
return NULL;
|
return NULL;
|
||||||
i->iid = id;
|
i->iid = id;
|
||||||
|
i->dynid=0;
|
||||||
return mavl_add(s, i);
|
return mavl_add(s, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user