equal
deleted
inserted
replaced
94 |
94 |
95 |
95 |
96 Node tail(Edge e) const { return edges[e.n].tail; } |
96 Node tail(Edge e) const { return edges[e.n].tail; } |
97 Node head(Edge e) const { return edges[e.n].head; } |
97 Node head(Edge e) const { return edges[e.n].head; } |
98 |
98 |
99 // Node aNode(const OutEdgeIt& e) const { return tail(e); } |
99 // Marci |
100 // Node aNode(const InEdgeIt& e) const { return head(e); } |
100 Node aNode(OutEdgeIt e) const { return edges[e.n].tail; } |
|
101 Node aNode(InEdgeIt e) const { return edges[e.n].head; } |
101 // //Node aNode(const SymEdge& e) const { return e.aNode(); } |
102 // //Node aNode(const SymEdge& e) const { return e.aNode(); } |
102 |
103 |
103 // Node bNode(const OutEdgeIt& e) const { return head(e); } |
104 // Marci |
104 // Node bNode(const InEdgeIt& e) const { return tail(e); } |
105 Node bNode(OutEdgeIt e) const { return edges[e.n].head; } |
|
106 Node bNode(InEdgeIt e) const { return edges[e.n].tail; } |
105 // //Node bNode(const SymEdge& e) const { return e.bNode(); } |
107 // //Node bNode(const SymEdge& e) const { return e.bNode(); } |
106 |
108 |
107 NodeIt& first(NodeIt& v) const { |
109 NodeIt& first(NodeIt& v) const { |
108 v=NodeIt(*this); return v; } |
110 v=NodeIt(*this); return v; } |
109 EdgeIt& first(EdgeIt& e) const { |
111 EdgeIt& first(EdgeIt& e) const { |
114 e=InEdgeIt(*this,v); return e; } |
116 e=InEdgeIt(*this,v); return e; } |
115 |
117 |
116 template< typename It > |
118 template< typename It > |
117 It first() const { |
119 It first() const { |
118 It e; |
120 It e; |
119 getFirst(e); |
121 //Marci |
|
122 /*getF*/first(e); |
120 return e; |
123 return e; |
121 } |
124 } |
122 |
125 |
123 template< typename It > |
126 template< typename It > |
124 It first(Node v) const { |
127 It first(Node v) const { |
125 It e; |
128 It e; |
126 getFirst(e, v); |
129 //Marci |
|
130 /*getF*/first(e, v); |
127 return e; |
131 return e; |
128 } |
132 } |
129 |
133 |
130 bool valid(Edge e) const { return e.n!=-1; } |
134 bool valid(Edge e) const { return e.n!=-1; } |
131 // bool valid(EdgeIt e) const { return e.n<int(edges.size()); } |
135 // bool valid(EdgeIt e) const { return e.n<int(edges.size()); } |
136 |
140 |
137 template <typename It> It getNext(It it) const |
141 template <typename It> It getNext(It it) const |
138 { It tmp(it); return next(tmp); } |
142 { It tmp(it); return next(tmp); } |
139 //{ It tmp; tmp.n=it.n+1; return tmp; } |
143 //{ It tmp; tmp.n=it.n+1; return tmp; } |
140 |
144 |
141 Node& next(Node& it) const { it.n=(it.n+2)%nodes.size()-1; return it; } |
145 //FIXME correction Marci: I changed to NodeIt from Node |
|
146 //NodeIt& next(NodeIt& it) const { it.n=(it.n+2)%nodes.size()-1; return it; } |
|
147 NodeIt& next(NodeIt& it) const { |
|
148 it.n=(it.n+2)%(nodes.size()+1)-1; |
|
149 return it; |
|
150 } |
142 OutEdgeIt& next(OutEdgeIt& it) const |
151 OutEdgeIt& next(OutEdgeIt& it) const |
143 { it.n=edges[it.n].next_out; return it; } |
152 { it.n=edges[it.n].next_out; return it; } |
144 InEdgeIt& next(InEdgeIt& it) const |
153 InEdgeIt& next(InEdgeIt& it) const |
145 { it.n=edges[it.n].next_in; return it; } |
154 { it.n=edges[it.n].next_in; return it; } |
146 EdgeIt& next(EdgeIt& it) const { --it.n; return it; } |
155 EdgeIt& next(EdgeIt& it) const { --it.n; return it; } |
214 friend int SmartGraph::id(Edge e) const; |
223 friend int SmartGraph::id(Edge e) const; |
215 |
224 |
216 Edge(int nn) {n=nn;} |
225 Edge(int nn) {n=nn;} |
217 public: |
226 public: |
218 Edge() { } |
227 Edge() { } |
219 Edge (Invalid i) { n=-1; } |
228 // Marci: kiszedtem az Invalid i-bol az i-t |
|
229 Edge (Invalid) { n=-1; } |
220 bool operator==(const Edge i) const {return n==i.n;} |
230 bool operator==(const Edge i) const {return n==i.n;} |
221 bool operator!=(const Edge i) const {return n!=i.n;} |
231 bool operator!=(const Edge i) const {return n!=i.n;} |
222 bool operator<(const Edge i) const {return n<i.n;} |
232 bool operator<(const Edge i) const {return n<i.n;} |
223 }; |
233 }; |
224 |
234 |