def table.trim.go

bend-kit-http2@0.4.0.0 · hpack.bend:267

import bend-kit-http2@0.4.0.0/hpack.bend as Hpack
import Base

267def table.trim.go(xs: List<&2, Field>, +room: U32, keep: Bool, +acc: List<&2, Field>, +used: U32) -> List<&2, Field> & U32:
268  match xs keep:
269    case Nil{} _:
270      (List.reverse(&2, Field, acc), used)
271    case Con{field, tail} False{}:
272      (List.reverse(&2, Field, acc), used)
273    case Con{+field, tail} True{}:
274      +cost = field.size(field)
275      +fits = U32.is_le(cost, room)
276      table.trim.go(tail, Bool.pick(U32, fits, (room - cost : U32), 0), fits,
277        Bool.pick(List<&2, Field>, fits, Con{field, acc}, acc),
278        Bool.pick(U32, fits, (used + cost : U32), used))

Uses (12)

Used by (1)