COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/alpar/emptygraph.h @ 61:30e734e6adff

Last change on this file since 61:30e734e6adff was 61:30e734e6adff, checked in by Alpar Juttner, 20 years ago

ValueType/KeyType? is NodeMap/EdgeMap?

File size: 1.9 KB
Line 
1// -*-mode: c++; -*-
2
3class Graph
4{
5public:
6  class EdgeIt {};
7 
8  class InEdgeIt : public EdgeIt
9  class OutEdgeIt : public EdgeIt {};
10  class SymEdgeIt : public EdgeIt {};
11  class EachEdgeIt : public EdgeIt {};
12
13  class NodeIt {};
14   
15  NodeIt &getFirst(NodeIt &) const;
16  InEdgeIt &getFirst(InEdgeIt &,const NodeIt) const;
17  OutEdgeIt &getFirst(OutEdgeIt &,const NodeIt) const;
18  SymEdgeIt &getFirst(SymEdgeIt &,const NodeIt) const;
19  EachEdgeIt &getFirst(EachEdgeIt &) const;
20
21  NodeIt next(const NodeIt) const;
22  InEdgeIt next(const InEdgeIt) const;
23  OutEdgeIt next(const OutEdgeIt) const;
24  SymEdgeIt next(const SymEdgeIt) const;
25  EachEdgeIt next(const EachEdgeIt) const;
26
27  NodeIt &goNext(NodeIt &) const;
28  InEdgeIt &goNext(InEdgeIt &) const;
29  OutEdgeIt &goNext(OutEdgeIt &) const;
30  SymEdgeIt &goNext(SymEdgeIt &) const;
31  EachEdgeIt &goNext(EachEdgeIt &) const;
32
33  NodeIt head(const EdgeIt) const;
34  NodeIt tail(const EdgeIt) const;
35 
36  NodeIt aNode(const InEdgeIt) const;
37  NodeIt aNode(const OutEdgeIt) const;
38  NodeIt aNode(const SymEdgeIt) const;
39
40  NodeIt bNode(const InEdgeIt) const;
41  NodeIt bNode(const OutEdgeIt) const;
42  NodeIt bNode(const SymEdgeIt) const;
43
44  bool valid(const NodeIt) const;
45  bool valid(const EdgeIt) const;
46
47  void setInvalid(NodeIt &) const;
48  void setInvalid(EdgeIt &) const;
49 
50  NodeIt addNode();
51  EdgeIt addEdge(const NodeIt from,const NodeIt to);
52   
53  void delete(NodeIt n);
54  void delete(EdgeIt e);
55
56  void clear();
57
58  template<class T> class NodeMap
59  {
60  public:
61    typedef T ValueType;
62    typedef NodeIt KeyType;
63    void set(const NodeIt i, const T &t);
64    T get(const NodeIt i) const;
65    T &operator[](const NodeIt i);
66     
67    NodeMap(const Graph &G);
68  };
69
70  template<class T> class EdgeMap
71  {
72  public:
73    typedef T ValueType;
74    typedef EdgeIt KeyType;
75    void set(const EdgeIt i, const T &t);
76    T get(const EdgeIt i) const;
77    T &operator[](const EdgeIt i);
78     
79    EdgeMap(const Graph &G);
80  };
81};
Note: See TracBrowser for help on using the repository browser.