diff options
author | June McEnroe <june@causal.agency> | 2018-11-20 18:36:45 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-11-20 18:36:45 -0500 |
commit | 0b825562a1da4930973f5e6065e46f77a7d144ce (patch) | |
tree | b1ba65579d4354960e62c2d785a0c05d4c83f01f /bin/edi/buffer.c | |
parent | Alias ls='ls -p' (diff) | |
download | src-0b825562a1da4930973f5e6065e46f77a7d144ce.tar.gz src-0b825562a1da4930973f5e6065e46f77a7d144ce.zip |
Add bufferDelete
Diffstat (limited to 'bin/edi/buffer.c')
-rw-r--r-- | bin/edi/buffer.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/bin/edi/buffer.c b/bin/edi/buffer.c index e9422951..62f55bee 100644 --- a/bin/edi/buffer.c +++ b/bin/edi/buffer.c @@ -66,6 +66,12 @@ void bufferAppend(struct Buffer *buf, wchar_t ch) { buf->slice.len++; } +void bufferDelete(struct Buffer *buf) { + if (!buf->slice.len) return; + buf->slice.len--; + buf->len--; +} + wchar_t *bufferDest(struct Buffer *buf, size_t len) { if (buf->len + len > buf->cap) { while (len > buf->cap) buf->cap *= 2; @@ -116,6 +122,16 @@ int main() { bufferFree(&buf); buf = bufferAlloc(4); + bufferInsert(&buf); + bufferAppend(&buf, L'A'); + bufferAppend(&buf, L'B'); + bufferDelete(&buf); + assert(!wcsncmp(L"A", buf.slice.ptr, buf.slice.len)); + bufferAppend(&buf, L'C'); + assert(!wcsncmp(L"AC", buf.slice.ptr, buf.slice.len)); + bufferFree(&buf); + + buf = bufferAlloc(4); wchar_t *dest = bufferDest(&buf, 2); dest[0] = L'A'; |