def read_lens
bendvy-ecs-core@0.1.0.3 · execution_layout_access.bend:59
import bendvy-ecs-core@0.1.0.3/execution_layout_access.bend as ExecutionLayoutAccess
import Base
import bendvy-ecs-core@0.1.0.3/execution_composer_layout.bend as Layout
import bendvy-ecs-core@0.1.0.3/owner_product.bend as Product
59def read_lens(-S:Data,layout:Layout.Layout,route:Layout.Route) -> String & Product.Lens<Layout.resources_generic(S,layout),read_slot_type(S,layout,route),Layout.resource_rest_generic(S,layout,route)>:
60 match layout route:
61 case Layout.EmptyLayout{} _ :("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
62 case Layout.LayoutLeaf{P,V,_,key,policy} Layout.AtLeaf{}:(key,Product.Lens{owner => (Unit{},owner),rest => slot => slot})
63 case Layout.ClassifiedLayoutLeaf{P,V,_,key,persistence,policy} Layout.AtLeaf{}:(key,Product.Lens{owner => (Unit{},owner),rest => slot => slot})
64 case Layout.LayoutLeaf{P,V,_,key,policy} Layout.InLeft{_}:("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
65 case Layout.ClassifiedLayoutLeaf{P,V,_,key,persistence,policy} Layout.InLeft{_}:("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
66 case Layout.LayoutLeaf{P,V,_,key,policy} Layout.InRight{_}:("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
67 case Layout.ClassifiedLayoutLeaf{P,V,_,key,persistence,policy} Layout.InRight{_}:("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
68 case Layout.LayoutPair{left,right} Layout.AtLeaf{}:("",Product.Lens{owner => (owner,Layout.ResourceSlot{Layout.Viewed{Unit{},Unit{}},Layout.unknown_stamp()}),rest => slot => rest})
69 case Layout.LayoutPair{left,right} Layout.InLeft{path}:read_lens_left_description(S,left,right,path,read_lens(S,left,path))
70 case Layout.LayoutPair{left,right} Layout.InRight{path}:read_lens_right_description(S,left,right,path,read_lens(S,right,path))