diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2014-12-18 13:50:19 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2014-12-18 16:57:18 +0100 |
| commit | b8456fa2615480fa242c6992ca89481a8370fe5f (patch) | |
| tree | 4836c8561242182ea5d13d735fe6432e9d5624c4 /register.c | |
| parent | 46ffdc3dff7a8bf87f3b1004c3c12a7f6fcd8d6c (diff) | |
| download | vis-b8456fa2615480fa242c6992ca89481a8370fe5f.tar.gz vis-b8456fa2615480fa242c6992ca89481a8370fe5f.tar.xz | |
Macro support
At some point this should be optimized further at the moment there
is some 20 byte overhead for each entered key.
Diffstat (limited to 'register.c')
| -rw-r--r-- | register.c | 30 |
1 files changed, 5 insertions, 25 deletions
@@ -2,37 +2,17 @@ #include <string.h> #include "register.h" +#include "buffer.h" +#include "text.h" #include "util.h" -#define REG_SIZE 1024 - -static bool register_alloc(Register *reg, size_t size) { - if (size < REG_SIZE) - size = REG_SIZE; - if (reg->size < size) { - reg->data = realloc(reg->data, size); - if (!reg->data) { - reg->size = 0; - reg->len = 0; - return false; - } - reg->size = size; - } - return true; -} - void register_free(Register *reg) { - if (!reg) - return; - free(reg->data); - reg->data = NULL; - reg->len = 0; - reg->size = 0; + buffer_free((Buffer*)reg); } bool register_put(Register *reg, Text *txt, Filerange *range) { size_t len = range->end - range->start; - if (!register_alloc(reg, len)) + if (!buffer_alloc((Buffer*)reg, len)) return false; reg->len = text_bytes_get(txt, range->start, len, reg->data); return true; @@ -41,7 +21,7 @@ bool register_put(Register *reg, Text *txt, Filerange *range) { bool register_append(Register *reg, Text *txt, Filerange *range) { size_t rem = reg->size - reg->len; size_t len = range->end - range->start; - if (len > rem && !register_alloc(reg, reg->size + len - rem)) + if (len > rem && !buffer_alloc((Buffer*)reg, reg->size + len - rem)) return false; reg->len += text_bytes_get(txt, range->start, len, reg->data + reg->len); return true; |
