COIN-OR::LEMON - Graph Library

Changeset 378:c3f93631cd24 in lemon-0.x for src


Ignore:
Timestamp:
04/22/04 22:36:21 (21 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@508
Message:
 
Location:
src/work/deba
Files:
4 added
5 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • src/work/deba/test_graph.h

    r377 r378  
    88#include "invalid.h"
    99
    10 #include "edge_map_registry.h"
    11 #include "node_map_registry.h"
    12 #include "edge_map_base.h"
    13 #include "node_map_base.h"
    1410#include "vector_map.h"
    1511
     
    4339  private:
    4440
    45                 NodeMapRegistry<ListGraph, Node> node_maps(*this);
    46                 EdgeMapRegistry<ListGraph, Edge> edge_maps(*this);
     41                typedef MapRegistry<ListGraph, Node, NodeIt> NodeMapRegistry;
     42                NodeMapRegistry node_maps;
     43               
     44                typedef MapRegistry<ListGraph, Edge, EdgeIt> EdgeMapRegistry;
     45                EdgeMapRegistry edge_maps;
    4746 
    4847        public:
     
    5049
    5150    template <typename T>
    52     class NodeMap : public VectorMap<ListGraph, Node, T, NodeMapBase> {
     51    class NodeMap : public VectorMap<ListGraph, Node, NodeIt, T> {
    5352                public:
    54                         NodeMap(ListGraph& g) : VectorMap<ListGraph, Node, T, NodeMapBase>(g) {}
     53                        NodeMap(ListGraph& g) : VectorMap<ListGraph, Node, NodeIt, T>(g.node_maps) {}
    5554                };
    5655               
    57                 EdgeMapRegistry<ListGraph, Edge> edge_maps;
    58 
    5956    template <typename T>
    60     class EdgeMap : public VectorMap<ListGraph, Edge, T, EdgeMapBase> {};
     57    class EdgeMap : public VectorMap<ListGraph, Edge, EdgeIt, T> {
     58                public:
     59                        EdgeMap(ListGraph& g) : VectorMap<ListGraph, Edge, EdgeIt, T>(g.edge_maps) {}
     60                };
    6161
    6262
     
    216216    /* default constructor */
    217217
    218     ListGraph() : node_id(0), edge_id(0), _node_num(0), _edge_num(0), _first_node(0), _last_node(0) { }
     218    ListGraph() : node_id(0), edge_id(0), _node_num(0), _edge_num(0), _first_node(0), _last_node(0),
     219                        edge_maps(*this), node_maps(*this) { }
    219220   
    220221    ~ListGraph() {
  • src/work/deba/vector_map.h

    r377 r378  
    33
    44#include <vector>
     5#include <iostream>
    56
    6 template <typename G, typename K, typename V, template <typename, typename> class MapBase >
    7 class VectorMap : public MapBase<G, K> {
    8 public:
    9         typedef V ValueType;
     7#include "map_base.h"
     8
     9namespace hugo {
     10
     11        template <typename G, typename K, typename KIt, typename V>
     12        class VectorMap : public MapBase<G, K, KIt> {
     13        public:
     14                typedef V ValueType;
    1015       
    11         VectorMap() {}
    12         VectorMap(G& g) : MapBase<G, K>(g) {
    13                 init();
    14         }
     16                VectorMap() {}
     17                VectorMap(typename MapBase<G, K, KIt>::Registry& r) : MapBase<G, K, KIt>(r) {}
    1518       
    16         ~VectorMap() {
    17 //              destroy();
    18         }
    1919       
    20         ValueType& operator[](const K& key) {
    21                 return container[key->id];
    22         }
     20                ValueType& operator[](const K& key) {
     21                        int id = registry->getGraph().id(key);
     22                        return container[id];
     23                }
    2324       
    24         const ValueType& operator[](const K& key) const {
    25                 return container[key->id];
    26         }
     25                const ValueType& operator[](const K& key) const {
     26                        int id = registry->getGraph().id(key);
     27                        return container[id];
     28                }
    2729       
    28         const ValueType& get(const K& key) const {
    29                 return container[key->id];
    30         }
     30                const ValueType& get(const K& key) const {
     31                        int id = registry->getGraph().id(key);
     32                        return container[id];
     33                }
    3134       
    32         void set(const K& key, const ValueType& val) {
    33                 container[key->id] = val;
    34         }
     35                void set(const K& key, const ValueType& val) {
     36                        int id = registry->getGraph().id(key);
     37                        container[id] = val;
     38                }
    3539       
    36         void add(const K& key) {
    37                 if (key->id() >= container.size()) {
    38                         container.resize(key->id() + 1);
     40                void add(const K& key) {
     41                        int id = registry->getGraph().id(key);
     42                        std::cerr << id << std::endl;
     43                        if (id >= container.size()) {
     44                                container.resize(id + 1);
     45                        }
    3946                }
    40         }
    4147       
    42         void erase(const K& key) {}
     48                void erase(const K& key) {}
    4349
    44 private:
    45         typedef std::vector<ValueType> Container;
     50        private:
     51                typedef std::vector<ValueType> Container;
    4652       
    47         Container container;
    48 };
     53                Container container;
     54        };
     55
     56}
    4957
    5058#endif
Note: See TracChangeset for help on using the changeset viewer.