1.1 --- a/lemon/bits/map_extender.h Thu Nov 05 16:00:44 2009 +0100
1.2 +++ b/lemon/bits/map_extender.h Thu Dec 10 16:56:26 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