feat(lander): store entry type as single byte
This commit is contained in:
parent
9c03a36aa2
commit
0efcdece48
4 changed files with 57 additions and 43 deletions
|
|
@ -41,8 +41,19 @@ lsm_error lsm_entry_attr_get(lsm_str **out, lsm_entry_handle *handle,
|
|||
* @param entry entry to search for
|
||||
* @param type type of attribute to return
|
||||
*/
|
||||
lsm_error lsm_entry_attr_get_num(uint64_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type);
|
||||
lsm_error lsm_entry_attr_get_uint64_t(uint64_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type);
|
||||
|
||||
/**
|
||||
* Convenience wrapper around `lsm_entry_attr_get` that can be used if we know
|
||||
* beforehand the attribute value is an 8-bit number.
|
||||
*
|
||||
* @param out where to store attribute data
|
||||
* @param entry entry to search for
|
||||
* @param type type of attribute to return
|
||||
*/
|
||||
lsm_error lsm_entry_attr_get_uint8_t(uint8_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type);
|
||||
|
||||
/**
|
||||
* Add a new attribute to the entry.
|
||||
|
|
@ -62,8 +73,19 @@ lsm_error lsm_entry_attr_insert(lsm_entry_handle *handle, uint8_t type,
|
|||
* @param type type of attribute to add
|
||||
* @param data data of attribute
|
||||
*/
|
||||
lsm_error lsm_entry_attr_insert_num(lsm_entry_handle *handle, uint8_t type,
|
||||
uint64_t data);
|
||||
lsm_error lsm_entry_attr_insert_uint64_t(lsm_entry_handle *handle, uint8_t type,
|
||||
uint64_t data);
|
||||
|
||||
/**
|
||||
* Convenience wrapper around `lsm_entry_attr_insert` that can be used if the
|
||||
* data to be stored is an 8-bit number.
|
||||
*
|
||||
* @param entry entry to modify
|
||||
* @param type type of attribute to add
|
||||
* @param data data of attribute
|
||||
*/
|
||||
lsm_error lsm_entry_attr_insert_uint8_t(lsm_entry_handle *handle, uint8_t type,
|
||||
uint8_t data);
|
||||
|
||||
/**
|
||||
* Remove an atribute from the given entry, if present.
|
||||
|
|
|
|||
|
|
@ -79,8 +79,8 @@ lsm_error lsm_entry_attr_get(lsm_str **out, lsm_entry_handle *handle,
|
|||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
lsm_error lsm_entry_attr_get_num(uint64_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type) {
|
||||
lsm_error lsm_entry_attr_get_uint64_t(uint64_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type) {
|
||||
lsm_str *s;
|
||||
|
||||
LSM_RES(lsm_entry_attr_get(&s, handle, type));
|
||||
|
|
@ -96,6 +96,17 @@ lsm_error lsm_entry_attr_get_num(uint64_t *out, lsm_entry_handle *handle,
|
|||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
lsm_error lsm_entry_attr_get_uint8_t(uint8_t *out, lsm_entry_handle *handle,
|
||||
uint8_t type) {
|
||||
lsm_str *s;
|
||||
|
||||
LSM_RES(lsm_entry_attr_get(&s, handle, type));
|
||||
|
||||
*out = lsm_str_char(s, 0);
|
||||
|
||||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
lsm_error lsm_entry_attr_remove(lsm_str **out, lsm_entry_handle *handle,
|
||||
uint8_t type) {
|
||||
if (!lsm_entry_attr_present(handle, type)) {
|
||||
|
|
@ -169,8 +180,8 @@ lsm_error lsm_entry_attr_insert(lsm_entry_handle *handle, uint8_t type,
|
|||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
lsm_error lsm_entry_attr_insert_num(lsm_entry_handle *handle, uint8_t type,
|
||||
uint64_t data) {
|
||||
lsm_error lsm_entry_attr_insert_uint64_t(lsm_entry_handle *handle, uint8_t type,
|
||||
uint64_t data) {
|
||||
lsm_str *s;
|
||||
LSM_RES(
|
||||
lsm_str_init_copy_n(&s, (char *)&data, sizeof(uint64_t) / sizeof(char)));
|
||||
|
|
@ -178,6 +189,15 @@ lsm_error lsm_entry_attr_insert_num(lsm_entry_handle *handle, uint8_t type,
|
|||
return lsm_entry_attr_insert(handle, type, s);
|
||||
}
|
||||
|
||||
lsm_error lsm_entry_attr_insert_uint8_t(lsm_entry_handle *handle, uint8_t type,
|
||||
uint8_t data) {
|
||||
lsm_str *s;
|
||||
LSM_RES(
|
||||
lsm_str_init_copy_n(&s, (char *)&data, sizeof(uint8_t) / sizeof(char)));
|
||||
|
||||
return lsm_entry_attr_insert(handle, type, s);
|
||||
}
|
||||
|
||||
uint64_t lsm_entry_data_len(lsm_entry_handle *handle) {
|
||||
return handle->wrapper->entry->data_len;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue