1 import Base 2 import ordinary_component_binding.bend as B 3 import inspector_query_families.bend as F 4 import inspector_query_projection.bend as Q 5 import column.bend as Col 6 import component.bend as C 7 import inspector.bend as I 8 import check.bend as K 9 import compose.bend as P 10 # Ordinary lowering uses the retained binding, never a second caller family/name. 11 def inspect_slot(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding,~mode:F.SlotMode) -> Q.DeclaredSelection,S,C.Access>: 12 F.inspect_slot(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding),~mode) 13 def inspect_with(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding) -> Q.Predicate,S>: 14 F.inspect_with(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding)) 15 def inspect_without(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding) -> Q.Predicate,S>: 16 F.inspect_without(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding)) 17 def inspect_filter(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding,~mode:P.LifecycleSelection) -> Q.Predicate,S>: 18 F.inspect_filter(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding),~mode) 19 def check_slot(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding,~mode:F.SlotMode) -> Q.DeclaredSelection,S,C.Access>: 20 F.check_slot(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding),~mode) 21 def check_with(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding) -> Q.Predicate,S>: 22 F.check_with(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding)) 23 def check_without(~S:Data,~Store:Type,~R:Type,~E:Data,~Rest:Type,~Payload:Type,~V:Data,~Token:Data,~take:Store -> Rest & Col.Column,~put:Rest -> Col.Column -> Store,~project:Payload -> Payload & V,~binding:B.Binding) -> Q.Predicate,S>: 24 F.check_without(~S,~Store,~R,~E,~Rest,~Payload,~V,~Token,~take,~put,~project,~B.family(~S,~Store,~Rest,~Payload,~V,~Token,~take,~put,~project,binding))