relation_types.bend

bendvy-ecs-core@0.1.0.0 · 46 lines · 0 definitions

1import Base
2import entity_key.bend as K
3
4type RelationKind is Data:
5  Ordinary{}
6  Hierarchy{}
7type Descriptor<S: Data> is Data:
8  Descriptor{key: U32,name: String,inverseName: String,kind: RelationKind}
9type Edge<S: Data> is Data:
10  Edge{relation: Descriptor<S>,source: K.Key,target: K.Key}
11type Error is Data:
12  MissingEntity{source: K.Key}
13  MissingTargetEntity{source: K.Key,target: K.Key,relation: String}
14  SelfRelationNotAllowed{source: K.Key,relation: String}
15  HierarchyCycle{source: K.Key,target: K.Key,relation: String}
16  MissingChildEntity{source: K.Key,child: K.Key,relation: String}
17  DuplicateChild{source: K.Key,child: K.Key,relation: String}
18  ChildNotRelatedToParent{source: K.Key,child: K.Key,relation: String}
19  ChildSetMismatch{source: K.Key,relation: String}
20type Operation is Data:
21  Relate{}
22  ReorderChildren{}
23type Failure<S: Data> is Data:
24  Failure{relation: Descriptor<S>,operation: Operation,source: K.Key,target: K.Key,error: Error}
25type Inverse<S: Data> is Data:
26  Inverse{relation: Descriptor<S>,target: K.Key,sources: List<&2,K.Key>}
27type SpecGraph<S: Data> is Data:
28  SpecGraph{edges: List<&2,Edge<S>>}
29type Graph<S: Data> is Data:
30  Graph{edges: List<&2,Edge<S>>,inverses: List<&2,Inverse<S>>}
31type SpecResult<S: Data> is Data:
32  SpecResult{graph: SpecGraph<S>,error: Maybe<&2,Error>}
33type CoreResult<S: Data> is Data:
34  CoreResult{graph: Graph<S>,error: Maybe<&2,Error>}
35type ChildStatus is Data:
36  ChildStatus{id: K.Key,live: Bool}
37
38# Diagnostic continuation, not a new relation rejection policy.
39type CleanupFrame<S:Data> is Data:
40  CleanupEnter{id:K.Key}
41  CleanupDescriptors{id:K.Key,remaining:List<&2,Descriptor<S>>}
42  CleanupChildren{id:K.Key,descriptor:Descriptor<S>,remainingDescriptors:List<&2,Descriptor<S>>,remainingChildren:List<&2,K.Key>}
43  CleanupFinish{id:K.Key}
44# Public reorder provisioning accepts this nominal hierarchy family only.
45type HierarchyDescriptor<S:Data> is Data:
46  HierarchyDescriptor{key:U32,name:String,inverseName:String}