def traverse_rows

bendvy-ecs-core@0.1.0.3 · execution_query_interpreter.bend:168

import bendvy-ecs-core@0.1.0.3/execution_query_interpreter.bend as ExecutionQueryInterpreter
import Base
import bendvy-ecs-core@0.1.0.3/chunk_query.bend as Row
import bendvy-ecs-core@0.1.0.3/execution_query.bend as Q
import bendvy-ecs-core@0.1.0.3/execution_effects.bend as Effects
import bendvy-ecs-core@0.1.0.3/execution_composer_layout.bend as L
import bendvy-ecs-core@0.1.0.3/world.bend as W
import bendvy-ecs-core@0.1.0.3/change_tick.bend as Tick
import bendvy-ecs-core@0.1.0.3/chunk_column.bend as Column
import bendvy-ecs-core@0.1.0.3/chunk_shape.bend as Part

168def traverse_rows(~S:Data,~Permit:Data,~F:Type -> Type,~effects:Effects.Effects<F>,~full:L.Layout,~route:L.Route,~O:Type,~E:Data,~body:Q.SequentialGeneralBody(~S,~Permit,~F,~L.payload(full,route),~L.view(full,route),~O,~E),+shape:Part.Shape,+capacity:U32,rows:List<&2,Q.GeneralRow<S,L.view(full,route)>>,column:Column.Column<S,L.stored(full,route)>,+tick:Tick.Tick,+prior:Maybe<&2,Tick.Tick>,+mode:Q.Mode,+requested:Q.GeneralTargets<S>,output:O,errors:List<&2,Row.Error<E>>) -> F(Column.Column<S,L.stored(full,route)> & (O & List<&2,Row.Error<E>>)):
169  match rows:
170    case []:Effects.pure(~F,Column.Column<S,L.stored(full,route)> & (O & List<&2,Row.Error<E>>),effects,(column,(output,List.reverse(&2,Row.Error<E>,errors))))
171    case Q.GeneralRow{_,None{}} <> rest:traverse_rows(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,capacity,rest,column,tick,prior,mode,requested,output,errors)
172    case Q.GeneralRow{+handle,Some{view}} <> rest:row_selected(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,column,U32.sub(W.handle_index(~S,handle),1),tick,prior,mode,handle,view,output,errors,(column=>output=>errors=>traverse_rows(~S,~Permit,~F,~effects,~full,~route,~O,~E,~body,shape,capacity,rest,column,tick,prior,mode,requested,output,errors)),Bool.and(requested_member(~S,handle,requested),U32.is_le(W.handle_index(~S,handle),capacity)))

Uses (27)

Used by (1)