lemon/edge_set.h
changeset 1986 9b56cca61e2e
parent 1962 c1c3a0fae8a1
child 1990 15fb7a4ea6be
equal deleted inserted replaced
5:9b2c097d5b50 6:912fdb70f9e6
    17  */
    17  */
    18 
    18 
    19 #ifndef LEMON_EDGE_SET_H
    19 #ifndef LEMON_EDGE_SET_H
    20 #define LEMON_EDGE_SET_H
    20 #define LEMON_EDGE_SET_H
    21 
    21 
    22 #include <lemon/bits/erasable_graph_extender.h>
    22 
    23 #include <lemon/bits/clearable_graph_extender.h>
    23 #include <lemon/bits/edge_set_extender.h>
    24 #include <lemon/bits/extendable_graph_extender.h>
       
    25 #include <lemon/bits/iterable_graph_extender.h>
       
    26 #include <lemon/bits/alteration_notifier.h>
       
    27 #include <lemon/bits/default_map.h>
       
    28 #include <lemon/bits/graph_extender.h>
       
    29 
    24 
    30 /// \ingroup graphs
    25 /// \ingroup graphs
    31 /// \file
    26 /// \file
    32 /// \brief EdgeSet classes.
    27 /// \brief EdgeSet classes.
    33 ///
    28 ///
   227   /// "StaticGraph" concept.
   222   /// "StaticGraph" concept.
   228   ///
   223   ///
   229   /// In the edge extension and removing it conforms to the 
   224   /// In the edge extension and removing it conforms to the 
   230   /// \ref concept::ErasableGraph "ErasableGraph" concept.
   225   /// \ref concept::ErasableGraph "ErasableGraph" concept.
   231   template <typename _Graph>
   226   template <typename _Graph>
   232   class ListEdgeSet :
   227   class ListEdgeSet : public EdgeSetExtender<ListEdgeSetBase<_Graph> > {
   233     public ErasableEdgeSetExtender<
   228 
   234     ClearableEdgeSetExtender<
   229   public:
   235     ExtendableEdgeSetExtender<
   230 
   236     MappableEdgeSetExtender<
   231     typedef EdgeSetExtender<ListEdgeSetBase<_Graph> > Parent;
   237     IterableGraphExtender<
       
   238     AlterableEdgeSetExtender<
       
   239     GraphExtender<
       
   240     ListEdgeSetBase<_Graph> > > > > > > > {
       
   241 
       
   242   public:
       
   243 
       
   244     typedef ErasableEdgeSetExtender<
       
   245       ClearableEdgeSetExtender<
       
   246       ExtendableEdgeSetExtender<
       
   247       MappableEdgeSetExtender<
       
   248       IterableGraphExtender<
       
   249       AlterableEdgeSetExtender<
       
   250       GraphExtender<
       
   251       ListEdgeSetBase<_Graph> > > > > > > > Parent;
       
   252     
   232     
   253     typedef typename Parent::Node Node;
   233     typedef typename Parent::Node Node;
   254     typedef typename Parent::Edge Edge;
   234     typedef typename Parent::Edge Edge;
   255     
   235     
   256     typedef _Graph Graph;
   236     typedef _Graph Graph;
   334   /// "StaticGraph" concept.
   314   /// "StaticGraph" concept.
   335   ///
   315   ///
   336   /// In the edge extension and removing it conforms to the 
   316   /// In the edge extension and removing it conforms to the 
   337   /// \ref concept::ErasableUGraph "ErasableUGraph" concept.
   317   /// \ref concept::ErasableUGraph "ErasableUGraph" concept.
   338   template <typename _Graph>
   318   template <typename _Graph>
   339   class ListUEdgeSet :
   319   class ListUEdgeSet 
   340     public ErasableUEdgeSetExtender<
   320     : public UEdgeSetExtender<UGraphBaseExtender<ListEdgeSetBase<_Graph> > > {
   341     ClearableUEdgeSetExtender<
   321 
   342     ExtendableUEdgeSetExtender<
   322   public:
   343     MappableUEdgeSetExtender<
   323 
   344     IterableUGraphExtender<
   324     typedef UEdgeSetExtender<UGraphBaseExtender<
   345     AlterableUEdgeSetExtender<
   325       ListEdgeSetBase<_Graph> > > Parent;
   346     UGraphExtender<
       
   347     ListEdgeSetBase<_Graph> > > > > > > > {
       
   348 
       
   349   public:
       
   350 
       
   351     typedef ErasableUEdgeSetExtender<
       
   352       ClearableUEdgeSetExtender<
       
   353       ExtendableUEdgeSetExtender<
       
   354       MappableUEdgeSetExtender<
       
   355       IterableUGraphExtender<
       
   356       AlterableUEdgeSetExtender<
       
   357       UGraphExtender<
       
   358       ListEdgeSetBase<_Graph> > > > > > > > Parent;
       
   359     
   326     
   360     typedef typename Parent::Node Node;
   327     typedef typename Parent::Node Node;
   361     typedef typename Parent::Edge Edge;
   328     typedef typename Parent::Edge Edge;
   362     
   329     
   363     typedef _Graph Graph;
   330     typedef _Graph Graph;
   565   /// "StaticGraph" concept.
   532   /// "StaticGraph" concept.
   566   ///
   533   ///
   567   /// In the edge extension and removing it conforms to the 
   534   /// In the edge extension and removing it conforms to the 
   568   /// \ref concept::ExtendableGraph "ExtendableGraph" concept.
   535   /// \ref concept::ExtendableGraph "ExtendableGraph" concept.
   569   template <typename _Graph>
   536   template <typename _Graph>
   570   class SmartEdgeSet :
   537   class SmartEdgeSet : public EdgeSetExtender<SmartEdgeSetBase<_Graph> > {
   571     public ClearableEdgeSetExtender<
   538 
   572     ExtendableEdgeSetExtender<
   539   public:
   573     MappableEdgeSetExtender<
   540 
   574     IterableGraphExtender<
   541     typedef EdgeSetExtender<SmartEdgeSetBase<_Graph> > Parent;
   575     AlterableEdgeSetExtender<
       
   576     GraphExtender<
       
   577     SmartEdgeSetBase<_Graph> > > > > > > {
       
   578 
       
   579   public:
       
   580 
       
   581     typedef ClearableEdgeSetExtender<
       
   582       ExtendableEdgeSetExtender<
       
   583       MappableEdgeSetExtender<
       
   584       IterableGraphExtender<
       
   585       AlterableEdgeSetExtender<
       
   586       GraphExtender<
       
   587       SmartEdgeSetBase<_Graph> > > > > > > Parent;
       
   588     
   542     
   589     typedef typename Parent::Node Node;
   543     typedef typename Parent::Node Node;
   590     typedef typename Parent::Edge Edge;
   544     typedef typename Parent::Edge Edge;
   591     
   545     
   592     typedef _Graph Graph;
   546     typedef _Graph Graph;
   669   /// "StaticGraph" concept.
   623   /// "StaticGraph" concept.
   670   ///
   624   ///
   671   /// In the edge extension and removing it conforms to the 
   625   /// In the edge extension and removing it conforms to the 
   672   /// \ref concept::ExtendableUGraph "ExtendableUGraph" concept.
   626   /// \ref concept::ExtendableUGraph "ExtendableUGraph" concept.
   673   template <typename _Graph>
   627   template <typename _Graph>
   674   class SmartUEdgeSet :
   628   class SmartUEdgeSet 
   675     public ClearableUEdgeSetExtender<
   629     : public UEdgeSetExtender<UGraphBaseExtender<SmartEdgeSetBase<_Graph> > > {
   676     ExtendableUEdgeSetExtender<
   630 
   677     MappableUEdgeSetExtender<
   631   public:
   678     IterableUGraphExtender<
   632 
   679     AlterableUEdgeSetExtender<
   633     typedef UEdgeSetExtender<UGraphBaseExtender<
   680     UGraphExtender<
   634       SmartEdgeSetBase<_Graph> > > Parent;
   681     SmartEdgeSetBase<_Graph> > > > > > > {
       
   682 
       
   683   public:
       
   684 
       
   685     typedef ClearableUEdgeSetExtender<
       
   686       ExtendableUEdgeSetExtender<
       
   687       MappableUEdgeSetExtender<
       
   688       IterableUGraphExtender<
       
   689       AlterableUEdgeSetExtender<
       
   690       UGraphExtender<
       
   691       SmartEdgeSetBase<_Graph> > > > > > > Parent;
       
   692     
   635     
   693     typedef typename Parent::Node Node;
   636     typedef typename Parent::Node Node;
   694     typedef typename Parent::Edge Edge;
   637     typedef typename Parent::Edge Edge;
   695     
   638     
   696     typedef _Graph Graph;
   639     typedef _Graph Graph;