diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2020-09-26 14:50:28 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2020-10-10 10:03:17 +0200 |
| commit | 9bb3fbbbc6445b457f1dca8ae2e0ea2eb915753d (patch) | |
| tree | 765f5c28b39d15bcbec10fd836c7b1b1e48930c5 /text.c | |
| parent | b8e5bb2646b74b423e0e9d276932578cf7cb6f9f (diff) | |
| download | vis-9bb3fbbbc6445b457f1dca8ae2e0ea2eb915753d.tar.gz vis-9bb3fbbbc6445b457f1dca8ae2e0ea2eb915753d.tar.xz | |
text: introduce text_iterator_has_{next,prev}
Abstract away access to `it->piece` inorder to enable different
implementations/backends.
Diffstat (limited to 'text.c')
| -rw-r--r-- | text.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -1438,15 +1438,23 @@ bool text_iterator_valid(const Iterator *it) { return it->piece && it->piece->text; } +bool text_iterator_has_next(const Iterator *it) { + return it->piece && it->piece->next; +} + +bool text_iterator_has_prev(const Iterator *it) { + return it->piece && it->piece->prev; +} + bool text_iterator_byte_next(Iterator *it, char *b) { - if (!it->piece || !it->piece->next) + if (!text_iterator_has_next(it)) return false; bool eof = true; if (it->text < it->end) { it->text++; it->pos++; eof = false; - } else if (!it->piece->prev) { + } else if (!text_iterator_has_prev(it)) { eof = false; } @@ -1466,9 +1474,9 @@ bool text_iterator_byte_next(Iterator *it, char *b) { } bool text_iterator_byte_prev(Iterator *it, char *b) { - if (!it->piece || !it->piece->prev) + if (!text_iterator_has_prev(it)) return false; - bool eof = !it->piece->next; + bool eof = !text_iterator_has_next(it); while (it->text == it->start) { if (!text_iterator_prev(it)) { if (!eof) |
