gap_buffer_t *gap_buffer_create_from_str(const u8 *str, size_t numelts, size_t elemsize) { gap_buffer_t *this = gap_buffer_create(elemsize); for(int i = 0; i < numelts; i++) { gap_buffer_insert(this, i, ((u8 *)str) + i*elemsize); } return this; }
int main (){ int a=0, b=1, c=2, d=3, e=4, f=5; gap_buffer g = create_gap_buffer (); gap_buffer_insert(g, &a, 0); printf("inserting 0 pos 0\n"); gap_buffer_dump(g); gap_buffer_insert(g, &b, 1); printf("inserting 1 pos 1\n"); gap_buffer_dump(g); gap_buffer_insert(g, &c, 2); printf("inserting 2 pos 2\n"); gap_buffer_dump(g); gap_buffer_insert(g, &d, 1); printf("inserting 3 pos 1\n"); gap_buffer_dump(g); gap_buffer_insert(g, &e, 0); printf("inserting 4 pos 0\n"); gap_buffer_dump(g); gap_buffer_insert(g, &f, 2); printf("inserting 5 pos 2\n"); gap_buffer_dump(g); destroy_gap_buffer(g); return 0; }
hale_internal inline void _buffer_insert(GapBuffer *buffer, memi offset, ch *text, memi size) { gap_buffer_insert(buffer, offset, text, size); }