00001 // vim:sw=2:ts=8 00017 #ifndef OBS_GRAPH__HPP 00018 #define OBS_GRAPH__HPP 00019 00020 #include "Graph.hpp" 00021 #include "Subject.hpp" 00022 00023 00024 namespace gns { 00025 00026 00039 class ObservableGraph : public Graph, public Subject 00040 { 00041 public: 00043 ObservableGraph(); 00045 ObservableGraph(PropertyFacility *p); 00047 ObservableGraph(const ObservableGraph &g); 00048 00050 virtual ~ObservableGraph(); 00051 00052 using Graph::node_id; 00053 using Graph::edge_id; 00054 00056 virtual void node_id(Node n, const NodeID id); 00057 00059 virtual void edge_id(Edge e, const EdgeID id); 00060 00062 virtual Node new_node(NodeID id = ""); 00063 00065 virtual void del_node(Node n); 00066 00068 virtual Edge new_edge(Node u, Node v, EdgeID id = ""); 00069 00071 virtual void del_edge(Edge e); 00072 00074 virtual void del_edge(Node u, Node v); 00075 00077 virtual void add_nodes(int num, int start); 00078 00079 }; 00080 00081 } 00082 00083 #endif