diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-01-30 19:46:18 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-01-30 19:59:48 +0100 |
| commit | f0e0c0991c5a3d50582678e1b05d83d375057709 (patch) | |
| tree | bf0f29bbdbe8f495b4d95eb0fe533915fcccacef /register.c | |
| parent | 979ab795bc9d19524be524c79265c6b952199a22 (diff) | |
| download | vis-f0e0c0991c5a3d50582678e1b05d83d375057709.tar.gz vis-f0e0c0991c5a3d50582678e1b05d83d375057709.tar.xz | |
Cleanup register implementation
Diffstat (limited to 'register.c')
| -rw-r--r-- | register.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -7,22 +7,26 @@ #include "util.h" void register_release(Register *reg) { - buffer_release((Buffer*)reg); + buffer_release(®->buf); +} + +const char *register_get(Register *reg, size_t *len) { + *len = reg->buf.len; + return reg->buf.data; } bool register_put(Register *reg, Text *txt, Filerange *range) { - size_t len = range->end - range->start; - if (!buffer_grow((Buffer*)reg, len)) + size_t len = text_range_size(range); + if (!buffer_grow(®->buf, len)) return false; - reg->len = text_bytes_get(txt, range->start, len, reg->data); + reg->buf.len = text_bytes_get(txt, range->start, len, reg->buf.data); return true; } 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 && !buffer_grow((Buffer*)reg, reg->size + len - rem)) + size_t len = text_range_size(range); + if (!buffer_grow(®->buf, reg->buf.len + len)) return false; - reg->len += text_bytes_get(txt, range->start, len, reg->data + reg->len); + reg->buf.len += text_bytes_get(txt, range->start, len, reg->buf.data + reg->buf.len); return true; } |
