1 | // -*-mode: c++; -*- |
---|

2 | |
---|

3 | class Graph |
---|

4 | { |
---|

5 | public: |
---|

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 | }; |
---|