lemon/adaptors.h
changeset 452 aea2dc0518ce
parent 451 fbd6e04acf44
child 453 c246659c8b19
equal deleted inserted replaced
7:5ebc3a7c4ce4 8:a4d574cf91de
   472       while (i != INVALID && (!(*_arc_filter)[i]
   472       while (i != INVALID && (!(*_arc_filter)[i]
   473                               || !(*_node_filter)[Parent::target(i)]))
   473                               || !(*_node_filter)[Parent::target(i)]))
   474         Parent::nextOut(i);
   474         Parent::nextOut(i);
   475     }
   475     }
   476 
   476 
   477     void hide(const Node& n) const { _node_filter->set(n, false); }
   477     void status(const Node& n, bool v) const { _node_filter->set(n, v); }
   478     void hide(const Arc& a) const { _arc_filter->set(a, false); }
   478     void status(const Arc& a, bool v) const { _arc_filter->set(a, v); }
   479 
   479 
   480     void unHide(const Node& n) const { _node_filter->set(n, true); }
   480     bool status(const Node& n) const { return (*_node_filter)[n]; }
   481     void unHide(const Arc& a) const { _arc_filter->set(a, true); }
   481     bool status(const Arc& a) const { return (*_arc_filter)[a]; }
   482 
       
   483     bool hidden(const Node& n) const { return !(*_node_filter)[n]; }
       
   484     bool hidden(const Arc& a) const { return !(*_arc_filter)[a]; }
       
   485 
   482 
   486     typedef False NodeNumTag;
   483     typedef False NodeNumTag;
   487     typedef False ArcNumTag;
   484     typedef False ArcNumTag;
   488 
   485 
   489     typedef FindArcTagIndicator<Digraph> FindArcTag;
   486     typedef FindArcTagIndicator<Digraph> FindArcTag;
   615     void nextOut(Arc& i) const {
   612     void nextOut(Arc& i) const {
   616       Parent::nextOut(i);
   613       Parent::nextOut(i);
   617       while (i!=INVALID && !(*_arc_filter)[i]) Parent::nextOut(i);
   614       while (i!=INVALID && !(*_arc_filter)[i]) Parent::nextOut(i);
   618     }
   615     }
   619 
   616 
   620     void hide(const Node& n) const { _node_filter->set(n, false); }
   617     void status(const Node& n, bool v) const { _node_filter->set(n, v); }
   621     void hide(const Arc& e) const { _arc_filter->set(e, false); }
   618     void status(const Arc& a, bool v) const { _arc_filter->set(a, v); }
   622 
   619 
   623     void unHide(const Node& n) const { _node_filter->set(n, true); }
   620     bool status(const Node& n) const { return (*_node_filter)[n]; }
   624     void unHide(const Arc& e) const { _arc_filter->set(e, true); }
   621     bool status(const Arc& a) const { return (*_arc_filter)[a]; }
   625 
       
   626     bool hidden(const Node& n) const { return !(*_node_filter)[n]; }
       
   627     bool hidden(const Arc& e) const { return !(*_arc_filter)[e]; }
       
   628 
   622 
   629     typedef False NodeNumTag;
   623     typedef False NodeNumTag;
   630     typedef False ArcNumTag;
   624     typedef False ArcNumTag;
   631 
   625 
   632     typedef FindArcTagIndicator<Digraph> FindArcTag;
   626     typedef FindArcTagIndicator<Digraph> FindArcTag;
   772       setDigraph(digraph);
   766       setDigraph(digraph);
   773       setNodeFilterMap(node_filter);
   767       setNodeFilterMap(node_filter);
   774       setArcFilterMap(arc_filter);
   768       setArcFilterMap(arc_filter);
   775     }
   769     }
   776 
   770 
   777     /// \brief Hides the given node
   771     /// \brief Sets the status of the given node
   778     ///
   772     ///
   779     /// This function hides the given node in the subdigraph,
   773     /// This function sets the status of the given node.
   780     /// i.e. the iteration jumps over it.
       
   781     /// It is done by simply setting the assigned value of \c n
   774     /// It is done by simply setting the assigned value of \c n
   782     /// to be \c false in the node filter map.
   775     /// to \c v in the node filter map.
   783     void hide(const Node& n) const { Parent::hide(n); }
   776     void status(const Node& n, bool v) const { Parent::status(n, v); }
   784 
   777 
   785     /// \brief Hides the given arc
   778     /// \brief Sets the status of the given arc
   786     ///
   779     ///
   787     /// This function hides the given arc in the subdigraph,
   780     /// This function sets the status of the given arc.
   788     /// i.e. the iteration jumps over it.
       
   789     /// It is done by simply setting the assigned value of \c a
   781     /// It is done by simply setting the assigned value of \c a
   790     /// to be \c false in the arc filter map.
   782     /// to \c v in the arc filter map.
   791     void hide(const Arc& a) const { Parent::hide(a); }
   783     void status(const Arc& a, bool v) const { Parent::status(a, v); }
   792 
   784 
   793     /// \brief Shows the given node
   785     /// \brief Returns the status of the given node
   794     ///
   786     ///
   795     /// This function shows the given node in the subdigraph.
   787     /// This function returns the status of the given node.
   796     /// It is done by simply setting the assigned value of \c n
   788     /// It is \c true if the given node is enabled (i.e. not hidden).
   797     /// to be \c true in the node filter map.
   789     bool status(const Node& n) const { return Parent::status(n); }
   798     void unHide(const Node& n) const { Parent::unHide(n); }
   790 
   799 
   791     /// \brief Returns the status of the given arc
   800     /// \brief Shows the given arc
   792     ///
   801     ///
   793     /// This function returns the status of the given arc.
   802     /// This function shows the given arc in the subdigraph.
   794     /// It is \c true if the given arc is enabled (i.e. not hidden).
   803     /// It is done by simply setting the assigned value of \c a
   795     bool status(const Arc& a) const { return Parent::status(a); }
   804     /// to be \c true in the arc filter map.
   796 
   805     void unHide(const Arc& a) const { Parent::unHide(a); }
   797     /// \brief Disables the given node
   806 
   798     ///
   807     /// \brief Returns \c true if the given node is hidden.
   799     /// This function disables the given node in the subdigraph,
   808     ///
   800     /// so the iteration jumps over it.
   809     /// This function returns \c true if the given node is hidden.
   801     /// It is the same as \ref status() "status(n, false)".
   810     bool hidden(const Node& n) const { return Parent::hidden(n); }
   802     void disable(const Node& n) const { Parent::status(n, false); }
   811 
   803 
   812     /// \brief Returns \c true if the given arc is hidden.
   804     /// \brief Disables the given arc
   813     ///
   805     ///
   814     /// This function returns \c true if the given arc is hidden.
   806     /// This function disables the given arc in the subdigraph,
   815     bool hidden(const Arc& a) const { return Parent::hidden(a); }
   807     /// so the iteration jumps over it.
       
   808     /// It is the same as \ref status() "status(a, false)".
       
   809     void disable(const Arc& a) const { Parent::status(a, false); }
       
   810 
       
   811     /// \brief Enables the given node
       
   812     ///
       
   813     /// This function enables the given node in the subdigraph.
       
   814     /// It is the same as \ref status() "status(n, true)".
       
   815     void enable(const Node& n) const { Parent::status(n, true); }
       
   816 
       
   817     /// \brief Enables the given arc
       
   818     ///
       
   819     /// This function enables the given arc in the subdigraph.
       
   820     /// It is the same as \ref status() "status(a, true)".
       
   821     void enable(const Arc& a) const { Parent::status(a, true); }
   816 
   822 
   817   };
   823   };
   818 
   824 
   819   /// \brief Returns a read-only SubDigraph adaptor
   825   /// \brief Returns a read-only SubDigraph adaptor
   820   ///
   826   ///
   968                             || !(*_node_filter_map)[Parent::u(i)]
   974                             || !(*_node_filter_map)[Parent::u(i)]
   969                             || !(*_node_filter_map)[Parent::v(i)]))
   975                             || !(*_node_filter_map)[Parent::v(i)]))
   970         Parent::nextInc(i, d);
   976         Parent::nextInc(i, d);
   971     }
   977     }
   972 
   978 
   973     void hide(const Node& n) const { _node_filter_map->set(n, false); }
   979     void status(const Node& n, bool v) const { _node_filter_map->set(n, v); }
   974     void hide(const Edge& e) const { _edge_filter_map->set(e, false); }
   980     void status(const Edge& e, bool v) const { _edge_filter_map->set(e, v); }
   975 
   981 
   976     void unHide(const Node& n) const { _node_filter_map->set(n, true); }
   982     bool status(const Node& n) const { return (*_node_filter_map)[n]; }
   977     void unHide(const Edge& e) const { _edge_filter_map->set(e, true); }
   983     bool status(const Edge& e) const { return (*_edge_filter_map)[e]; }
   978 
       
   979     bool hidden(const Node& n) const { return !(*_node_filter_map)[n]; }
       
   980     bool hidden(const Edge& e) const { return !(*_edge_filter_map)[e]; }
       
   981 
   984 
   982     typedef False NodeNumTag;
   985     typedef False NodeNumTag;
   983     typedef False ArcNumTag;
   986     typedef False ArcNumTag;
   984     typedef False EdgeNumTag;
   987     typedef False EdgeNumTag;
   985 
   988 
  1170     void nextInc(Edge& i, bool& d) const {
  1173     void nextInc(Edge& i, bool& d) const {
  1171       Parent::nextInc(i, d);
  1174       Parent::nextInc(i, d);
  1172       while (i!=INVALID && !(*_edge_filter_map)[i]) Parent::nextInc(i, d);
  1175       while (i!=INVALID && !(*_edge_filter_map)[i]) Parent::nextInc(i, d);
  1173     }
  1176     }
  1174 
  1177 
  1175     void hide(const Node& n) const { _node_filter_map->set(n, false); }
  1178     void status(const Node& n, bool v) const { _node_filter_map->set(n, v); }
  1176     void hide(const Edge& e) const { _edge_filter_map->set(e, false); }
  1179     void status(const Edge& e, bool v) const { _edge_filter_map->set(e, v); }
  1177 
  1180 
  1178     void unHide(const Node& n) const { _node_filter_map->set(n, true); }
  1181     bool status(const Node& n) const { return (*_node_filter_map)[n]; }
  1179     void unHide(const Edge& e) const { _edge_filter_map->set(e, true); }
  1182     bool status(const Edge& e) const { return (*_edge_filter_map)[e]; }
  1180 
       
  1181     bool hidden(const Node& n) const { return !(*_node_filter_map)[n]; }
       
  1182     bool hidden(const Edge& e) const { return !(*_edge_filter_map)[e]; }
       
  1183 
  1183 
  1184     typedef False NodeNumTag;
  1184     typedef False NodeNumTag;
  1185     typedef False ArcNumTag;
  1185     typedef False ArcNumTag;
  1186     typedef False EdgeNumTag;
  1186     typedef False EdgeNumTag;
  1187 
  1187 
  1361       setGraph(graph);
  1361       setGraph(graph);
  1362       setNodeFilterMap(node_filter_map);
  1362       setNodeFilterMap(node_filter_map);
  1363       setEdgeFilterMap(edge_filter_map);
  1363       setEdgeFilterMap(edge_filter_map);
  1364     }
  1364     }
  1365 
  1365 
  1366     /// \brief Hides the given node
  1366     /// \brief Sets the status of the given node
  1367     ///
  1367     ///
  1368     /// This function hides the given node in the subgraph,
  1368     /// This function sets the status of the given node.
  1369     /// i.e. the iteration jumps over it.
       
  1370     /// It is done by simply setting the assigned value of \c n
  1369     /// It is done by simply setting the assigned value of \c n
  1371     /// to be \c false in the node filter map.
  1370     /// to \c v in the node filter map.
  1372     void hide(const Node& n) const { Parent::hide(n); }
  1371     void status(const Node& n, bool v) const { Parent::status(n, v); }
  1373 
  1372 
  1374     /// \brief Hides the given edge
  1373     /// \brief Sets the status of the given edge
  1375     ///
  1374     ///
  1376     /// This function hides the given edge in the subgraph,
  1375     /// This function sets the status of the given edge.
  1377     /// i.e. the iteration jumps over it.
       
  1378     /// It is done by simply setting the assigned value of \c e
  1376     /// It is done by simply setting the assigned value of \c e
  1379     /// to be \c false in the edge filter map.
  1377     /// to \c v in the edge filter map.
  1380     void hide(const Edge& e) const { Parent::hide(e); }
  1378     void status(const Edge& e, bool v) const { Parent::status(e, v); }
  1381 
  1379 
  1382     /// \brief Shows the given node
  1380     /// \brief Returns the status of the given node
  1383     ///
  1381     ///
  1384     /// This function shows the given node in the subgraph.
  1382     /// This function returns the status of the given node.
  1385     /// It is done by simply setting the assigned value of \c n
  1383     /// It is \c true if the given node is enabled (i.e. not hidden).
  1386     /// to be \c true in the node filter map.
  1384     bool status(const Node& n) const { return Parent::status(n); }
  1387     void unHide(const Node& n) const { Parent::unHide(n); }
  1385 
  1388 
  1386     /// \brief Returns the status of the given edge
  1389     /// \brief Shows the given edge
  1387     ///
  1390     ///
  1388     /// This function returns the status of the given edge.
  1391     /// This function shows the given edge in the subgraph.
  1389     /// It is \c true if the given edge is enabled (i.e. not hidden).
  1392     /// It is done by simply setting the assigned value of \c e
  1390     bool status(const Edge& e) const { return Parent::status(e); }
  1393     /// to be \c true in the edge filter map.
  1391 
  1394     void unHide(const Edge& e) const { Parent::unHide(e); }
  1392     /// \brief Disables the given node
  1395 
  1393     ///
  1396     /// \brief Returns \c true if the given node is hidden.
  1394     /// This function disables the given node in the subdigraph,
  1397     ///
  1395     /// so the iteration jumps over it.
  1398     /// This function returns \c true if the given node is hidden.
  1396     /// It is the same as \ref status() "status(n, false)".
  1399     bool hidden(const Node& n) const { return Parent::hidden(n); }
  1397     void disable(const Node& n) const { Parent::status(n, false); }
  1400 
  1398 
  1401     /// \brief Returns \c true if the given edge is hidden.
  1399     /// \brief Disables the given edge
  1402     ///
  1400     ///
  1403     /// This function returns \c true if the given edge is hidden.
  1401     /// This function disables the given edge in the subgraph,
  1404     bool hidden(const Edge& e) const { return Parent::hidden(e); }
  1402     /// so the iteration jumps over it.
       
  1403     /// It is the same as \ref status() "status(e, false)".
       
  1404     void disable(const Edge& e) const { Parent::status(e, false); }
       
  1405 
       
  1406     /// \brief Enables the given node
       
  1407     ///
       
  1408     /// This function enables the given node in the subdigraph.
       
  1409     /// It is the same as \ref status() "status(n, true)".
       
  1410     void enable(const Node& n) const { Parent::status(n, true); }
       
  1411 
       
  1412     /// \brief Enables the given edge
       
  1413     ///
       
  1414     /// This function enables the given edge in the subgraph.
       
  1415     /// It is the same as \ref status() "status(e, true)".
       
  1416     void enable(const Edge& e) const { Parent::status(e, true); }
       
  1417 
  1405   };
  1418   };
  1406 
  1419 
  1407   /// \brief Returns a read-only SubGraph adaptor
  1420   /// \brief Returns a read-only SubGraph adaptor
  1408   ///
  1421   ///
  1409   /// This function just returns a read-only \ref SubGraph adaptor.
  1422   /// This function just returns a read-only \ref SubGraph adaptor.
  1517       Parent::setDigraph(graph);
  1530       Parent::setDigraph(graph);
  1518       Parent::setNodeFilterMap(node_filter);
  1531       Parent::setNodeFilterMap(node_filter);
  1519       Parent::setArcFilterMap(const_true_map);
  1532       Parent::setArcFilterMap(const_true_map);
  1520     }
  1533     }
  1521 
  1534 
  1522     /// \brief Hides the given node
  1535     /// \brief Sets the status of the given node
  1523     ///
  1536     ///
  1524     /// This function hides the given node in the subgraph,
  1537     /// This function sets the status of the given node.
  1525     /// i.e. the iteration jumps over it.
       
  1526     /// It is done by simply setting the assigned value of \c n
  1538     /// It is done by simply setting the assigned value of \c n
  1527     /// to be \c false in the node filter map.
  1539     /// to \c v in the node filter map.
  1528     void hide(const Node& n) const { Parent::hide(n); }
  1540     void status(const Node& n, bool v) const { Parent::status(n, v); }
  1529 
  1541 
  1530     /// \brief Shows the given node
  1542     /// \brief Returns the status of the given node
  1531     ///
  1543     ///
  1532     /// This function shows the given node in the subgraph.
  1544     /// This function returns the status of the given node.
  1533     /// It is done by simply setting the assigned value of \c n
  1545     /// It is \c true if the given node is enabled (i.e. not hidden).
  1534     /// to be \c true in the node filter map.
  1546     bool status(const Node& n) const { return Parent::status(n); }
  1535     void unHide(const Node& n) const { Parent::unHide(n); }
  1547 
  1536 
  1548     /// \brief Disables the given node
  1537     /// \brief Returns \c true if the given node is hidden.
  1549     ///
  1538     ///
  1550     /// This function disables the given node, so the iteration
  1539     /// This function returns \c true if the given node is hidden.
  1551     /// jumps over it.
  1540     bool hidden(const Node& n) const { return Parent::hidden(n); }
  1552     /// It is the same as \ref status() "status(n, false)".
       
  1553     void disable(const Node& n) const { Parent::status(n, false); }
       
  1554 
       
  1555     /// \brief Enables the given node
       
  1556     ///
       
  1557     /// This function enables the given node.
       
  1558     /// It is the same as \ref status() "status(n, true)".
       
  1559     void enable(const Node& n) const { Parent::status(n, true); }
  1541 
  1560 
  1542   };
  1561   };
  1543 
  1562 
  1544   template<typename _Graph, typename _NodeFilterMap, bool _checked>
  1563   template<typename _Graph, typename _NodeFilterMap, bool _checked>
  1545   class FilterNodes<_Graph, _NodeFilterMap, _checked,
  1564   class FilterNodes<_Graph, _NodeFilterMap, _checked,
  1567       Parent::setGraph(_graph);
  1586       Parent::setGraph(_graph);
  1568       Parent::setNodeFilterMap(node_filter_map);
  1587       Parent::setNodeFilterMap(node_filter_map);
  1569       Parent::setEdgeFilterMap(const_true_map);
  1588       Parent::setEdgeFilterMap(const_true_map);
  1570     }
  1589     }
  1571 
  1590 
  1572     void hide(const Node& n) const { Parent::hide(n); }
  1591     void status(const Node& n, bool v) const { Parent::status(n, v); }
  1573     void unHide(const Node& n) const { Parent::unHide(n); }
  1592     bool status(const Node& n) const { return Parent::status(n); }
  1574     bool hidden(const Node& n) const { return Parent::hidden(n); }
  1593     void disable(const Node& n) const { Parent::status(n, false); }
       
  1594     void enable(const Node& n) const { Parent::status(n, true); }
  1575 
  1595 
  1576   };
  1596   };
  1577 
  1597 
  1578 
  1598 
  1579   /// \brief Returns a read-only FilterNodes adaptor
  1599   /// \brief Returns a read-only FilterNodes adaptor
  1654       Parent::setDigraph(digraph);
  1674       Parent::setDigraph(digraph);
  1655       Parent::setNodeFilterMap(const_true_map);
  1675       Parent::setNodeFilterMap(const_true_map);
  1656       Parent::setArcFilterMap(arc_filter);
  1676       Parent::setArcFilterMap(arc_filter);
  1657     }
  1677     }
  1658 
  1678 
  1659     /// \brief Hides the given arc
  1679     /// \brief Sets the status of the given arc
  1660     ///
  1680     ///
  1661     /// This function hides the given arc in the subdigraph,
  1681     /// This function sets the status of the given arc.
  1662     /// i.e. the iteration jumps over it.
       
  1663     /// It is done by simply setting the assigned value of \c a
  1682     /// It is done by simply setting the assigned value of \c a
  1664     /// to be \c false in the arc filter map.
  1683     /// to \c v in the arc filter map.
  1665     void hide(const Arc& a) const { Parent::hide(a); }
  1684     void status(const Arc& a, bool v) const { Parent::status(a, v); }
  1666 
  1685 
  1667     /// \brief Shows the given arc
  1686     /// \brief Returns the status of the given arc
  1668     ///
  1687     ///
  1669     /// This function shows the given arc in the subdigraph.
  1688     /// This function returns the status of the given arc.
  1670     /// It is done by simply setting the assigned value of \c a
  1689     /// It is \c true if the given arc is enabled (i.e. not hidden).
  1671     /// to be \c true in the arc filter map.
  1690     bool status(const Arc& a) const { return Parent::status(a); }
  1672     void unHide(const Arc& a) const { Parent::unHide(a); }
  1691 
  1673 
  1692     /// \brief Disables the given arc
  1674     /// \brief Returns \c true if the given arc is hidden.
  1693     ///
  1675     ///
  1694     /// This function disables the given arc in the subdigraph,
  1676     /// This function returns \c true if the given arc is hidden.
  1695     /// so the iteration jumps over it.
  1677     bool hidden(const Arc& a) const { return Parent::hidden(a); }
  1696     /// It is the same as \ref status() "status(a, false)".
       
  1697     void disable(const Arc& a) const { Parent::status(a, false); }
       
  1698 
       
  1699     /// \brief Enables the given arc
       
  1700     ///
       
  1701     /// This function enables the given arc in the subdigraph.
       
  1702     /// It is the same as \ref status() "status(a, true)".
       
  1703     void enable(const Arc& a) const { Parent::status(a, true); }
  1678 
  1704 
  1679   };
  1705   };
  1680 
  1706 
  1681   /// \brief Returns a read-only FilterArcs adaptor
  1707   /// \brief Returns a read-only FilterArcs adaptor
  1682   ///
  1708   ///
  1752       Parent::setGraph(graph);
  1778       Parent::setGraph(graph);
  1753       Parent::setNodeFilterMap(const_true_map);
  1779       Parent::setNodeFilterMap(const_true_map);
  1754       Parent::setEdgeFilterMap(edge_filter_map);
  1780       Parent::setEdgeFilterMap(edge_filter_map);
  1755     }
  1781     }
  1756 
  1782 
  1757     /// \brief Hides the given edge
  1783     /// \brief Sets the status of the given edge
  1758     ///
  1784     ///
  1759     /// This function hides the given edge in the subgraph,
  1785     /// This function sets the status of the given edge.
  1760     /// i.e. the iteration jumps over it.
       
  1761     /// It is done by simply setting the assigned value of \c e
  1786     /// It is done by simply setting the assigned value of \c e
  1762     /// to be \c false in the edge filter map.
  1787     /// to \c v in the edge filter map.
  1763     void hide(const Edge& e) const { Parent::hide(e); }
  1788     void status(const Edge& e, bool v) const { Parent::status(e, v); }
  1764 
  1789 
  1765     /// \brief Shows the given edge
  1790     /// \brief Returns the status of the given edge
  1766     ///
  1791     ///
  1767     /// This function shows the given edge in the subgraph.
  1792     /// This function returns the status of the given edge.
  1768     /// It is done by simply setting the assigned value of \c e
  1793     /// It is \c true if the given edge is enabled (i.e. not hidden).
  1769     /// to be \c true in the edge filter map.
  1794     bool status(const Edge& e) const { return Parent::status(e); }
  1770     void unHide(const Edge& e) const { Parent::unHide(e); }
  1795 
  1771 
  1796     /// \brief Disables the given edge
  1772     /// \brief Returns \c true if the given edge is hidden.
  1797     ///
  1773     ///
  1798     /// This function disables the given edge in the subgraph,
  1774     /// This function returns \c true if the given edge is hidden.
  1799     /// so the iteration jumps over it.
  1775     bool hidden(const Edge& e) const { return Parent::hidden(e); }
  1800     /// It is the same as \ref status() "status(e, false)".
       
  1801     void disable(const Edge& e) const { Parent::status(e, false); }
       
  1802 
       
  1803     /// \brief Enables the given edge
       
  1804     ///
       
  1805     /// This function enables the given edge in the subgraph.
       
  1806     /// It is the same as \ref status() "status(e, true)".
       
  1807     void enable(const Edge& e) const { Parent::status(e, true); }
  1776 
  1808 
  1777   };
  1809   };
  1778 
  1810 
  1779   /// \brief Returns a read-only FilterEdges adaptor
  1811   /// \brief Returns a read-only FilterEdges adaptor
  1780   ///
  1812   ///
  2765       } else {
  2797       } else {
  2766         return (*_flow)[a];
  2798         return (*_flow)[a];
  2767       }
  2799       }
  2768     }
  2800     }
  2769 
  2801 
  2770     /// \brief Augment on the given arc in the residual digraph.
  2802     /// \brief Augments on the given arc in the residual digraph.
  2771     ///
  2803     ///
  2772     /// Augment on the given arc in the residual digraph. It increases
  2804     /// Augments on the given arc in the residual digraph. It increases
  2773     /// or decreases the flow value on the original arc according to the
  2805     /// or decreases the flow value on the original arc according to the
  2774     /// direction of the residual arc.
  2806     /// direction of the residual arc.
  2775     void augment(const Arc& a, const Value& v) const {
  2807     void augment(const Arc& a, const Value& v) const {
  2776       if (Undirected::direction(a)) {
  2808       if (Undirected::direction(a)) {
  2777         _flow->set(a, (*_flow)[a] + v);
  2809         _flow->set(a, (*_flow)[a] + v);