| 
 |  | 
Edge traversal support works in precisely the same way as for Vertices. (See the section, ``Vertex Traversal Support''). All of the member and non-member functions described for Vertices are defined in versions for Edge. The functions below are the non-Ticket versions which change the mark value,
       int set_visited();
           // sets the visited mark at this Edge to 1
       int reset_visited();
           // resets the visited mark at this Edge to 0
       int set_val(int value);
           // sets the val mark at this Edge to the
           // given value
the non-Ticket versions which test the values of the marks,
       int visited();
           // tests whether this Edge has been visited
           // (initially 0)
       int val();
           // returns the val mark associated with this
           // Edge (initially 0)
and the non-member functions which assist in zeroing out marked Edges,
       void reset_visited(Set_of_p<Edge>& eset);
       void reset_val(Set_of_p<Edge>& eset);
The Ticket versions of these functions are also defined. Note that two new Tickets, Vis_e_ticket and Val_e_ticket, which are similar to the Vertex versions but specific to Edges, are required:
   int set_visited(const Vis_e_ticket& vis_e_t);
   int reset_visited(const Vis_e_ticket& vis_e_t);
   int visited(const Vis_e_ticket& vis_e_t);
   int set_val(const Val_e_ticket& val_e_t, int value);
   int val(const Val_e_ticket& val_e_t);
   reset_visited(const Vis_e_ticket& vis_e_t,
       Set_of_p<Edge>& eset);
   reset_val(const Val_e_ticket& val_e_t,
       Set_of_p<Edge>& eset);
A Vis_e_ticketand Val_e_ticketare obtained in a manner similar to that for Vertices:
Vis_e_ticket vis_e_t = Edge::get_vis_e_ticket(); Val_e_ticket val_e_t = Edge::get_val_e_ticket();
and are freed similarly:
Edge::free_vis_e_ticket(Vis_e_ticket& vis_e_t); Edge::free_val_e_ticket(Val_e_ticket& val_e_t);