core :: CString :: set_char_at
pos
to the value of c
, encoded in UTF-8Very unsafe, make sure to have room for this char prior to calling this function.
# Sets the next bytes at position `pos` to the value of `c`, encoded in UTF-8
#
# Very unsafe, make sure to have room for this char prior to calling this function.
private fun set_char_at(pos: Int, c: Char) do
var cp = c.code_point
if cp < 128 then
self[pos] = cp
return
end
var ln = c.u8char_len
if ln == 2 then
self[pos] = 0xC0 | ((cp & 0x7C0) >> 6)
self[pos + 1] = 0x80 | (cp & 0x3F)
else if ln == 3 then
self[pos] = 0xE0 | ((cp & 0xF000) >> 12)
self[pos + 1] = 0x80 | ((cp & 0xFC0) >> 6)
self[pos + 2] = 0x80 | (cp & 0x3F)
else if ln == 4 then
self[pos] = 0xF0 | ((cp & 0x1C0000) >> 18)
self[pos + 1] = 0x80 | ((cp & 0x3F000) >> 12)
self[pos + 2] = 0x80 | ((cp & 0xFC0) >> 6)
self[pos + 3] = 0x80 | (cp & 0x3F)
end
end
lib/core/text/flat.nit:1439,2--1462,4