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 /// |