klao@946: // -*- c++ -*-
klao@946: 
klao@946: #ifndef LEMON_CLEARABLE_GRAPH_EXTENDER_H
klao@946: #define LEMON_CLEARABLE_GRAPH_EXTENDER_H
klao@946: 
klao@946: #include <lemon/invalid.h>
klao@946: 
klao@946: 
klao@946: namespace lemon {
klao@946: 
klao@946:   template <typename _Base> 
klao@946:   class ClearableGraphExtender : public _Base {
klao@946:   public:
klao@946: 
klao@946:     typedef ClearableGraphExtender Graph;
klao@946:     typedef _Base Parent;
deba@980:     typedef typename Parent::Node Node;
deba@980:     typedef typename Parent::Edge Edge;
klao@946: 
klao@946:     void clear() {
deba@980:       Parent::getObserverRegistry(Node()).clear();
deba@980:       Parent::getObserverRegistry(Edge()).clear();
klao@946:       Parent::clear();
klao@946:     }
klao@946: 
klao@946:   };
klao@946: 
klao@946: }
klao@946: 
klao@946: #endif