00001
00002
00003 #ifndef _SPAF_GRAPH_GRAPH_HPP_
00004 #define _SPAF_GRAPH_GRAPH_HPP_
00005
00006 #include <string>
00007 #include <list>
00008
00009 #include "spafgraph/Node.hpp"
00010
00011 namespace jafar {
00012 namespace spafgraph {
00017 class Graph : public Node {
00018 public:
00019 Graph();
00020 ~Graph();
00021 public:
00025 std::string toDot() const;
00032 Node* createNode( spaf::Feature* feature, Node* parent );
00036 const std::list<Node*>& nodes() const;
00040 Node* nodeFor( const spaf::Feature* feature );
00044 void removeNode( Node* n );
00045 private:
00049 void appendNode( Node* n );
00050 std::string edgeToDot( const Edge* edge) const;
00051 std::string nodeToDot( const Node* node) const;
00052 private:
00053 struct Private;
00054 Private* const d;
00055 };
00056 }
00057 }
00058
00059 #endif