1 // Copyright: Matra-Datavision 1991
2 // File: GraphDS_EntitiesIterator.cxx
3 // Created: Tue Sep 10 17:01:56 1991
4 // Author: Denis PASCAL
7 #include <Standard_NoSuchObject.hxx>
8 #include <Standard_NoMoreObject.hxx>
9 #include <GraphDS_DataMapIteratorOfEntityRoleMap.hxx>
11 //=======================================================================
12 //function : GraphDS_EntitiesIterator
14 //=======================================================================
16 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator ()
20 //=======================================================================
21 //function : GraphDS_EntitiesIterator
23 //=======================================================================
25 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator
26 (const GraphDS_RelationGraph& G)
31 //=======================================================================
32 //function : GraphDS_EntitiesIterator
34 //=======================================================================
36 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator
37 (const GraphDS_RelationGraph& G,
38 const Handle(GraphDS_Entity)& E)
44 //=======================================================================
45 //function : GraphDS_EntitiesIterator
47 //=======================================================================
49 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator
50 (const GraphDS_RelationGraph& G,
51 const Handle(GraphDS_Relation)& R)
57 //=======================================================================
58 //function : Initialize
60 //=======================================================================
62 void GraphDS_EntitiesIterator::Initialize
63 (const GraphDS_RelationGraph& G)
65 myEntities.Initialize(G.myEntities);
69 //=======================================================================
70 //function : Initialize
71 //purpose : adjacent entities search
72 //=======================================================================
74 void GraphDS_EntitiesIterator::Initialize
75 (const GraphDS_RelationGraph&,
76 const Handle(GraphDS_Entity)& E)
80 Handle(GraphDS_Relation) REL;
81 GraphDS_DataMapIteratorOfEntityRoleMap itv;
82 TColStd_MapIteratorOfMapOfTransient itr;
84 for (itr.Initialize(E->GetRelations());itr.More();itr.Next()) {
85 REL = Handle(GraphDS_Relation)::DownCast(itr.Key());
86 if (REL->IsInput(E)) {
87 for (itv.Initialize(REL->GetEntities());itv.More();itv.Next()) {
88 if (itv.Value() != GraphDS_OnlyInput) {
94 myEntities.Initialize(myMap);
98 //=======================================================================
99 //function : Initialize
101 //=======================================================================
103 void GraphDS_EntitiesIterator::Initialize
104 (const GraphDS_RelationGraph&,
105 const Handle(GraphDS_Relation)& R)
108 GraphDS_DataMapIteratorOfEntityRoleMap itv;
109 for (itv.Initialize(R->GetEntities());itv.More();itv.Next()) {
110 myMap.Add(itv.Key());
112 myEntities.Initialize(myMap);
116 //=======================================================================
119 //=======================================================================
121 Standard_Boolean GraphDS_EntitiesIterator::More () const
123 return myEntities.More();
127 //=======================================================================
130 //=======================================================================
132 void GraphDS_EntitiesIterator::Next ()
138 //=======================================================================
141 //=======================================================================
143 const Handle(GraphDS_Entity)& GraphDS_EntitiesIterator::Value () const
145 return *((Handle(GraphDS_Entity)*)& myEntities.Key());
146 //return Handle(GraphDS_Entity)::DownCast(myEntities.Key());