150 static int id(Arc e) { return e.id; } |
150 static int id(Arc e) { return e.id; } |
151 |
151 |
152 static Node nodeFromId(int id) { return Node(id);} |
152 static Node nodeFromId(int id) { return Node(id);} |
153 static Arc arcFromId(int id) { return Arc(id);} |
153 static Arc arcFromId(int id) { return Arc(id);} |
154 |
154 |
|
155 bool valid(Node n) const { |
|
156 return n.id >= 0 && n.id < static_cast<int>(nodes.size()) && |
|
157 nodes[n.id].prev != -2; |
|
158 } |
|
159 |
|
160 bool valid(Arc a) const { |
|
161 return a.id >= 0 && a.id < static_cast<int>(arcs.size()) && |
|
162 arcs[a.id].prev_in != -2; |
|
163 } |
|
164 |
155 Node addNode() { |
165 Node addNode() { |
156 int n; |
166 int n; |
157 |
167 |
158 if(first_free_node==-1) { |
168 if(first_free_node==-1) { |
159 n = nodes.size(); |
169 n = nodes.size(); |
347 ///and target node \c t. |
358 ///and target node \c t. |
348 ///\return the new arc. |
359 ///\return the new arc. |
349 Arc addArc(const Node& s, const Node& t) { |
360 Arc addArc(const Node& s, const Node& t) { |
350 return Parent::addArc(s, t); |
361 return Parent::addArc(s, t); |
351 } |
362 } |
|
363 |
|
364 /// Node validity check |
|
365 |
|
366 /// This function gives back true if the given node is valid, |
|
367 /// ie. it is a real node of the graph. |
|
368 /// |
|
369 /// \warning A Node pointing to a removed item |
|
370 /// could become valid again later if new nodes are |
|
371 /// added to the graph. |
|
372 bool valid(Node n) const { return Parent::valid(n); } |
|
373 |
|
374 /// Arc validity check |
|
375 |
|
376 /// This function gives back true if the given arc is valid, |
|
377 /// ie. it is a real arc of the graph. |
|
378 /// |
|
379 /// \warning An Arc pointing to a removed item |
|
380 /// could become valid again later if new nodes are |
|
381 /// added to the graph. |
|
382 bool valid(Arc a) const { return Parent::valid(a); } |
352 |
383 |
353 /// Change the target of \c e to \c n |
384 /// Change the target of \c e to \c n |
354 |
385 |
355 /// Change the target of \c e to \c n |
386 /// Change the target of \c e to \c n |
356 /// |
387 /// |
943 |
974 |
944 static Node nodeFromId(int id) { return Node(id);} |
975 static Node nodeFromId(int id) { return Node(id);} |
945 static Arc arcFromId(int id) { return Arc(id);} |
976 static Arc arcFromId(int id) { return Arc(id);} |
946 static Edge edgeFromId(int id) { return Edge(id);} |
977 static Edge edgeFromId(int id) { return Edge(id);} |
947 |
978 |
|
979 bool valid(Node n) const { |
|
980 return n.id >= 0 && n.id < static_cast<int>(nodes.size()) && |
|
981 nodes[n.id].prev != -2; |
|
982 } |
|
983 |
|
984 bool valid(Arc a) const { |
|
985 return a.id >= 0 && a.id < static_cast<int>(arcs.size()) && |
|
986 arcs[a.id].prev_out != -2; |
|
987 } |
|
988 |
|
989 bool valid(Edge e) const { |
|
990 return e.id >= 0 && 2 * e.id < static_cast<int>(arcs.size()) && |
|
991 arcs[2 * e.id].prev_out != -2; |
|
992 } |
|
993 |
948 Node addNode() { |
994 Node addNode() { |
949 int n; |
995 int n; |
950 |
996 |
951 if(first_free_node==-1) { |
997 if(first_free_node==-1) { |
952 n = nodes.size(); |
998 n = nodes.size(); |
1155 /// and target node \c t. |
1203 /// and target node \c t. |
1156 /// \return the new edge. |
1204 /// \return the new edge. |
1157 Edge addEdge(const Node& s, const Node& t) { |
1205 Edge addEdge(const Node& s, const Node& t) { |
1158 return Parent::addEdge(s, t); |
1206 return Parent::addEdge(s, t); |
1159 } |
1207 } |
|
1208 /// Node validity check |
|
1209 |
|
1210 /// This function gives back true if the given node is valid, |
|
1211 /// ie. it is a real node of the graph. |
|
1212 /// |
|
1213 /// \warning A Node pointing to a removed item |
|
1214 /// could become valid again later if new nodes are |
|
1215 /// added to the graph. |
|
1216 bool valid(Node n) const { return Parent::valid(n); } |
|
1217 /// Arc validity check |
|
1218 |
|
1219 /// This function gives back true if the given arc is valid, |
|
1220 /// ie. it is a real arc of the graph. |
|
1221 /// |
|
1222 /// \warning An Arc pointing to a removed item |
|
1223 /// could become valid again later if new edges are |
|
1224 /// added to the graph. |
|
1225 bool valid(Arc a) const { return Parent::valid(a); } |
|
1226 /// Edge validity check |
|
1227 |
|
1228 /// This function gives back true if the given edge is valid, |
|
1229 /// ie. it is a real arc of the graph. |
|
1230 /// |
|
1231 /// \warning A Edge pointing to a removed item |
|
1232 /// could become valid again later if new edges are |
|
1233 /// added to the graph. |
|
1234 bool valid(Edge e) const { return Parent::valid(e); } |
1160 /// \brief Change the source of \c e to \c n |
1235 /// \brief Change the source of \c e to \c n |
1161 /// |
1236 /// |
1162 /// This function changes the source of \c e to \c n. |
1237 /// This function changes the source of \c e to \c n. |
1163 /// |
1238 /// |
1164 ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s |
1239 ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s |