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))

Uses (15)

Used by (1)