diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-01-30 20:11:52 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-01-30 20:11:52 +0100 |
| commit | d94bb93f10365a39d90cc0d4d4b151fc797767df (patch) | |
| tree | 8d92fd4fa5837db74a3360e551a5243906bf2fa4 /register.c | |
| parent | f0e0c0991c5a3d50582678e1b05d83d375057709 (diff) | |
| download | vis-d94bb93f10365a39d90cc0d4d4b151fc797767df.tar.gz vis-d94bb93f10365a39d90cc0d4d4b151fc797767df.tar.xz | |
Implement blackhole register "_
Diffstat (limited to 'register.c')
| -rw-r--r-- | register.c | 43 |
1 files changed, 33 insertions, 10 deletions
@@ -11,22 +11,45 @@ void register_release(Register *reg) { } const char *register_get(Register *reg, size_t *len) { - *len = reg->buf.len; - return reg->buf.data; + switch (reg->type) { + case REGISTER_NORMAL: + *len = reg->buf.len; + return reg->buf.data; + case REGISTER_BLACKHOLE: + default: + *len = 0; + return NULL; + } } bool register_put(Register *reg, Text *txt, Filerange *range) { - size_t len = text_range_size(range); - if (!buffer_grow(®->buf, len)) + switch (reg->type) { + case REGISTER_NORMAL: + { + size_t len = text_range_size(range); + if (!buffer_grow(®->buf, len)) + return false; + reg->buf.len = text_bytes_get(txt, range->start, len, reg->buf.data); + return true; + } + case REGISTER_BLACKHOLE: + return true; + default: return false; - 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 len = text_range_size(range); - if (!buffer_grow(®->buf, reg->buf.len + len)) + switch (reg->type) { + case REGISTER_NORMAL: + { + size_t len = text_range_size(range); + if (!buffer_grow(®->buf, reg->buf.len + len)) + return false; + reg->buf.len += text_bytes_get(txt, range->start, len, reg->buf.data + reg->buf.len); + return true; + } + default: return false; - reg->buf.len += text_bytes_get(txt, range->start, len, reg->buf.data + reg->buf.len); - return true; + } } |
