From b8456fa2615480fa242c6992ca89481a8370fe5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 18 Dec 2014 13:50:19 +0100 Subject: Macro support At some point this should be optimized further at the moment there is some 20 byte overhead for each entered key. --- register.c | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) (limited to 'register.c') diff --git a/register.c b/register.c index db43d71..cc25414 100644 --- a/register.c +++ b/register.c @@ -2,37 +2,17 @@ #include #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; -- cgit v1.2.3