diff options
| author | Tyge Løvset <[email protected]> | 2022-08-10 14:55:01 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-08-10 14:55:01 +0200 |
| commit | 4fe41778b4429c4974166e5ae531577dba22bed5 (patch) | |
| tree | 5f47a376aec6d1fb0b1c5da7cf109623b7d3ed98 /include/stc/csview.h | |
| parent | 8eea6dfb61e9922de5940be975f4a51dcf4a62a3 (diff) | |
| download | STC-modified-4fe41778b4429c4974166e5ae531577dba22bed5.tar.gz STC-modified-4fe41778b4429c4974166e5ae531577dba22bed5.zip | |
Fixed iters for carr2/carr3 and cstr/csview.
Diffstat (limited to 'include/stc/csview.h')
| -rw-r--r-- | include/stc/csview.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/include/stc/csview.h b/include/stc/csview.h index ef545bf2..c48c6ae6 100644 --- a/include/stc/csview.h +++ b/include/stc/csview.h @@ -69,15 +69,21 @@ STC_INLINE csview csview_slice(csview sv, size_t p1, size_t p2) { return sv; } -/* iterator */ -STC_INLINE csview_iter csview_begin(const csview* self) - { return c_make(csview_iter){.u8 = {{self->str, utf8_chr_size(self->str)}}}; } +/* utf8 iterator */ +STC_INLINE csview_iter csview_begin(const csview* self) { + if (!self->size) return c_make(csview_iter){NULL}; + return c_make(csview_iter){.u8 = {{self->str, utf8_chr_size(self->str)}, self->str + self->size}}; +} + +STC_INLINE csview_iter csview_end(const csview* self) + { return c_make(csview_iter){.u8 = {{NULL}, self->str + self->size}}; } -STC_INLINE csview_iter csview_end(const csview* self) - { return c_make(csview_iter){self->str + self->size}; } +STC_INLINE void csview_next(csview_iter* it) { + it->ref += it->u8.chr.size; + it->u8.chr.size = utf8_chr_size(it->ref); + if (it->ref == it->u8._end) it->ref = NULL; +} -STC_INLINE void csview_next(csview_iter* it) - { it->ref += it->u8.chr.size; it->u8.chr.size = utf8_chr_size(it->ref); } /* utf8 */ STC_INLINE size_t csview_u8_size(csview sv) |
