// file : CCF/IDL2/SemanticGraph/Graph.hpp // author : Boris Kolpackov // cvs-id : $Id$ #ifndef ELEMENT_GRAPH_HPP #define ELEMENT_GRAPH_HPP #include #include #include #include #include #include namespace CCF { namespace IDL2 { namespace SemanticGraph { template class Graph { public: ~Graph (); public: template T& new_node (); template T& new_node (A0 const& a0); template T& new_node (A0 const& a0, A1 const& a1); template T& new_node (A0 const& a0, A1 const& a1, A2 const& a2); template T& new_node (A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3); void delete_node (N const& n); public: template T& new_edge (X& left, Y& right); template T& new_edge (X& left, Y& right, A0 const& a0); template T& new_edge (X& left, Y& right, A0 const& a0, A1 const& a1); void delete_edge (E const& e); protected: typedef N* NodePtr; typedef E* EdgePtr; typedef std::set Nodes_; typedef std::set Edges_; Nodes_ nodes_; Edges_ edges_; }; } } } #include "Graph.tpp" #endif // ELEMENT_GRAPH_HPP