forked from GitHub/gf-core
add gu_buf_insert in libgu
This commit is contained in:
@@ -201,6 +201,20 @@ gu_buf_freeze(GuBuf* buf, GuPool* pool)
|
||||
return seq;
|
||||
}
|
||||
|
||||
void*
|
||||
gu_buf_insert(GuBuf* buf, size_t index)
|
||||
{
|
||||
size_t len = buf->seq->len;
|
||||
gu_buf_require(buf, len + 1);
|
||||
|
||||
uint8_t* target =
|
||||
buf->seq->data + buf->elem_size * index;
|
||||
memmove(target+buf->elem_size, target, (len-index)*buf->elem_size);
|
||||
|
||||
buf->seq->len++;
|
||||
return target;
|
||||
}
|
||||
|
||||
static void
|
||||
gu_quick_sort(GuBuf *buf, GuOrder *order, int left, int right)
|
||||
{
|
||||
|
||||
@@ -102,6 +102,9 @@ gu_buf_trim_n(GuBuf* buf, size_t n_elems);
|
||||
const void*
|
||||
gu_buf_trim(GuBuf* buf);
|
||||
|
||||
void*
|
||||
gu_buf_insert(GuBuf* buf, size_t n_index);
|
||||
|
||||
void
|
||||
gu_buf_flush(GuBuf* buf);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user