lemon/smart_graph.h
changeset 1980 a954b780e3ab
parent 1956 a055123339d5
child 1993 2115143eceea
equal deleted inserted replaced
16:716588a150d6 17:19006e2aea8b
    25 
    25 
    26 #include <vector>
    26 #include <vector>
    27 
    27 
    28 #include <lemon/invalid.h>
    28 #include <lemon/invalid.h>
    29 
    29 
    30 #include <lemon/bits/clearable_graph_extender.h>
       
    31 #include <lemon/bits/extendable_graph_extender.h>
       
    32 #include <lemon/bits/iterable_graph_extender.h>
       
    33 #include <lemon/bits/alteration_notifier.h>
       
    34 #include <lemon/bits/default_map.h>
       
    35 #include <lemon/bits/graph_extender.h>
    30 #include <lemon/bits/graph_extender.h>
    36 
    31 
    37 #include <lemon/utility.h>
    32 #include <lemon/utility.h>
    38 #include <lemon/error.h>
    33 #include <lemon/error.h>
       
    34 
       
    35 #include <lemon/bits/graph_extender.h>
    39 
    36 
    40 namespace lemon {
    37 namespace lemon {
    41 
    38 
    42   class SmartGraph;
    39   class SmartGraph;
    43   ///Base of SmartGraph
    40   ///Base of SmartGraph
   220       return b;
   217       return b;
   221     }
   218     }
   222 
   219 
   223   };
   220   };
   224 
   221 
   225   typedef ClearableGraphExtender<
   222   typedef GraphExtender<SmartGraphBase> ExtendedSmartGraphBase;
   226     ExtendableGraphExtender<
       
   227     MappableGraphExtender<
       
   228     IterableGraphExtender<
       
   229     AlterableGraphExtender<
       
   230     GraphExtender<SmartGraphBase> > > > > > ExtendedSmartGraphBase;
       
   231 
   223 
   232   /// \ingroup graphs
   224   /// \ingroup graphs
   233 
   225 
   234   ///A smart graph class.
   226   ///A smart graph class.
   235 
   227 
   242   ///\sa concept::ExtendableGraph.
   234   ///\sa concept::ExtendableGraph.
   243   ///
   235   ///
   244   ///\author Alpar Juttner
   236   ///\author Alpar Juttner
   245   class SmartGraph : public ExtendedSmartGraphBase {
   237   class SmartGraph : public ExtendedSmartGraphBase {
   246   public:
   238   public:
   247     
   239 
       
   240     typedef ExtendedSmartGraphBase Parent;
       
   241 
   248     class Snapshot;
   242     class Snapshot;
   249     friend class Snapshot;
   243     friend class Snapshot;
   250 
   244 
   251   protected:
   245   protected:
   252     void restoreSnapshot(const Snapshot &s)
   246     void restoreSnapshot(const Snapshot &s)
   353   };
   347   };
   354 
   348 
   355 
   349 
   356   /**************** Undirected List Graph ****************/
   350   /**************** Undirected List Graph ****************/
   357 
   351 
   358   typedef ClearableUGraphExtender<
   352   typedef UGraphExtender<UGraphBaseExtender<SmartGraphBase> >
   359     ExtendableUGraphExtender<
   353   ExtendedSmartUGraphBase;
   360     MappableUGraphExtender<
       
   361     IterableUGraphExtender<
       
   362     AlterableUGraphExtender<
       
   363     UGraphExtender<SmartGraphBase> > > > > > ExtendedSmartUGraphBase;
       
   364 
   354 
   365   /// \ingroup graphs
   355   /// \ingroup graphs
   366   ///
   356   ///
   367   /// \brief A smart undirected graph class.
   357   /// \brief A smart undirected graph class.
   368   ///
   358   ///
   585     }
   575     }
   586 
   576 
   587   };
   577   };
   588 
   578 
   589 
   579 
   590   typedef ClearableBpUGraphExtender<
   580   typedef BpUGraphExtender< BpUGraphBaseExtender<
   591     ExtendableBpUGraphExtender<
   581     SmartBpUGraphBase> > ExtendedSmartBpUGraphBase;
   592     MappableBpUGraphExtender<
       
   593     IterableBpUGraphExtender<
       
   594     AlterableBpUGraphExtender<
       
   595     BpUGraphExtender <
       
   596     SmartBpUGraphBase> > > > > >
       
   597   ExtendedSmartBpUGraphBase;
       
   598 
   582 
   599   /// \ingroup graphs
   583   /// \ingroup graphs
   600   ///
   584   ///
   601   /// \brief A smart bipartite undirected graph class.
   585   /// \brief A smart bipartite undirected graph class.
   602   ///
   586   ///