src/work/marci_list_graph.hh
changeset 16 dd19ef4d7ba4
parent 13 d33813af6e50
child 19 3151a1026db9
equal deleted inserted replaced
1:7d7b35a16708 2:da82aab642d2
   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;