src/lemon/bits/clearable_graph_extender.h
changeset 1435 8e85e6bbefdf
parent 1039 bd01c5a3f989
equal deleted inserted replaced
0:4633ce4aceed -1:000000000000
     1 // -*- c++ -*-
       
     2 
       
     3 #ifndef LEMON_CLEARABLE_GRAPH_EXTENDER_H
       
     4 #define LEMON_CLEARABLE_GRAPH_EXTENDER_H
       
     5 
       
     6 #include <lemon/invalid.h>
       
     7 
       
     8 
       
     9 namespace lemon {
       
    10 
       
    11   template <typename _Base> 
       
    12   class ClearableGraphExtender : public _Base {
       
    13   public:
       
    14 
       
    15     typedef ClearableGraphExtender Graph;
       
    16     typedef _Base Parent;
       
    17     typedef typename Parent::Node Node;
       
    18     typedef typename Parent::Edge Edge;
       
    19 
       
    20     void clear() {
       
    21       Parent::getNotifier(Node()).clear();
       
    22       Parent::getNotifier(Edge()).clear();
       
    23       Parent::clear();
       
    24     }
       
    25 
       
    26   };
       
    27 
       
    28   template <typename _Base> 
       
    29   class ClearableUndirGraphExtender : public _Base {
       
    30   public:
       
    31 
       
    32     typedef ClearableUndirGraphExtender Graph;
       
    33     typedef _Base Parent;
       
    34     typedef typename Parent::Node Node;
       
    35     typedef typename Parent::UndirEdge UndirEdge;
       
    36     typedef typename Parent::Edge Edge;
       
    37 
       
    38     void clear() {
       
    39       Parent::getNotifier(Node()).clear();
       
    40       Parent::getNotifier(UndirEdge()).clear();
       
    41       Parent::getNotifier(Edge()).clear();
       
    42       Parent::clear();
       
    43     }
       
    44 
       
    45   };
       
    46 
       
    47 }
       
    48 
       
    49 #endif