def scan
bendvy-ecs-core@0.1.0.4 · ordinary_dump_eligibility.bend:30
import bendvy-ecs-core@0.1.0.4/ordinary_dump_eligibility.bend as OrdinaryDumpEligibility
import Base
import entity_key.bend as Key
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/schema_fragments.bend as Fragment
import bendvy-ecs-core@0.1.0.4/ordinary_dump_filter.bend as Filter
30def scan(~S:Data,~C:Type,~count:C -> List<&2,W.Handle<S>> -> C & List<&2,Maybe<&2,U32>>,handles:List<&2,W.Handle<S>>,+entries:List<&2,Fragment.Entry<S>>,+ids:Maybe<&2,List<&2,Key.Key>>,+criteria:List<&2,Filter.Component<S>>,limit:Maybe<&2,Nat>,store:C) -> C & List<&2,W.Handle<S>>:
31 match handles limit:
32 case _ Some{0n}:(store,[])
33 case [] _:(store,[])
34 case +handle <> rest limit:included(~S,~C,~count,entries,criteria,handle,limit,next => remaining => scan(~S,~C,~count,rest,entries,ids,criteria,remaining,next),store,Filter.includes(~S,ids,handle))