def dec.n

bend-kit-regex@0.8.0.0 · regex.bend:1340

import bend-kit-regex@0.8.0.0/regex.bend as Regex
import Base

1340# Overlong forms, surrogates, and code points past U+10FFFF are invalid.
1341def dec.n(+b0: U32, +b1: U32, +b2: U32, +b3: U32) -> Dc:
1342  +x1 = (b1 .&. 63 : U32)
1343  +x2 = (b2 .&. 63 : U32)
1344  +x3 = (b3 .&. 63 : U32)
1345  +c2 = (((b0 .&. 31) << 6n) .|. x1 : U32)
1346  +c3 = ((((b0 .&. 15) << 12n) .|. (x1 << 6n)) .|. x2 : U32)
1347  +c4 = (((((b0 .&. 7) << 18n) .|. (x1 << 12n)) .|. (x2 << 6n)) .|. x3 : U32)
1348  +ok2 = U32.is_le(192, b0) && U32.is_lt(b0, 224) && cont(b1) && U32.is_le(128, c2)
1349  +ok3 = U32.is_le(224, b0) && U32.is_lt(b0, 240) && cont(b1) && cont(b2) && U32.is_le(2048, c3) && (U32.is_lt(c3, 55296) || U32.is_lt(57343, c3))
1350  +ok4 = U32.is_le(240, b0) && U32.is_lt(b0, 248) && cont(b1) && cont(b2) && cont(b3) && U32.is_le(65536, c4) && U32.is_le(c4, 1114111)
1351  dec.pick(ok2, ok3, ok4, c2, c3, c4)

Uses (11)

Used by (1)