def utf8.lead
mylsm-lsm-store@0.6.0.1 · src/StorageBytes.bend:8
import mylsm-lsm-store@0.6.0.1/src/StorageBytes.bend as StorageBytes
import Base
8def utf8.lead(+byte: U32, +out: String) -> Utf8State:
9 Utf8State{
10 Bool.pick(U32,
11 U32.is_lt(byte, 128), 0,
12 Bool.pick(U32, U32.is_le(194, byte) && U32.is_le(byte, 223), 1,
13 Bool.pick(U32, U32.is_eq(byte, 224) || U32.is_le(225, byte) && U32.is_le(byte, 236) || U32.is_le(238, byte) && U32.is_le(byte, 239) || U32.is_eq(byte, 237), 2,
14 Bool.pick(U32, U32.is_le(240, byte) && U32.is_le(byte, 244), 3, 0)))),
15 Bool.pick(U32, U32.is_eq(byte, 224), 160,
16 Bool.pick(U32, U32.is_eq(byte, 240), 144, 128)),
17 Bool.pick(U32, U32.is_eq(byte, 237), 159,
18 Bool.pick(U32, U32.is_eq(byte, 244), 143, 191)),
19 Bool.pick(U32,
20 U32.is_lt(byte, 128), byte,
21 Bool.pick(U32, U32.is_le(194, byte) && U32.is_le(byte, 223), U32.and(byte, 31),
22 Bool.pick(U32, U32.is_le(224, byte) && U32.is_le(byte, 239), U32.and(byte, 15),
23 Bool.pick(U32, U32.is_le(240, byte) && U32.is_le(byte, 244), U32.and(byte, 7), 0)))),
24 Bool.pick(String, U32.is_lt(byte, 128), SCon{Chr{byte}, out}, out),
25 U32.is_lt(byte, 128) || U32.is_le(194, byte) && U32.is_le(byte, 244)
26 }