reactive_graph_behaviour_model_impl/behaviour/relation/
container.rs1use reactive_graph_behaviour_model_api::prelude::*;
2
3use reactive_graph_graph::RelationInstanceId;
4use reactive_graph_reactive_model_api::ReactiveInstanceContainer;
5use reactive_graph_reactive_model_impl::ReactiveEntity;
6use reactive_graph_reactive_model_impl::ReactiveRelation;
7
8pub trait BehaviourRelationInstanceContainer: ReactiveInstanceContainer<RelationInstanceId, ReactiveRelation> {
9 fn get_outbound(&self) -> &ReactiveEntity;
11
12 fn get_inbound(&self) -> &ReactiveEntity;
14}
15
16pub struct RelationReactiveInstanceContainerImpl {
17 pub reactive_instance: ReactiveRelation,
18}
19
20impl ReactiveInstanceContainer<RelationInstanceId, ReactiveRelation> for RelationReactiveInstanceContainerImpl {
21 fn get_reactive_instance(&self) -> &ReactiveRelation {
22 &self.reactive_instance
23 }
24}
25
26impl BehaviourTypesContainer for RelationReactiveInstanceContainerImpl {
27 fn get_behaviours(&self) -> Vec<BehaviourTypeId> {
28 self.reactive_instance.get_behaviours()
29 }
30
31 fn add_behaviour(&self, ty: BehaviourTypeId) {
32 self.reactive_instance.add_behaviour(ty);
33 }
34
35 fn remove_behaviour(&self, ty: &BehaviourTypeId) {
36 self.reactive_instance.remove_behaviour(ty);
37 }
38
39 fn behaves_as(&self, ty: &BehaviourTypeId) -> bool {
40 self.reactive_instance.behaves_as(ty)
41 }
42}
43
44impl BehaviourRelationInstanceContainer for RelationReactiveInstanceContainerImpl {
45 fn get_outbound(&self) -> &ReactiveEntity {
46 &self.reactive_instance.outbound
47 }
48
49 fn get_inbound(&self) -> &ReactiveEntity {
50 &self.reactive_instance.inbound
51 }
52}