|
|
|
@ -176,100 +176,15 @@ struct mbag_item *mbag_item_create(mbag_t s, const char *id); |
|
|
|
|
struct mbag_item *mbag_i_item_create(mbag_t s, uint32_t id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline int mbag_set(mbag_t t,mbag_item_t *is) |
|
|
|
|
{ |
|
|
|
|
mavl_del(t,is); |
|
|
|
|
mavl_add(t,is); |
|
|
|
|
return 1; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
struct mbag_item *i = mavl_get(s, is); |
|
|
|
|
if (i) { |
|
|
|
|
mbag_del_data(i); |
|
|
|
|
return i; |
|
|
|
|
} |
|
|
|
|
mavl_add(t,is); |
|
|
|
|
*/ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline int mbag_set_byte(mbag_t s, const char *id, uint8_t byte) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return 0; |
|
|
|
|
i->byte = byte; |
|
|
|
|
i->type = &mbag_type_byte; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline struct mbag_item * mbag_set_word(mbag_t s, const char *id, uint16_t word) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return 0; |
|
|
|
|
i->word = word; |
|
|
|
|
i->type = &mbag_type_word; |
|
|
|
|
return i; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline struct mbag_item * mbag_set_dword(mbag_t s, const char *id, uint32_t dword) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return NULL; |
|
|
|
|
i->dword = dword; |
|
|
|
|
i->type = &mtype_dword; |
|
|
|
|
return i; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline int mbag_i_set_mbag(mbag_t s, uint32_t id, mbag_t mbag) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_i_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return 0; |
|
|
|
|
i->data = mbag; |
|
|
|
|
i->type = &mbag_type_mbag; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline int mbag_set_mbag(mbag_t s, const char *id, mbag_t mbag) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return 0; |
|
|
|
|
i->data = mbag; |
|
|
|
|
i->type = &mbag_type_mbag; |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline int mbag_set_data(mbag_t s, const char *id, const struct mbag_typedef *type, void *data) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return 0; |
|
|
|
|
i->data = data; |
|
|
|
|
i->type = type; |
|
|
|
|
return 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline bstrv_t mbag_set_bstrv(mbag_t s, const char *id, uint32_t vendor_id, |
|
|
|
|
uint8_t * version, int len) |
|
|
|
|
{ |
|
|
|
|
mbag_item_t *i = mbag_item_create(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return NULL; |
|
|
|
|
|
|
|
|
|
i->type = MBAG_VENDORSTR; |
|
|
|
|
i->data = bstrv_create(vendor_id,version,len); |
|
|
|
|
return i->data; |
|
|
|
|
} |
|
|
|
|
bstrv_t mbag_set_bstrv(mbag_t s, const char *id, uint32_t vendor_id, |
|
|
|
|
uint8_t * version, int len); |
|
|
|
|
int mbag_set_data(mbag_t s, const char *id, const struct mbag_typedef *type, void *data); |
|
|
|
|
int mbag_set_mbag(mbag_t s, const char *id, mbag_t mbag); |
|
|
|
|
int mbag_i_set_mbag(mbag_t s, uint32_t id, mbag_t mbag); |
|
|
|
|
struct mbag_item * mbag_set_dword(mbag_t s, const char *id, uint32_t dword); |
|
|
|
|
struct mbag_item * mbag_set_word(mbag_t s, const char *id, uint16_t word); |
|
|
|
|
int mbag_set_byte(mbag_t s, const char *id, uint8_t byte); |
|
|
|
|
int mbag_set(mbag_t t,mbag_item_t *is); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mbag_item_t *mbag_item_new(mbagtype_t type); |
|
|
|
@ -281,42 +196,19 @@ mbag_item_t *mbag_item_new(mbagtype_t type); |
|
|
|
|
#define mbag_set_bstr16(m,i,d) mbag_set_data(m,i,MBAG_BSTR16,d) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline mbag_item_t *mbag_get(mbag_t s, const char *id) |
|
|
|
|
{ |
|
|
|
|
mbag_item_t i; |
|
|
|
|
i.id = id; |
|
|
|
|
i.type=0; |
|
|
|
|
return mavl_get(s, &i); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline mbag_item_t *mbag_i_get(mbag_t s, uint32_t id) |
|
|
|
|
{ |
|
|
|
|
mbag_item_t i; |
|
|
|
|
i.iid = id; |
|
|
|
|
i.type=0; |
|
|
|
|
return mavl_get(s, &i); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void * mbag_get_data(mbag_t s, const char *id, const struct mbag_typedef * type, void * def); |
|
|
|
|
void mbag_del(mbag_t s,const char *id); |
|
|
|
|
mbag_item_t *mbag_i_get(mbag_t s, uint32_t id); |
|
|
|
|
mbag_item_t *mbag_get(mbag_t s, const char *id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static inline void mbag_del(mbag_t s,const char *id) |
|
|
|
|
{ |
|
|
|
|
mbag_item_t i; |
|
|
|
|
i.id = id; |
|
|
|
|
i.type=0; |
|
|
|
|
mavl_del(s, &i); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline void * mbag_get_data(mbag_t s, const char *id, const struct mbag_typedef * type, void * def) |
|
|
|
|
{ |
|
|
|
|
struct mbag_item *i = mbag_get(s, id); |
|
|
|
|
if (!i) |
|
|
|
|
return def; |
|
|
|
|
if (i->type != type) |
|
|
|
|
return def; |
|
|
|
|
return i->data; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define mbag_get_bstr(m,i,d) mbag_get_data(m,i,MBAG_BSTR,d) |
|
|
|
|
#define mbag_get_bstr16(m,i,d) mbag_get_data(m,i,MBAG_BSTR16,d) |
|
|
|
|