Integration of OCCT 6.5.0 from SVN
[occt.git] / src / GraphDS / GraphDS_EntitiesIterator.gxx
1 // Copyright:   Matra-Datavision 1991
2 // File:        GraphDS_EntitiesIterator.cxx
3 // Created:     Tue Sep 10 17:01:56 1991
4 // Author:      Denis PASCAL
5 //              <dp>
6
7 #include <Standard_NoSuchObject.hxx>
8 #include <Standard_NoMoreObject.hxx>
9 #include <GraphDS_DataMapIteratorOfEntityRoleMap.hxx> 
10
11 //=======================================================================
12 //function : GraphDS_EntitiesIterator
13 //purpose  : 
14 //=======================================================================
15
16 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator ()
17 {
18 }
19
20 //=======================================================================
21 //function : GraphDS_EntitiesIterator
22 //purpose  : 
23 //=======================================================================
24
25 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator 
26   (const GraphDS_RelationGraph& G)  
27 {
28   Initialize (G);
29 }
30
31 //=======================================================================
32 //function : GraphDS_EntitiesIterator
33 //purpose  : 
34 //=======================================================================
35
36 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator 
37   (const GraphDS_RelationGraph& G,
38    const Handle(GraphDS_Entity)& E) 
39 {
40   Initialize (G,E);
41 }
42
43
44 //=======================================================================
45 //function : GraphDS_EntitiesIterator
46 //purpose  : 
47 //=======================================================================
48
49 GraphDS_EntitiesIterator::GraphDS_EntitiesIterator 
50   (const GraphDS_RelationGraph& G,
51    const Handle(GraphDS_Relation)& R) 
52 {
53   Initialize (G,R);
54 }
55
56
57 //=======================================================================
58 //function : Initialize
59 //purpose  : 
60 //=======================================================================
61
62 void GraphDS_EntitiesIterator::Initialize
63   (const GraphDS_RelationGraph& G)  
64 {
65   myEntities.Initialize(G.myEntities);
66 }
67
68
69 //=======================================================================
70 //function : Initialize
71 //purpose  : adjacent entities search
72 //=======================================================================
73
74 void GraphDS_EntitiesIterator::Initialize
75   (const GraphDS_RelationGraph&,
76    const Handle(GraphDS_Entity)& E) 
77 {
78   myMap.Clear();
79
80   Handle(GraphDS_Relation) REL;
81   GraphDS_DataMapIteratorOfEntityRoleMap itv; 
82   TColStd_MapIteratorOfMapOfTransient itr;
83
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) {
89           myMap.Add(itv.Key());
90         }
91       }
92     }
93   }      
94   myEntities.Initialize(myMap);
95 }     
96
97
98 //=======================================================================
99 //function : Initialize
100 //purpose  : 
101 //=======================================================================
102
103 void GraphDS_EntitiesIterator::Initialize 
104   (const GraphDS_RelationGraph&, 
105    const Handle(GraphDS_Relation)& R) 
106 {  
107   myMap.Clear();
108   GraphDS_DataMapIteratorOfEntityRoleMap itv; 
109   for (itv.Initialize(R->GetEntities());itv.More();itv.Next()) {
110     myMap.Add(itv.Key());
111   }
112   myEntities.Initialize(myMap);
113 }
114
115
116 //=======================================================================
117 //function : More
118 //purpose  : 
119 //=======================================================================
120
121 Standard_Boolean GraphDS_EntitiesIterator::More () const
122 {
123   return myEntities.More();
124 }
125
126
127 //=======================================================================
128 //function : Next
129 //purpose  : 
130 //=======================================================================
131
132 void GraphDS_EntitiesIterator::Next () 
133 {
134   myEntities.Next();
135 }
136
137
138 //=======================================================================
139 //function : Value
140 //purpose  : 
141 //=======================================================================
142
143 const Handle(GraphDS_Entity)& GraphDS_EntitiesIterator::Value () const 
144 {  
145   return  *((Handle(GraphDS_Entity)*)& myEntities.Key());
146   //return Handle(GraphDS_Entity)::DownCast(myEntities.Key());
147 }
148
149
150
151
152
153