Bug fix in map_extender.h (#330)
authorPeter Kovacs <kpeter@inf.elte.hu>
Fri, 13 Nov 2009 12:33:33 +0100
changeset 801e9c203fb003d
parent 505 c6acc34f98dc
child 802 994c7df296c9
child 837 f58e01094738
Bug fix in map_extender.h (#330)
lemon/bits/map_extender.h
     1.1 --- a/lemon/bits/map_extender.h	Fri Oct 16 10:21:37 2009 +0200
     1.2 +++ b/lemon/bits/map_extender.h	Fri Nov 13 12:33:33 2009 +0100
     1.3 @@ -80,36 +80,36 @@
     1.4        typedef Item Parent;
     1.5        typedef typename Map::Value Value;
     1.6  
     1.7 -      MapIt() {}
     1.8 +      MapIt() : map(NULL) {}
     1.9  
    1.10 -      MapIt(Invalid i) : Parent(i) { }
    1.11 +      MapIt(Invalid i) : Parent(i), map(NULL) {}
    1.12  
    1.13 -      explicit MapIt(Map& _map) : map(_map) {
    1.14 -        map.notifier()->first(*this);
    1.15 +      explicit MapIt(Map& _map) : map(&_map) {
    1.16 +        map->notifier()->first(*this);
    1.17        }
    1.18  
    1.19        MapIt(const Map& _map, const Item& item)
    1.20 -        : Parent(item), map(_map) {}
    1.21 +        : Parent(item), map(&_map) {}
    1.22  
    1.23        MapIt& operator++() {
    1.24 -        map.notifier()->next(*this);
    1.25 +        map->notifier()->next(*this);
    1.26          return *this;
    1.27        }
    1.28  
    1.29        typename MapTraits<Map>::ConstReturnValue operator*() const {
    1.30 -        return map[*this];
    1.31 +        return (*map)[*this];
    1.32        }
    1.33  
    1.34        typename MapTraits<Map>::ReturnValue operator*() {
    1.35 -        return map[*this];
    1.36 +        return (*map)[*this];
    1.37        }
    1.38  
    1.39        void set(const Value& value) {
    1.40 -        map.set(*this, value);
    1.41 +        map->set(*this, value);
    1.42        }
    1.43  
    1.44      protected:
    1.45 -      Map& map;
    1.46 +      Map* map;
    1.47  
    1.48      };
    1.49  
    1.50 @@ -120,19 +120,19 @@
    1.51  
    1.52        typedef typename Map::Value Value;
    1.53  
    1.54 -      ConstMapIt() {}
    1.55 +      ConstMapIt() : map(NULL) {}
    1.56  
    1.57 -      ConstMapIt(Invalid i) : Parent(i) { }
    1.58 +      ConstMapIt(Invalid i) : Parent(i), map(NULL) {}
    1.59  
    1.60 -      explicit ConstMapIt(Map& _map) : map(_map) {
    1.61 -        map.notifier()->first(*this);
    1.62 +      explicit ConstMapIt(Map& _map) : map(&_map) {
    1.63 +        map->notifier()->first(*this);
    1.64        }
    1.65  
    1.66        ConstMapIt(const Map& _map, const Item& item)
    1.67          : Parent(item), map(_map) {}
    1.68  
    1.69        ConstMapIt& operator++() {
    1.70 -        map.notifier()->next(*this);
    1.71 +        map->notifier()->next(*this);
    1.72          return *this;
    1.73        }
    1.74  
    1.75 @@ -141,7 +141,7 @@
    1.76        }
    1.77  
    1.78      protected:
    1.79 -      const Map& map;
    1.80 +      const Map* map;
    1.81      };
    1.82  
    1.83      class ItemIt : public Item {
    1.84 @@ -149,24 +149,24 @@
    1.85  
    1.86        typedef Item Parent;
    1.87  
    1.88 -      ItemIt() {}
    1.89 +      ItemIt() : map(NULL) {}
    1.90  
    1.91 -      ItemIt(Invalid i) : Parent(i) { }
    1.92 +      ItemIt(Invalid i) : Parent(i), map(NULL) {}
    1.93  
    1.94 -      explicit ItemIt(Map& _map) : map(_map) {
    1.95 -        map.notifier()->first(*this);
    1.96 +      explicit ItemIt(Map& _map) : map(&_map) {
    1.97 +        map->notifier()->first(*this);
    1.98        }
    1.99  
   1.100        ItemIt(const Map& _map, const Item& item)
   1.101 -        : Parent(item), map(_map) {}
   1.102 +        : Parent(item), map(&_map) {}
   1.103  
   1.104        ItemIt& operator++() {
   1.105 -        map.notifier()->next(*this);
   1.106 +        map->notifier()->next(*this);
   1.107          return *this;
   1.108        }
   1.109  
   1.110      protected:
   1.111 -      const Map& map;
   1.112 +      const Map* map;
   1.113  
   1.114      };
   1.115    };
   1.116 @@ -224,36 +224,36 @@
   1.117        typedef Item Parent;
   1.118        typedef typename Map::Value Value;
   1.119  
   1.120 -      MapIt() {}
   1.121 +      MapIt() : map(NULL) {}
   1.122  
   1.123 -      MapIt(Invalid i) : Parent(i) { }
   1.124 +      MapIt(Invalid i) : Parent(i), map(NULL) { }
   1.125  
   1.126 -      explicit MapIt(Map& _map) : map(_map) {
   1.127 -        map.graph.first(*this);
   1.128 +      explicit MapIt(Map& _map) : map(&_map) {
   1.129 +        map->graph.first(*this);
   1.130        }
   1.131  
   1.132        MapIt(const Map& _map, const Item& item)
   1.133 -        : Parent(item), map(_map) {}
   1.134 +        : Parent(item), map(&_map) {}
   1.135  
   1.136        MapIt& operator++() {
   1.137 -        map.graph.next(*this);
   1.138 +        map->graph.next(*this);
   1.139          return *this;
   1.140        }
   1.141  
   1.142        typename MapTraits<Map>::ConstReturnValue operator*() const {
   1.143 -        return map[*this];
   1.144 +        return (*map)[*this];
   1.145        }
   1.146  
   1.147        typename MapTraits<Map>::ReturnValue operator*() {
   1.148 -        return map[*this];
   1.149 +        return (*map)[*this];
   1.150        }
   1.151  
   1.152        void set(const Value& value) {
   1.153 -        map.set(*this, value);
   1.154 +        map->set(*this, value);
   1.155        }
   1.156  
   1.157      protected:
   1.158 -      Map& map;
   1.159 +      Map* map;
   1.160  
   1.161      };
   1.162  
   1.163 @@ -264,28 +264,28 @@
   1.164  
   1.165        typedef typename Map::Value Value;
   1.166  
   1.167 -      ConstMapIt() {}
   1.168 +      ConstMapIt() : map(NULL) {}
   1.169  
   1.170 -      ConstMapIt(Invalid i) : Parent(i) { }
   1.171 +      ConstMapIt(Invalid i) : Parent(i), map(NULL) { }
   1.172  
   1.173 -      explicit ConstMapIt(Map& _map) : map(_map) {
   1.174 -        map.graph.first(*this);
   1.175 +      explicit ConstMapIt(Map& _map) : map(&_map) {
   1.176 +        map->graph.first(*this);
   1.177        }
   1.178  
   1.179        ConstMapIt(const Map& _map, const Item& item)
   1.180 -        : Parent(item), map(_map) {}
   1.181 +        : Parent(item), map(&_map) {}
   1.182  
   1.183        ConstMapIt& operator++() {
   1.184 -        map.graph.next(*this);
   1.185 +        map->graph.next(*this);
   1.186          return *this;
   1.187        }
   1.188  
   1.189        typename MapTraits<Map>::ConstReturnValue operator*() const {
   1.190 -        return map[*this];
   1.191 +        return (*map)[*this];
   1.192        }
   1.193  
   1.194      protected:
   1.195 -      const Map& map;
   1.196 +      const Map* map;
   1.197      };
   1.198  
   1.199      class ItemIt : public Item {
   1.200 @@ -293,24 +293,24 @@
   1.201  
   1.202        typedef Item Parent;
   1.203  
   1.204 -      ItemIt() {}
   1.205 +      ItemIt() : map(NULL) {}
   1.206  
   1.207 -      ItemIt(Invalid i) : Parent(i) { }
   1.208 +      ItemIt(Invalid i) : Parent(i), map(NULL) { }
   1.209  
   1.210 -      explicit ItemIt(Map& _map) : map(_map) {
   1.211 -        map.graph.first(*this);
   1.212 +      explicit ItemIt(Map& _map) : map(&_map) {
   1.213 +        map->graph.first(*this);
   1.214        }
   1.215  
   1.216        ItemIt(const Map& _map, const Item& item)
   1.217 -        : Parent(item), map(_map) {}
   1.218 +        : Parent(item), map(&_map) {}
   1.219  
   1.220        ItemIt& operator++() {
   1.221 -        map.graph.next(*this);
   1.222 +        map->graph.next(*this);
   1.223          return *this;
   1.224        }
   1.225  
   1.226      protected:
   1.227 -      const Map& map;
   1.228 +      const Map* map;
   1.229  
   1.230      };
   1.231