1.1 --- a/lemon/list_graph.h Fri Mar 02 17:56:22 2007 +0000
1.2 +++ b/lemon/list_graph.h Fri Mar 02 18:04:28 2007 +0000
1.3 @@ -522,16 +522,15 @@
1.4 snapshot.eraseNode(node);
1.5 }
1.6 virtual void erase(const std::vector<Node>& nodes) {
1.7 - for (int i = 0; i < (int)nodes.size(); ++i) {
1.8 + for (int i = 0; i < int(nodes.size()); ++i) {
1.9 snapshot.eraseNode(nodes[i]);
1.10 }
1.11 }
1.12 virtual void build() {
1.13 - NodeNotifier* _notifier = notifier();
1.14 Node node;
1.15 std::vector<Node> nodes;
1.16 - for (_notifier->first(node); node != INVALID;
1.17 - _notifier->next(node)) {
1.18 + for (notifier()->first(node); node != INVALID;
1.19 + notifier()->next(node)) {
1.20 nodes.push_back(node);
1.21 }
1.22 for (int i = nodes.size() - 1; i >= 0; --i) {
1.23 @@ -539,10 +538,9 @@
1.24 }
1.25 }
1.26 virtual void clear() {
1.27 - NodeNotifier* _notifier = notifier();
1.28 Node node;
1.29 - for (_notifier->first(node); node != INVALID;
1.30 - _notifier->next(node)) {
1.31 + for (notifier()->first(node); node != INVALID;
1.32 + notifier()->next(node)) {
1.33 snapshot.eraseNode(node);
1.34 }
1.35 }
1.36 @@ -574,16 +572,15 @@
1.37 snapshot.eraseEdge(edge);
1.38 }
1.39 virtual void erase(const std::vector<Edge>& edges) {
1.40 - for (int i = 0; i < (int)edges.size(); ++i) {
1.41 + for (int i = 0; i < int(edges.size()); ++i) {
1.42 snapshot.eraseEdge(edges[i]);
1.43 }
1.44 }
1.45 virtual void build() {
1.46 - EdgeNotifier* _notifier = notifier();
1.47 Edge edge;
1.48 std::vector<Edge> edges;
1.49 - for (_notifier->first(edge); edge != INVALID;
1.50 - _notifier->next(edge)) {
1.51 + for (notifier()->first(edge); edge != INVALID;
1.52 + notifier()->next(edge)) {
1.53 edges.push_back(edge);
1.54 }
1.55 for (int i = edges.size() - 1; i >= 0; --i) {
1.56 @@ -591,9 +588,9 @@
1.57 }
1.58 }
1.59 virtual void clear() {
1.60 - EdgeNotifier* _notifier = notifier();
1.61 Edge edge;
1.62 - for (_notifier->first(edge); edge != INVALID; _notifier->next(edge)) {
1.63 + for (notifier()->first(edge); edge != INVALID;
1.64 + notifier()->next(edge)) {
1.65 snapshot.eraseEdge(edge);
1.66 }
1.67 }
1.68 @@ -1269,16 +1266,15 @@
1.69 snapshot.eraseNode(node);
1.70 }
1.71 virtual void erase(const std::vector<Node>& nodes) {
1.72 - for (int i = 0; i < (int)nodes.size(); ++i) {
1.73 + for (int i = 0; i < int(nodes.size()); ++i) {
1.74 snapshot.eraseNode(nodes[i]);
1.75 }
1.76 }
1.77 virtual void build() {
1.78 - NodeNotifier* _notifier = notifier();
1.79 Node node;
1.80 std::vector<Node> nodes;
1.81 - for (_notifier->first(node); node != INVALID;
1.82 - _notifier->next(node)) {
1.83 + for (notifier()->first(node); node != INVALID;
1.84 + notifier()->next(node)) {
1.85 nodes.push_back(node);
1.86 }
1.87 for (int i = nodes.size() - 1; i >= 0; --i) {
1.88 @@ -1286,10 +1282,9 @@
1.89 }
1.90 }
1.91 virtual void clear() {
1.92 - NodeNotifier* _notifier = notifier();
1.93 Node node;
1.94 - for (_notifier->first(node); node != INVALID;
1.95 - _notifier->next(node)) {
1.96 + for (notifier()->first(node); node != INVALID;
1.97 + notifier()->next(node)) {
1.98 snapshot.eraseNode(node);
1.99 }
1.100 }
1.101 @@ -1321,16 +1316,15 @@
1.102 snapshot.eraseUEdge(edge);
1.103 }
1.104 virtual void erase(const std::vector<UEdge>& edges) {
1.105 - for (int i = 0; i < (int)edges.size(); ++i) {
1.106 + for (int i = 0; i < int(edges.size()); ++i) {
1.107 snapshot.eraseUEdge(edges[i]);
1.108 }
1.109 }
1.110 virtual void build() {
1.111 - UEdgeNotifier* _notifier = notifier();
1.112 UEdge edge;
1.113 std::vector<UEdge> edges;
1.114 - for (_notifier->first(edge); edge != INVALID;
1.115 - _notifier->next(edge)) {
1.116 + for (notifier()->first(edge); edge != INVALID;
1.117 + notifier()->next(edge)) {
1.118 edges.push_back(edge);
1.119 }
1.120 for (int i = edges.size() - 1; i >= 0; --i) {
1.121 @@ -1338,10 +1332,9 @@
1.122 }
1.123 }
1.124 virtual void clear() {
1.125 - UEdgeNotifier* _notifier = notifier();
1.126 UEdge edge;
1.127 - for (_notifier->first(edge); edge != INVALID;
1.128 - _notifier->next(edge)) {
1.129 + for (notifier()->first(edge); edge != INVALID;
1.130 + notifier()->next(edge)) {
1.131 snapshot.eraseUEdge(edge);
1.132 }
1.133 }
1.134 @@ -1575,29 +1568,29 @@
1.135 }
1.136
1.137 void first(UEdge& edge) const {
1.138 - int aNodeId = first_anode;
1.139 - while (aNodeId != -1 && aNodes[aNodeId].first_edge == -1) {
1.140 - aNodeId = aNodes[aNodeId].next != -1 ?
1.141 - aNodes[aNodeId].next >> 1 : -1;
1.142 + int aid = first_anode;
1.143 + while (aid != -1 && aNodes[aid].first_edge == -1) {
1.144 + aid = aNodes[aid].next != -1 ?
1.145 + aNodes[aid].next >> 1 : -1;
1.146 }
1.147 - if (aNodeId != -1) {
1.148 - edge.id = aNodes[aNodeId].first_edge;
1.149 + if (aid != -1) {
1.150 + edge.id = aNodes[aid].first_edge;
1.151 } else {
1.152 edge.id = -1;
1.153 }
1.154 }
1.155 void next(UEdge& edge) const {
1.156 - int aNodeId = edges[edge.id].aNode >> 1;
1.157 + int aid = edges[edge.id].aNode >> 1;
1.158 edge.id = edges[edge.id].next_out;
1.159 if (edge.id == -1) {
1.160 - aNodeId = aNodes[aNodeId].next != -1 ?
1.161 - aNodes[aNodeId].next >> 1 : -1;
1.162 - while (aNodeId != -1 && aNodes[aNodeId].first_edge == -1) {
1.163 - aNodeId = aNodes[aNodeId].next != -1 ?
1.164 - aNodes[aNodeId].next >> 1 : -1;
1.165 + aid = aNodes[aid].next != -1 ?
1.166 + aNodes[aid].next >> 1 : -1;
1.167 + while (aid != -1 && aNodes[aid].first_edge == -1) {
1.168 + aid = aNodes[aid].next != -1 ?
1.169 + aNodes[aid].next >> 1 : -1;
1.170 }
1.171 - if (aNodeId != -1) {
1.172 - edge.id = aNodes[aNodeId].first_edge;
1.173 + if (aid != -1) {
1.174 + edge.id = aNodes[aid].first_edge;
1.175 } else {
1.176 edge.id = -1;
1.177 }
1.178 @@ -1677,45 +1670,45 @@
1.179 }
1.180
1.181 Node addANode() {
1.182 - int aNodeId;
1.183 + int aid;
1.184 if (first_free_anode == -1) {
1.185 - aNodeId = aNodes.size();
1.186 + aid = aNodes.size();
1.187 aNodes.push_back(NodeT());
1.188 } else {
1.189 - aNodeId = first_free_anode;
1.190 + aid = first_free_anode;
1.191 first_free_anode = aNodes[first_free_anode].next;
1.192 }
1.193 if (first_anode != -1) {
1.194 - aNodes[aNodeId].next = first_anode << 1;
1.195 - aNodes[first_anode].prev = aNodeId << 1;
1.196 + aNodes[aid].next = first_anode << 1;
1.197 + aNodes[first_anode].prev = aid << 1;
1.198 } else {
1.199 - aNodes[aNodeId].next = -1;
1.200 + aNodes[aid].next = -1;
1.201 }
1.202 - aNodes[aNodeId].prev = -1;
1.203 - first_anode = aNodeId;
1.204 - aNodes[aNodeId].first_edge = -1;
1.205 - return Node(aNodeId << 1);
1.206 + aNodes[aid].prev = -1;
1.207 + first_anode = aid;
1.208 + aNodes[aid].first_edge = -1;
1.209 + return Node(aid << 1);
1.210 }
1.211
1.212 Node addBNode() {
1.213 - int bNodeId;
1.214 + int bid;
1.215 if (first_free_bnode == -1) {
1.216 - bNodeId = bNodes.size();
1.217 + bid = bNodes.size();
1.218 bNodes.push_back(NodeT());
1.219 } else {
1.220 - bNodeId = first_free_bnode;
1.221 + bid = first_free_bnode;
1.222 first_free_bnode = bNodes[first_free_bnode].next;
1.223 }
1.224 if (first_bnode != -1) {
1.225 - bNodes[bNodeId].next = (first_bnode << 1) + 1;
1.226 - bNodes[first_bnode].prev = (bNodeId << 1) + 1;
1.227 + bNodes[bid].next = (first_bnode << 1) + 1;
1.228 + bNodes[first_bnode].prev = (bid << 1) + 1;
1.229 } else {
1.230 - bNodes[bNodeId].next = -1;
1.231 + bNodes[bid].next = -1;
1.232 }
1.233 - bNodes[bNodeId].prev = -1;
1.234 - first_bnode = bNodeId;
1.235 - bNodes[bNodeId].first_edge = -1;
1.236 - return Node((bNodeId << 1) + 1);
1.237 + bNodes[bid].prev = -1;
1.238 + first_bnode = bid;
1.239 + bNodes[bid].first_edge = -1;
1.240 + return Node((bid << 1) + 1);
1.241 }
1.242
1.243 UEdge addEdge(const Node& source, const Node& target) {
1.244 @@ -1752,31 +1745,31 @@
1.245
1.246 void erase(const Node& node) {
1.247 if (aNode(node)) {
1.248 - int aNodeId = node.id >> 1;
1.249 - if (aNodes[aNodeId].prev != -1) {
1.250 - aNodes[aNodes[aNodeId].prev >> 1].next = aNodes[aNodeId].next;
1.251 + int aid = node.id >> 1;
1.252 + if (aNodes[aid].prev != -1) {
1.253 + aNodes[aNodes[aid].prev >> 1].next = aNodes[aid].next;
1.254 } else {
1.255 first_anode =
1.256 - aNodes[aNodeId].next != -1 ? aNodes[aNodeId].next >> 1 : -1;
1.257 + aNodes[aid].next != -1 ? aNodes[aid].next >> 1 : -1;
1.258 }
1.259 - if (aNodes[aNodeId].next != -1) {
1.260 - aNodes[aNodes[aNodeId].next >> 1].prev = aNodes[aNodeId].prev;
1.261 + if (aNodes[aid].next != -1) {
1.262 + aNodes[aNodes[aid].next >> 1].prev = aNodes[aid].prev;
1.263 }
1.264 - aNodes[aNodeId].next = first_free_anode;
1.265 - first_free_anode = aNodeId;
1.266 + aNodes[aid].next = first_free_anode;
1.267 + first_free_anode = aid;
1.268 } else {
1.269 - int bNodeId = node.id >> 1;
1.270 - if (bNodes[bNodeId].prev != -1) {
1.271 - bNodes[bNodes[bNodeId].prev >> 1].next = bNodes[bNodeId].next;
1.272 + int bid = node.id >> 1;
1.273 + if (bNodes[bid].prev != -1) {
1.274 + bNodes[bNodes[bid].prev >> 1].next = bNodes[bid].next;
1.275 } else {
1.276 first_bnode =
1.277 - bNodes[bNodeId].next != -1 ? bNodes[bNodeId].next >> 1 : -1;
1.278 + bNodes[bid].next != -1 ? bNodes[bid].next >> 1 : -1;
1.279 }
1.280 - if (bNodes[bNodeId].next != -1) {
1.281 - bNodes[bNodes[bNodeId].next >> 1].prev = bNodes[bNodeId].prev;
1.282 + if (bNodes[bid].next != -1) {
1.283 + bNodes[bNodes[bid].next >> 1].prev = bNodes[bid].prev;
1.284 }
1.285 - bNodes[bNodeId].next = first_free_bnode;
1.286 - first_free_bnode = bNodeId;
1.287 + bNodes[bid].next = first_free_bnode;
1.288 + first_free_bnode = bid;
1.289 }
1.290 }
1.291
1.292 @@ -2051,16 +2044,15 @@
1.293 snapshot.eraseNode(node);
1.294 }
1.295 virtual void erase(const std::vector<Node>& nodes) {
1.296 - for (int i = 0; i < (int)nodes.size(); ++i) {
1.297 + for (int i = 0; i < int(nodes.size()); ++i) {
1.298 snapshot.eraseNode(nodes[i]);
1.299 }
1.300 }
1.301 virtual void build() {
1.302 - NodeNotifier* _notifier = notifier();
1.303 Node node;
1.304 std::vector<Node> nodes;
1.305 - for (_notifier->first(node); node != INVALID;
1.306 - _notifier->next(node)) {
1.307 + for (notifier()->first(node); node != INVALID;
1.308 + notifier()->next(node)) {
1.309 nodes.push_back(node);
1.310 }
1.311 for (int i = nodes.size() - 1; i >= 0; --i) {
1.312 @@ -2068,10 +2060,9 @@
1.313 }
1.314 }
1.315 virtual void clear() {
1.316 - NodeNotifier* _notifier = notifier();
1.317 Node node;
1.318 - for (_notifier->first(node); node != INVALID;
1.319 - _notifier->next(node)) {
1.320 + for (notifier()->first(node); node != INVALID;
1.321 + notifier()->next(node)) {
1.322 snapshot.eraseNode(node);
1.323 }
1.324 }
1.325 @@ -2103,16 +2094,15 @@
1.326 snapshot.eraseUEdge(edge);
1.327 }
1.328 virtual void erase(const std::vector<UEdge>& edges) {
1.329 - for (int i = 0; i < (int)edges.size(); ++i) {
1.330 + for (int i = 0; i < int(edges.size()); ++i) {
1.331 snapshot.eraseUEdge(edges[i]);
1.332 }
1.333 }
1.334 virtual void build() {
1.335 - UEdgeNotifier* _notifier = notifier();
1.336 UEdge edge;
1.337 std::vector<UEdge> edges;
1.338 - for (_notifier->first(edge); edge != INVALID;
1.339 - _notifier->next(edge)) {
1.340 + for (notifier()->first(edge); edge != INVALID;
1.341 + notifier()->next(edge)) {
1.342 edges.push_back(edge);
1.343 }
1.344 for (int i = edges.size() - 1; i >= 0; --i) {
1.345 @@ -2120,10 +2110,9 @@
1.346 }
1.347 }
1.348 virtual void clear() {
1.349 - UEdgeNotifier* _notifier = notifier();
1.350 UEdge edge;
1.351 - for (_notifier->first(edge); edge != INVALID;
1.352 - _notifier->next(edge)) {
1.353 + for (notifier()->first(edge); edge != INVALID;
1.354 + notifier()->next(edge)) {
1.355 snapshot.eraseUEdge(edge);
1.356 }
1.357 }