lemon/list_graph.h
changeset 2386 81b47fc5c444
parent 2381 0248790c66ea
child 2391 14a343be7a5a
     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          }