core :: CString :: utf8_length
self
starting at from
, for a length of byte_length
# Number of UTF-8 characters in `self` starting at `from`, for a length of `byte_length`
fun utf8_length(from, byte_length: Int): Int is intern do
var st = from
var ln = 0
while byte_length > 0 do
while byte_length >= 4 do
var i = fetch_4_chars(st)
if i & 0x80808080u32 != 0u32 then break
byte_length -= 4
st += 4
ln += 4
end
if byte_length == 0 then break
var cln = length_of_char_at(st)
st += cln
ln += 1
byte_length -= cln
end
return ln
end
lib/core/text/native.nit:283,2--302,4