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 klao@946: klao@946: klao@946: namespace lemon { klao@946: klao@946: template 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@1039: Parent::getNotifier(Node()).clear(); deba@1039: Parent::getNotifier(Edge()).clear(); klao@946: Parent::clear(); klao@946: } klao@946: klao@946: }; klao@946: klao@1022: template klao@1022: class ClearableUndirGraphExtender : public _Base { klao@1022: public: klao@1022: klao@1022: typedef ClearableUndirGraphExtender Graph; klao@1022: typedef _Base Parent; klao@1022: typedef typename Parent::Node Node; klao@1022: typedef typename Parent::UndirEdge UndirEdge; klao@1022: typedef typename Parent::Edge Edge; klao@1022: klao@1022: void clear() { deba@1039: Parent::getNotifier(Node()).clear(); deba@1039: Parent::getNotifier(UndirEdge()).clear(); deba@1039: Parent::getNotifier(Edge()).clear(); klao@1022: Parent::clear(); klao@1022: } klao@1022: klao@1022: }; klao@1022: deba@1820: deba@1820: template deba@1820: class ClearableUndirBipartiteGraphExtender : public _Base { deba@1820: public: deba@1820: deba@1820: typedef _Base Parent; deba@1820: typedef ClearableUndirBipartiteGraphExtender Graph; deba@1820: deba@1820: typedef typename Parent::Node Node; deba@1820: typedef typename Parent::LowerNode LowerNode; deba@1820: typedef typename Parent::UpperNode UpperNode; deba@1820: typedef typename Parent::Edge Edge; deba@1820: typedef typename Parent::UndirEdge UndirEdge; deba@1820: deba@1820: void clear() { deba@1820: Parent::getNotifier(Edge()).clear(); deba@1820: Parent::getNotifier(UndirEdge()).clear(); deba@1820: Parent::getNotifier(Node()).clear(); deba@1820: Parent::getNotifier(LowerNode()).clear(); deba@1820: Parent::getNotifier(UpperNode()).clear(); deba@1820: Parent::clear(); deba@1820: } deba@1820: deba@1820: }; deba@1820: klao@946: } klao@946: klao@946: #endif