#ifndef _LIBINPUT_INPUT_GAPBUFFER_H #define _LIBINPUT_INPUT_GAPBUFFER_H #include struct in_gb { char* buffer; size_t size; size_t gap_start; size_t gap_end; }; typedef void* (*in_gb_malloc_func_t)(void*, size_t); typedef void* (*in_gb_realloc_func_t)(void*, void*, size_t, size_t); typedef void (*in_gb_free_func_t)(void*, void*); void in_gb_init(in_gb_malloc_func_t mallocfn, void* ctx, struct in_gb* gb, size_t capacity); void in_gb_fini(in_gb_free_func_t freefn, void* ctx, struct in_gb* gb); void in_gb_move(struct in_gb* gb, size_t pos); void in_gb_insert(in_gb_realloc_func_t reallocfn, void* ctx, struct in_gb* gb, char c); void in_gb_backspace(struct in_gb* gb); void in_gb_grow(in_gb_realloc_func_t reallocfn, void* ctx, struct in_gb* gb); size_t in_gb_length(struct in_gb* gb); char* in_gb_string_at(in_gb_malloc_func_t mallocfn, void* ctx, struct in_gb* gb, size_t pos); void in_gb_concat(in_gb_realloc_func_t reallocfn, void* ctx, struct in_gb* dest, struct in_gb* src); #endif // _LIBINPUT_INPUT_GAPBUFFER_H