Ticket #133: b46d2787e9c2.patch
File b46d2787e9c2.patch, 6.1 KB (added by , 16 years ago) |
---|
-
lemon/list_graph.h
# HG changeset patch # User Balazs Dezso <deba@inf.elte.hu> # Date 1217236970 -7200 # Node ID b46d2787e9c26d9c434a65f48074ee2b80b3d991 # Parent ad6b8c47bd56c03d587feab33d875a72b2adfd6f Correcting changeSource interface and documentation - The changeSource() and changeTarget() is renamed to changeU() and changeV() in undirected graphs - The changeSource(a, n) and changeTarget(a, n) is removed from undirected graphs - Correcting invalidating iterators in documentation diff -r ad6b8c47bd56 -r b46d2787e9c2 lemon/list_graph.h
a b 395 395 /// added to the graph. 396 396 bool valid(Arc a) const { return Parent::valid(a); } 397 397 398 /// Change the target of \c eto \c n398 /// Change the target of \c a to \c n 399 399 400 /// Change the target of \c eto \c n400 /// Change the target of \c a to \c n 401 401 /// 402 402 ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s referencing 403 403 ///the changed arc remain valid. However <tt>InArcIt</tt>s are … … 405 405 /// 406 406 ///\warning This functionality cannot be used together with the Snapshot 407 407 ///feature. 408 void changeTarget(Arc e, Node n) {409 Parent::changeTarget( e,n);408 void changeTarget(Arc a, Node n) { 409 Parent::changeTarget(a,n); 410 410 } 411 /// Change the source of \c eto \c n411 /// Change the source of \c a to \c n 412 412 413 /// Change the source of \c eto \c n413 /// Change the source of \c a to \c n 414 414 /// 415 ///\note The <tt> ArcIt</tt>s and <tt>InArcIt</tt>s referencing416 /// the changed arc remain valid. However<tt>OutArcIt</tt>s are415 ///\note The <tt>InArcIt</tt>s referencing the changed arc remain 416 ///valid. However the <tt>ArcIt<tt>s and <tt>OutArcIt</tt>s are 417 417 ///invalidated. 418 418 /// 419 419 ///\warning This functionality cannot be used together with the Snapshot 420 420 ///feature. 421 void changeSource(Arc e, Node n) {422 Parent::changeSource( e,n);421 void changeSource(Arc a, Node n) { 422 Parent::changeSource(a,n); 423 423 } 424 424 425 425 /// Invert the direction of an arc. … … 1114 1114 1115 1115 protected: 1116 1116 1117 void change Target(Edge e, Node n) {1117 void changeV(Edge e, Node n) { 1118 1118 if(arcs[2 * e.id].next_out != -1) { 1119 1119 arcs[arcs[2 * e.id].next_out].prev_out = arcs[2 * e.id].prev_out; 1120 1120 } … … 1135 1135 nodes[n.id].first_out = 2 * e.id; 1136 1136 } 1137 1137 1138 void change Source(Edge e, Node n) {1138 void changeU(Edge e, Node n) { 1139 1139 if(arcs[(2 * e.id) | 1].next_out != -1) { 1140 1140 arcs[arcs[(2 * e.id) | 1].next_out].prev_out = 1141 1141 arcs[(2 * e.id) | 1].prev_out; … … 1258 1258 /// could become valid again later if new edges are 1259 1259 /// added to the graph. 1260 1260 bool valid(Edge e) const { return Parent::valid(e); } 1261 /// \brief Change the sourceof \c e to \c n1261 /// \brief Change the end \c u of \c e to \c n 1262 1262 /// 1263 /// This function changes the source of \c e to\c n.1263 /// This function changes the end \c u of \c e to node \c n. 1264 1264 /// 1265 ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s 1266 ///referencing the changed arc remain 1267 ///valid. However <tt>OutArcIt</tt>s are invalidated. 1265 ///\note The <tt>EdgeIt</tt>s and <tt>ArcIt</tt>s referencing the 1266 ///changed edge are invalidated and if the changed node is the 1267 ///base node of an iterator then this iterator is also 1268 ///invalidated. 1268 1269 /// 1269 1270 ///\warning This functionality cannot be used together with the 1270 1271 ///Snapshot feature. 1271 void change Source(Edge e, Node n) {1272 Parent::change Source(e,n);1272 void changeU(Edge e, Node n) { 1273 Parent::changeU(e,n); 1273 1274 } 1274 /// \brief Change the targetof \c e to \c n1275 /// \brief Change the end \c v of \c e to \c n 1275 1276 /// 1276 /// This function changes the targetof \c e to \c n.1277 /// This function changes the end \c v of \c e to \c n. 1277 1278 /// 1278 /// \note The <tt>ArcIt</tt>s referencing the changed arc remain 1279 /// valid. However the other iterators may be invalidated. 1279 ///\note The <tt>EdgeIt</tt>s referencing the changed edge remain 1280 ///valid, however <tt>ArcIt</tt>s and if the changed node is the 1281 ///base node of an iterator then this iterator is invalidated. 1280 1282 /// 1281 1283 ///\warning This functionality cannot be used together with the 1282 1284 ///Snapshot feature. 1283 void changeTarget(Edge e, Node n) { 1284 Parent::changeTarget(e,n); 1285 } 1286 /// \brief Change the source of \c e to \c n 1287 /// 1288 /// This function changes the source of \c e to \c n. 1289 /// It also changes the proper node of the represented edge. 1290 /// 1291 ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s 1292 ///referencing the changed arc remain 1293 ///valid. However <tt>OutArcIt</tt>s are invalidated. 1294 /// 1295 ///\warning This functionality cannot be used together with the 1296 ///Snapshot feature. 1297 void changeSource(Arc e, Node n) { 1298 if (Parent::direction(e)) { 1299 Parent::changeSource(e,n); 1300 } else { 1301 Parent::changeTarget(e,n); 1302 } 1303 } 1304 /// \brief Change the target of \c e to \c n 1305 /// 1306 /// This function changes the target of \c e to \c n. 1307 /// It also changes the proper node of the represented edge. 1308 /// 1309 ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s 1310 ///referencing the changed arc remain 1311 ///valid. However <tt>InArcIt</tt>s are invalidated. 1312 /// 1313 ///\warning This functionality cannot be used together with the 1314 ///Snapshot feature. 1315 void changeTarget(Arc e, Node n) { 1316 if (Parent::direction(e)) { 1317 Parent::changeTarget(e,n); 1318 } else { 1319 Parent::changeSource(e,n); 1320 } 1285 void changeV(Edge e, Node n) { 1286 Parent::changeV(e,n); 1321 1287 } 1322 1288 /// \brief Contract two nodes. 1323 1289 /// … … 1337 1303 IncEdgeIt f = e; ++f; 1338 1304 if (r && runningNode(e) == a) { 1339 1305 erase(e); 1340 } else if ( source(e) == b) {1341 change Source(e, a);1306 } else if (u(e) == b) { 1307 changeU(e, a); 1342 1308 } else { 1343 change Target(e, a);1309 changeV(e, a); 1344 1310 } 1345 1311 e = f; 1346 1312 }