CE optimize KB_DELETE
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m6s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m6s
This commit is contained in:
@@ -113,9 +113,25 @@ char* gapbuffer_string_at (gb_malloc_func_t mallocfn, void* ctx, struct gapbuffe
|
||||
return res;
|
||||
}
|
||||
|
||||
char gapbuffer_at (struct gapbuffer* gb, size_t index) {
|
||||
if (index < gb->gap_start)
|
||||
return gb->buffer[index];
|
||||
else
|
||||
return gb->buffer[index + (gb->gap_end - gb->gap_start)];
|
||||
void gapbuffer_concat (gb_realloc_func_t reallocfn, void* ctx, struct gapbuffer* dest,
|
||||
struct gapbuffer* src) {
|
||||
size_t src_len = gapbuffer_length (src);
|
||||
|
||||
if (src_len == 0)
|
||||
return;
|
||||
|
||||
while ((dest->gap_end - dest->gap_start) < src_len)
|
||||
gapbuffer_grow (reallocfn, ctx, dest);
|
||||
|
||||
gapbuffer_move (dest, gapbuffer_length (dest));
|
||||
|
||||
size_t part1_len = src->gap_start;
|
||||
memcpy (dest->buffer + dest->gap_start, src->buffer, part1_len);
|
||||
dest->gap_start += part1_len;
|
||||
|
||||
size_t part2_len = src->size - src->gap_end;
|
||||
if (part2_len > 0) {
|
||||
memcpy (dest->buffer + dest->gap_start, src->buffer + src->gap_end, part2_len);
|
||||
dest->gap_start += part2_len;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user