src/lemon/clearable_graph_extender.h
author alpar
Tue, 05 Apr 2005 06:19:24 +0000
changeset 1302 3f90ae31200a
parent 1022 567f392d1d2e
permissions -rw-r--r--
Subdirectory for low level headers
     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