def decode.hit

bend-kit-bits@0.1.0.1 · bits.bend:297

import bend-kit-bits@0.1.0.1/bits.bend as Bits
import Base

297# Bits past the end may be garbage in w: a code's entry repeats over every suffix, so only
298# its own len bits pick it, and len <= left keeps them inside the stream.
299def decode.hit(+msb: Bool, +max: U32, +len: U32, +pos: U32, +left: U32, buf: Array<U32>, r: Array<U32> & U32) -> Huff & Reader & Maybe<&2, U32>:
300  (t, +e) = r
301  +l = (e .&. 31 : U32)
302  +ok = Bool.and(U32.is_ne(l, 0), U32.is_le(l, left))
303  (Huff{msb, max, t}, Reader{len, buf, Bool.pick(U32, ok, (pos + l : U32), pos)}, Bool.pick(Maybe<&2, U32>, ok, Some{U32.shrn(e, 5n)}, None{}))

Uses (15)

Used by (1)