135 |
135 |
136 node_iterator b_node(const out_edge_iterator& e) { return e.b_node(); } |
136 node_iterator b_node(const out_edge_iterator& e) { return e.b_node(); } |
137 node_iterator b_node(const in_edge_iterator& e) { return e.b_node(); } |
137 node_iterator b_node(const in_edge_iterator& e) { return e.b_node(); } |
138 node_iterator b_node(const sym_edge_iterator& e) { return e.b_node(); } |
138 node_iterator b_node(const sym_edge_iterator& e) { return e.b_node(); } |
139 |
139 |
140 node_iterator invalid_node() { return node_iterator(); } |
140 //node_iterator invalid_node() { return node_iterator(); } |
141 edge_iterator invalid_edge() { return edge_iterator(); } |
141 //edge_iterator invalid_edge() { return edge_iterator(); } |
142 out_edge_iterator invalid_out_edge() { return out_edge_iterator(); } |
142 //out_edge_iterator invalid_out_edge() { return out_edge_iterator(); } |
143 in_edge_iterator invalid_in_edge() { return in_edge_iterator(); } |
143 //in_edge_iterator invalid_in_edge() { return in_edge_iterator(); } |
144 sym_edge_iterator invalid_sym_edge() { return sym_edge_iterator(); } |
144 //sym_edge_iterator invalid_sym_edge() { return sym_edge_iterator(); } |
145 |
145 |
146 /* same methods in other style */ |
146 /* same methods in other style */ |
147 /* for experimental purpose */ |
147 /* for experimental purpose */ |
148 |
148 |
149 void get_first(each_node_iterator& v) { v=each_node_iterator(_first_node); } |
149 void get_first(each_node_iterator& v) { v=each_node_iterator(_first_node); } |
164 void get_a_node(node_iterator& n, const in_edge_iterator& e) { n=e.a_node(); } |
164 void get_a_node(node_iterator& n, const in_edge_iterator& e) { n=e.a_node(); } |
165 void get_a_node(node_iterator& n, const sym_edge_iterator& e) { n=e.a_node(); } |
165 void get_a_node(node_iterator& n, const sym_edge_iterator& e) { n=e.a_node(); } |
166 void get_b_node(node_iterator& n, const out_edge_iterator& e) { n=e.b_node(); } |
166 void get_b_node(node_iterator& n, const out_edge_iterator& e) { n=e.b_node(); } |
167 void get_b_node(node_iterator& n, const in_edge_iterator& e) { n=e.b_node(); } |
167 void get_b_node(node_iterator& n, const in_edge_iterator& e) { n=e.b_node(); } |
168 void get_b_node(node_iterator& n, const sym_edge_iterator& e) { n=e.b_node(); } |
168 void get_b_node(node_iterator& n, const sym_edge_iterator& e) { n=e.b_node(); } |
169 void get_invalid(node_iterator& n) { n=node_iterator(); } |
169 //void get_invalid(node_iterator& n) { n=node_iterator(); } |
170 void get_invalid(edge_iterator& e) { e=edge_iterator(); } |
170 //void get_invalid(edge_iterator& e) { e=edge_iterator(); } |
171 void get_invalid(out_edge_iterator& e) { e=out_edge_iterator(); } |
171 //void get_invalid(out_edge_iterator& e) { e=out_edge_iterator(); } |
172 void get_invalid(in_edge_iterator& e) { e=in_edge_iterator(); } |
172 //void get_invalid(in_edge_iterator& e) { e=in_edge_iterator(); } |
173 void get_invalid(sym_edge_iterator& e) { e=sym_edge_iterator(); } |
173 //void get_invalid(sym_edge_iterator& e) { e=sym_edge_iterator(); } |
174 |
174 |
175 |
175 |
176 /* for getting id's of graph objects */ |
176 /* for getting id's of graph objects */ |
177 /* these are important for the implementation of property vectors */ |
177 /* these are important for the implementation of property vectors */ |
178 |
178 |
208 friend int list_graph::id(const node_iterator& v); |
208 friend int list_graph::id(const node_iterator& v); |
209 public: |
209 public: |
210 node_iterator() : node(0) { } |
210 node_iterator() : node(0) { } |
211 node_iterator(node_item* _node) : node(_node) { } |
211 node_iterator(node_item* _node) : node(_node) { } |
212 bool is_valid() { return (node!=0); } |
212 bool is_valid() { return (node!=0); } |
|
213 void make_invalid() { node=0; } |
213 friend bool operator==(const node_iterator& u, const node_iterator& v) { |
214 friend bool operator==(const node_iterator& u, const node_iterator& v) { |
214 return v.node==u.node; |
215 return v.node==u.node; |
215 } |
216 } |
216 friend bool operator!=(const node_iterator& u, const node_iterator& v) { |
217 friend bool operator!=(const node_iterator& u, const node_iterator& v) { |
217 return v.node!=u.node; |
218 return v.node!=u.node; |
237 friend int list_graph::id(const edge_iterator& e); |
238 friend int list_graph::id(const edge_iterator& e); |
238 public: |
239 public: |
239 edge_iterator() : edge(0) { } |
240 edge_iterator() : edge(0) { } |
240 edge_iterator(edge_item* _edge) : edge(_edge) { } |
241 edge_iterator(edge_item* _edge) : edge(_edge) { } |
241 bool is_valid() { return (edge!=0); } |
242 bool is_valid() { return (edge!=0); } |
|
243 void make_invalid() { edge=0; } |
242 friend bool operator==(const edge_iterator& u, const edge_iterator& v) { |
244 friend bool operator==(const edge_iterator& u, const edge_iterator& v) { |
243 return v.edge==u.edge; |
245 return v.edge==u.edge; |
244 } |
246 } |
245 friend bool operator!=(const edge_iterator& u, const edge_iterator& v) { |
247 friend bool operator!=(const edge_iterator& u, const edge_iterator& v) { |
246 return v.edge!=u.edge; |
248 return v.edge!=u.edge; |