COIN-OR::LEMON - Graph Library

Ticket #133: b46d2787e9c2.patch

File b46d2787e9c2.patch, 6.1 KB (added by Balazs Dezso, 13 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  
    395395    /// added to the graph.
    396396    bool valid(Arc a) const { return Parent::valid(a); }
    397397
    398     /// Change the target of \c e to \c n
     398    /// Change the target of \c a to \c n
    399399
    400     /// Change the target of \c e to \c n
     400    /// Change the target of \c a to \c n
    401401    ///
    402402    ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s referencing
    403403    ///the changed arc remain valid. However <tt>InArcIt</tt>s are
     
    405405    ///
    406406    ///\warning This functionality cannot be used together with the Snapshot
    407407    ///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);
    410410    }
    411     /// Change the source of \c e to \c n
     411    /// Change the source of \c a to \c n
    412412
    413     /// Change the source of \c e to \c n
     413    /// Change the source of \c a to \c n
    414414    ///
    415     ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s referencing
    416     ///the changed arc remain valid. However <tt>OutArcIt</tt>s are
     415    ///\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
    417417    ///invalidated.
    418418    ///
    419419    ///\warning This functionality cannot be used together with the Snapshot
    420420    ///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);
    423423    }
    424424
    425425    /// Invert the direction of an arc.
     
    11141114
    11151115  protected:
    11161116
    1117     void changeTarget(Edge e, Node n) {
     1117    void changeV(Edge e, Node n) {
    11181118      if(arcs[2 * e.id].next_out != -1) {
    11191119        arcs[arcs[2 * e.id].next_out].prev_out = arcs[2 * e.id].prev_out;
    11201120      }
     
    11351135      nodes[n.id].first_out = 2 * e.id;
    11361136    }
    11371137
    1138     void changeSource(Edge e, Node n) {
     1138    void changeU(Edge e, Node n) {
    11391139      if(arcs[(2 * e.id) | 1].next_out != -1) {
    11401140        arcs[arcs[(2 * e.id) | 1].next_out].prev_out =
    11411141          arcs[(2 * e.id) | 1].prev_out;
     
    12581258    /// could become valid again later if new edges are
    12591259    /// added to the graph.
    12601260    bool valid(Edge e) const { return Parent::valid(e); }
    1261     /// \brief Change the source of \c e to \c n
     1261    /// \brief Change the end \c u of \c e to \c n
    12621262    ///
    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.
    12641264    ///
    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.
    12681269    ///
    12691270    ///\warning This functionality cannot be used together with the
    12701271    ///Snapshot feature.
    1271     void changeSource(Edge e, Node n) {
    1272       Parent::changeSource(e,n);
     1272    void changeU(Edge e, Node n) {
     1273      Parent::changeU(e,n);
    12731274    }
    1274     /// \brief Change the target of \c e to \c n
     1275    /// \brief Change the end \c v of \c e to \c n
    12751276    ///
    1276     /// This function changes the target of \c e to \c n.
     1277    /// This function changes the end \c v of \c e to \c n.
    12771278    ///
    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.
    12801282    ///
    12811283    ///\warning This functionality cannot be used together with the
    12821284    ///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);
    13211287    }
    13221288    /// \brief Contract two nodes.
    13231289    ///
     
    13371303        IncEdgeIt f = e; ++f;
    13381304        if (r && runningNode(e) == a) {
    13391305          erase(e);
    1340         } else if (source(e) == b) {
    1341           changeSource(e, a);
     1306        } else if (u(e) == b) {
     1307          changeU(e, a);
    13421308        } else {
    1343           changeTarget(e, a);
     1309          changeV(e, a);
    13441310        }
    13451311        e = f;
    13461312      }