All possible inteface members and operations on OGL graphs // type definitions typedef _ vertex_label; typedef _ vertex_descriptor; typedef _ edge_label; typedef _ edge_descriptor; typedef _ size_type; typedef _ graph_label; typedef _ vertex_range; typedef _ edge_range; typedef _ out_edge_range; typedef _ in_edge_range typedef _ incident_edge_range; typedef _ graph_catagory //? // object creation/destruction construct(...) copy(...) destruct(...) // graph properties size_type order() const; bool null() const; size_type size() const; bool empty() const; vertex_label& label(vertex_descriptor v); vertex_label const& label(vertex_descriptor v) const; edge_label& label(edge_descriptor e); edge_label const& label(edge_descriptor e) const; vertex_label& operator[](vertex_descriptor v); vertex_label const& operator[](vertex_descriptor v) const; edge_label& operator[](edge_descriptor e); edge_label const& operator[](edge_descriptor e) const; graph_label& operator*(); graph_label const& operator*() const; graph_label* operator->(); graph_label const* operator->() const; // graph ranges vertex_range vertices() const; edge_range edges() const; out_edge_range out_edges(vertex_descriptor v) const; in_edge_range in_edges(vertex_descriptor v) const; incident_edge_range incident_edges(vertex_descriptor v) const; // Graph (data structure) operations void swap(Graph & g); void clear(); // Does this clear edges, vertices, or both? // Vertex operations vertex_descriptor add_vertex(); vertex_descriptor add_vertex(vertex_label const& x); void remove_vertex(vertex_descriptor v); size_type out_degree(vertex_descriptor v) const; size_type in_degree(vertex_descriptor v) const; size_type degree(vertex_descriptor v) const; // Edge operations edge_descriptor add_edge(vertex_descriptor u, vertex_descriptor v); edge_descriptor add_edge(vertex_descriptor u, vertex_descriptor v, edge_label const& x); void remove_edge(edge_descriptor e); void remove_edges(vertex_descriptor u, vertex_descriptor v); void remove_edges(vertex_descriptor v) void remove_edges(); edge_descriptor edge(vertex_descriptor u, vertex_descriptor v) const; vertex_descriptor source(edge_descriptor e) const; vertex_descriptor target(edge_descriptor e) const; // Graph free operations incident_edges