def B64.next.go

bend-kube-runtime@0.2.0.0 · src/base64.bend:44

import bend-kube-runtime@0.2.0.0/src/base64.bend as Base64
import Base

44def B64.next.go(+acc: U32, +bits: U32, ok: Bool, +v: U32, skip: Bool, bad: Bool, full: Bool) ->
45  B64:
46  match skip bad full:
47    case True{} _ _:
48      B64{acc, bits, ok}
49    case False{} True{} _:
50      B64{acc, bits, False{}}
51    case False{} False{} True{}:
52      # 8 bits are ready: the byte leaves, bits - 2 stay
53      B64{(((acc << 6n) .|. v) .&. ((1 << U32.to_nat((bits - 2 : U32))) - 1) : U32),
54        (bits - 2 : U32), ok}
55    case False{} False{} False{}:
56      B64{((acc << 6n) .|. v : U32), (bits + 6 : U32), ok}

Uses (9)

Used by (1)