COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/alpar/emptygraph.h @ 57:b180c196b4b7

Last change on this file since 57:b180c196b4b7 was 57:b180c196b4b7, checked in by Alpar Juttner, 18 years ago

To make clear, clean() became clear().

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 value_type;
62    void set(const NodeIt i, const T &t);
63    T get(const NodeIt i) const;
64    T &operator[](const NodeIt i);
65     
66    NodeMap(const Graph &G);
67  };
68
69  template<class T> class EdgeMap
70  {
71  public:
72    typedef T value_type;
73    void set(const EdgeIt i, const T &t);
74    T get(const EdgeIt i) const;
75    T &operator[](const EdgeIt i);
76     
77    EdgeMap(const Graph &G);
78  };
79};
Note: See TracBrowser for help on using the repository browser.