core/unicode/utf16: add rune_count proc

This returns the number of runes in a u16 slice
This commit is contained in:
Lucas Perlind
2024-10-21 08:29:07 +11:00
committed by flysand7
parent f1667422e6
commit fc3ea5b3d9

View File

@@ -106,6 +106,18 @@ decode :: proc(d: []rune, s: []u16) -> (n: int) {
return
}
rune_count :: proc(s: []u16) -> (n: int) {
for i := 0; i < len(s); i += 1 {
c := s[i]
if _surr1 <= c && c < _surr2 && i+1 < len(s) &&
_surr2 <= s[i+1] && s[i+1] < _surr3 {
i += 1
}
n += 1
}
return
}
decode_to_utf8 :: proc(d: []byte, s: []u16) -> (n: int) {
for i := 0; i < len(s); i += 1 {
@@ -127,4 +139,4 @@ decode_to_utf8 :: proc(d: []byte, s: []u16) -> (n: int) {
n += copy(d[n:], b[:w])
}
return
}
}