def decode.lead
import bolt@1.27.0.0/src/lsp/frame.bend as Frameimport Base
15# a lead byte, by its high nibble; a stray continuation byte stands for itself
16def decode.lead(hi: U32, +bb: U32, out: List<&2, Char>) -> Dec:
17 match hi:
18 case 12:
19 Dec{1n, (bb .&. 31 : U32), out}
20 case 13:
21 Dec{1n, (bb .&. 31 : U32), out}
22 case 14:
23 Dec{2n, (bb .&. 15 : U32), out}
24 case 15:
25 Dec{3n, (bb .&. 7 : U32), out}
26 case other:
27 Dec{0n, 0, Char.from_u32(bb) <> out}