src/work/list_graph.hh
changeset 69 24c2c2989e0f
parent 67 5f86199dcf3e
child 75 87623302a68f
     1.1 --- a/src/work/list_graph.hh	Fri Feb 06 15:55:06 2004 +0000
     1.2 +++ b/src/work/list_graph.hh	Mon Feb 09 13:11:10 2004 +0000
     1.3 @@ -26,36 +26,44 @@
     1.4      class OutEdgeIt;
     1.5      class InEdgeIt;
     1.6      class SymEdgeIt;
     1.7 -    template <typename ValueType> class NodeMap;
     1.8 -    template <typename ValueType> class EdgeMap;
     1.9 +    template <typename T> class NodeMap;
    1.10 +    template <typename T> class EdgeMap;
    1.11      
    1.12    private:
    1.13      
    1.14 -    template <typename ValueType> friend class NodeMap;
    1.15 -    template <typename ValueType> friend class EdgeMap;
    1.16 +    template <typename T> friend class NodeMap;
    1.17 +    template <typename T> friend class EdgeMap;
    1.18  
    1.19 -    template <typename ValueType>
    1.20 +    template <typename T>
    1.21      class NodeMap {
    1.22        const ListGraph& G; 
    1.23 -      std::vector<ValueType> container;
    1.24 +      std::vector<T> container;
    1.25      public:
    1.26 -      NodeMap(const ListGraph& _G) : G(_G), container(_G.node_id) { }
    1.27 -      NodeMap(const ListGraph& _G, ValueType a) : 
    1.28 -	G(_G), container(_G.node_id, a) { }
    1.29 -      void set(NodeIt nit, ValueType a) { container[G.id(nit)]=a; }
    1.30 -      ValueType get(NodeIt nit) const { return container[G.id(nit)]; }
    1.31 +      typedef T ValueType;
    1.32 +      typedef NodeIt KeyType;
    1.33 +      NodeMap(const ListGraph& _G) : G(_G), container(G.node_id) { }
    1.34 +      NodeMap(const ListGraph& _G, T a) : 
    1.35 +	G(_G), container(G.node_id, a) { }
    1.36 +      void set(NodeIt nit, T a) { container[G.id(nit)]=a; }
    1.37 +      T get(NodeIt nit) const { return container[G.id(nit)]; }
    1.38 +      void resize() { container.resize(G.node_id); }
    1.39 +      void resize(T a) { container.resize(G.node_id, a); }
    1.40      };
    1.41  
    1.42 -    template <typename ValueType>
    1.43 +    template <typename T>
    1.44      class EdgeMap {
    1.45        const ListGraph& G; 
    1.46 -      std::vector<ValueType> container;
    1.47 +      std::vector<T> container;
    1.48      public:
    1.49 -      EdgeMap(const ListGraph& _G) : G(_G), container(_G.edge_id) { }
    1.50 -      EdgeMap(const ListGraph& _G, ValueType a) : 
    1.51 -	G(_G), container(_G.edge_id, a) { }
    1.52 -      void set(EdgeIt eit, ValueType a) { container[G.id(eit)]=a; }
    1.53 -      ValueType get(EdgeIt eit) const { return container[G.id(eit)]; }
    1.54 +      typedef T ValueType;
    1.55 +      typedef EdgeIt KeyType;
    1.56 +      EdgeMap(const ListGraph& _G) : G(_G), container(G.edge_id) { }
    1.57 +      EdgeMap(const ListGraph& _G, T a) : 
    1.58 +	G(_G), container(G.edge_id, a) { }
    1.59 +      void set(EdgeIt eit, T a) { container[G.id(eit)]=a; }
    1.60 +      T get(EdgeIt eit) const { return container[G.id(eit)]; }
    1.61 +      void resize() { container.resize(G.edge_id); }
    1.62 +      void resize(T a) { container.resize(G.edge_id, a); }
    1.63      };
    1.64  
    1.65      int node_id;
    1.66 @@ -301,6 +309,10 @@
    1.67    
    1.68      void erase(EdgeIt e) { _delete_edge(e.edge); }
    1.69  
    1.70 +    void clear() { 
    1.71 +      while (first<EachNodeIt>().valid()) erase(first<EachNodeIt>());
    1.72 +    }
    1.73 +
    1.74      void setTail(EdgeIt e, NodeIt tail) {
    1.75        _set_tail(e.edge, tail.node); 
    1.76      }