def pair
import bendvy-ecs-core@0.1.0.4/ordinary_app_reader_parameter.bend as OrdinaryAppReaderParameterimport Base
import bendvy-ecs-core@0.1.0.4/change_tick.bend as Tick
import bendvy-ecs-core@0.1.0.4/reader_parameter.bend as RP
import bendvy-ecs-core@0.1.0.4/ordinary_app_registration_fields.bend as Fields
72def pair(~S:Data,~W:Type,~OwnerA:Type,~ViewA:Data,~DeltaA:Type,~validateA:W -> OwnerA -> W & (OwnerA & Bool),~prepareA:W -> @+cursor:Maybe<&2,Tick.Tick> -> OwnerA -> W & (OwnerA & (ViewA & DeltaA)),~commitA:W -> OwnerA -> DeltaA -> @+cursor:Tick.Tick -> W & OwnerA,~releaseA:W -> OwnerA -> W,~OwnerB:Type,~ViewB:Data,~DeltaB:Type,~validateB:W -> OwnerB -> W & (OwnerB & Bool),~prepareB:W -> @+cursor:Maybe<&2,Tick.Tick> -> OwnerB -> W & (OwnerB & (ViewB & DeltaB)),~commitB:W -> OwnerB -> DeltaB -> @+cursor:Tick.Tick -> W & OwnerB,~releaseB:W -> OwnerB -> W,left:Declared<S,RP.Param<W,OwnerA,ViewA,DeltaA,validateA,prepareA,commitA,releaseA>>,right:Declared<S,RP.Param<W,OwnerB,ViewB,DeltaB,validateB,prepareB,commitB,releaseB>>) -> Declared<S,RP.Param<W,OwnerA & OwnerB,RP.ViewPair<ViewA,ViewB>,DeltaA & DeltaB,RP.pair_validate_fn(~W,~OwnerA,~OwnerB,~validateA,~validateB),RP.pair_prepare_fn(~W,~OwnerA,~OwnerB,~ViewA,~ViewB,~DeltaA,~DeltaB,~prepareA,~prepareB),RP.pair_commit_fn(~W,~OwnerA,~OwnerB,~DeltaA,~DeltaB,~commitA,~commitB),RP.pair_release_fn(~W,~OwnerA,~OwnerB,~releaseA,~releaseB)>>:
73 match left right:
74 case Declared{left,leftUses} Declared{right,rightUses}:Declared{RP.pair(~W,~OwnerA,~ViewA,~DeltaA,~validateA,~prepareA,~commitA,~releaseA,~OwnerB,~ViewB,~DeltaB,~validateB,~prepareB,~commitB,~releaseB,left,right),List.append(&2,Fields.DeclaredUse,leftUses,rightUses)}
Uses (14)
Used by (0)
No other definition uses this definition.