lemon/iterable_maps.h
changeset 2031 080d51024ac5
parent 1993 2115143eceea
child 2112 f27dfd29c5c0
     1.1 --- a/lemon/iterable_maps.h	Mon Apr 03 09:24:38 2006 +0000
     1.2 +++ b/lemon/iterable_maps.h	Mon Apr 03 09:45:23 2006 +0000
     1.3 @@ -20,6 +20,7 @@
     1.4  #include <lemon/bits/invalid.h>
     1.5  
     1.6  #include <lemon/bits/default_map.h>
     1.7 +#include <lemon/bits/map_extender.h>
     1.8  
     1.9  #include <vector>
    1.10  #include <map>
    1.11 @@ -400,12 +401,11 @@
    1.12    /// \param _Item One of the graph's item type, the key of the map.
    1.13    template <typename _Graph, typename _Item>
    1.14    class IterableIntMap 
    1.15 -    : protected DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.16 -                           IterableIntMapNode<_Item> > {
    1.17 +    : protected MapExtender<DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.18 +                                       IterableIntMapNode<_Item> > >{
    1.19    public:
    1.20 -    typedef DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.21 -                       IterableIntMapNode<_Item> >
    1.22 -    Parent;
    1.23 +    typedef MapExtender<DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.24 +                                   IterableIntMapNode<_Item> > > Parent;
    1.25  
    1.26      /// The key type
    1.27      typedef _Item Key;
    1.28 @@ -689,11 +689,12 @@
    1.29    /// \param _Value Any comparable value type.
    1.30    template <typename _Graph, typename _Item, typename _Value>
    1.31    class IterableValueMap 
    1.32 -    : protected DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.33 -                           IterableValueMapNode<_Item, _Value> > {
    1.34 +    : protected MapExtender<DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.35 +                                       IterableValueMapNode<_Item, _Value> > >{
    1.36    public:
    1.37 -    typedef DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.38 -                       IterableValueMapNode<_Item, _Value> > Parent;
    1.39 +    typedef MapExtender<DefaultMap<_Graph, _Item, _iterable_maps_bits::
    1.40 +                                   IterableValueMapNode<_Item, _Value> > >
    1.41 +    Parent;
    1.42  
    1.43      /// The key type
    1.44      typedef _Item Key;
    1.45 @@ -702,10 +703,6 @@
    1.46      /// The graph type
    1.47      typedef _Graph Graph;
    1.48  
    1.49 -  protected:
    1.50 -
    1.51 -    typedef typename ItemSetTraits<_Graph, Key>::ItemIt KeyIt; 
    1.52 -
    1.53    public:
    1.54  
    1.55      /// \brief Constructor of the Map with a given value.
    1.56 @@ -715,7 +712,7 @@
    1.57                                const Value& value = Value()) 
    1.58        : Parent(graph, _iterable_maps_bits::
    1.59                 IterableValueMapNode<_Item, _Value>(value)) {
    1.60 -      for (KeyIt it(*Parent::getGraph()); it != INVALID; ++it) {
    1.61 +      for (typename Parent::ItemIt it(*this); it != INVALID; ++it) {
    1.62          lace(it);
    1.63        }
    1.64      }
    1.65 @@ -903,7 +900,7 @@
    1.66  
    1.67      virtual void build() {
    1.68        Parent::build();
    1.69 -      for (KeyIt it(*Parent::getGraph()); it != INVALID; ++it) {
    1.70 +      for (typename Parent::ItemIt it(*this); it != INVALID; ++it) {
    1.71          lace(it);
    1.72        }
    1.73      }