def inf.go

bend-kit-zlib@0.5.1.0 · zlib.bend:467

import bend-kit-zlib@0.5.1.0/zlib.bend as Zlib
import Base

467# Every step reads at least one bit or fails, so 8 steps per input byte always finish a valid stream.
468def inf.go(k: Nat, st: Is) -> Is:
469  match k:
470    case 0n:
471      st
472    case 1n+f:
473      Is{b, o, mode, +last} = st
474      match mode:
475        case MoHead{}:
476          inf.go(f, inf.head(br.take(b, 3), o))
477        case MoCodes{lit, dist}:
478          inf.go(f, inf.sym(br.sym(lit, b), dist, o, last))
479        case MoDone{}:
480          Is{b, o, MoDone{}, last}
481        case MoBad{}:
482          Is{b, o, MoBad{}, last}

Uses (7)

Used by (1)