def run

bendvy-ecs-core@0.1.0.4 · machine_handler_context.bend:58

import bendvy-ecs-core@0.1.0.4/machine_handler_context.bend as MachineHandlerContext
import Base
import bendvy-ecs-core@0.1.0.4/world.bend as W
import bendvy-ecs-core@0.1.0.4/machine.bend as M
import bendvy-ecs-core@0.1.0.4/system.bend as Sys
import bendvy-ecs-core@0.1.0.4/execution_context.bend as Ctx
import bendvy-ecs-core@0.1.0.4/trace_facts.bend as Facts
import bendvy-ecs-core@0.1.0.4/machine_handlers.bend as H
import bendvy-ecs-core@0.1.0.4/machine_handler_engine.bend as Engine

58def run(~S:Data,~C:Type,~R:Type,~E:Data,~V:Data,~runner:W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit>,~observed:Facts.State -> W.World<S,C,R,E> -> H.Invocation<V> -> Sys.Outcome<W.World<S,C,R,E>,String,Unit> & Facts.State,~K:Data,~take:W.World<S,C,R,E> -> W.World<S,C,R,E> & M.Slot<S,K,V>,~put:W.World<S,C,R,E> -> M.Slot<S,K,V> -> W.World<S,C,R,E>,~publish:W.World<S,C,R,E> -> M.Transition<V> -> W.World<S,C,R,E>,~same:V -> V -> Bool,~name:String,owners:H.Owners<S,C,R,E,V,runner>,context:Ctx.Context<W.World<S,C,R,E>>,captured:M.Snapshot<V>) -> Engine.HandlerResult<Ctx.Context<W.World<S,C,R,E>>,H.Entry<S,C,R,E,V,runner>,H.Phase>:
59  match owners:
60    case H.Owners{exit,transition,enter}:Engine.run(~S,~Ctx.Context<W.World<S,C,R,E>>,~H.Entry<S,C,R,E,V,runner>,~H.Phase,~V,~invoke(~S,~C,~R,~E,~V,~runner,~observed),~initial(~S,~C,~R,~E,~V,~runner,~observed),~H.BendvyExit{},~H.Transition{},~H.Enter{},~K,~context_take(~S,~C,~R,~E,~V,~runner,~K,~take),~context_put(~S,~C,~R,~E,~V,~runner,~K,~put),~context_publish(~S,~C,~R,~E,~V,~runner,~publish,~name),~same,Engine.Owners{exit,transition,enter},context,captured)

Uses (23)

Used by (1)