feat(lsm): add str copy_n functions
This commit is contained in:
parent
afd18d3a37
commit
7a21bed2b2
2 changed files with 41 additions and 2 deletions
|
|
@ -47,6 +47,20 @@ lsm_error lsm_str_init_copy(lsm_str **ptr, char *s) {
|
|||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
lsm_error lsm_str_init_copy_n(lsm_str **ptr, char *s, uint64_t len) {
|
||||
lsm_str *str = calloc(1, sizeof(lsm_str));
|
||||
|
||||
if (str == NULL) {
|
||||
return lsm_error_failed_alloc;
|
||||
}
|
||||
|
||||
lsm_str_overwrite_copy_n(str, s, len);
|
||||
|
||||
*ptr = str;
|
||||
|
||||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
void lsm_str_overwrite(lsm_str *str, char *s) {
|
||||
str->len = strlen(s);
|
||||
|
||||
|
|
@ -59,8 +73,10 @@ void lsm_str_overwrite(lsm_str *str, char *s) {
|
|||
}
|
||||
|
||||
lsm_error lsm_str_overwrite_copy(lsm_str *str, char *s) {
|
||||
str->len = strlen(s);
|
||||
return lsm_str_overwrite_copy_n(str, s, strlen(s));
|
||||
}
|
||||
|
||||
lsm_error lsm_str_overwrite_copy_n(lsm_str *str, char *s, uint64_t len) {
|
||||
if (str->len <= 8) {
|
||||
memcpy(str->data.val, s, str->len);
|
||||
} else {
|
||||
|
|
@ -74,6 +90,8 @@ lsm_error lsm_str_overwrite_copy(lsm_str *str, char *s) {
|
|||
str->data.ptr = buf;
|
||||
}
|
||||
|
||||
str->len = len;
|
||||
|
||||
return lsm_error_ok;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue