Listing 1: Key elements of DiscoverVertex

struct DiscoverVertex : public base_visitor<DiscoverVertex> {
  typedef on_discover_vertex event_filter;
  template <class Vertex, class Graph>
  void operator()(Vertex mVertex, Graph& mGraph) 
  {
    // ....
    if(out_degree(mVertex,mGraph) != 2)
    {
      graph_traits<ShapeStructureGraph>::vertex_descriptor sVertex;
      sVertex = boost::add_vertex(*sGraph_);
    // ...
    }
  };

//...
dfs_visitor<pair<DiscoverVertex,null_visitor> > vis =
  std::make_pair(DiscoverVertex(/* ... */), null_visitor());

— End of Listing —