00001 #ifndef GRAPHMANAGERABSTRACT_HPP
00002 #define GRAPHMANAGERABSTRACT_HPP
00003
00004 #include <boost/graph/adjacency_list.hpp>
00005
00006 #include <kernel/IdFactory.hpp>
00007
00008 #include <graphmap/transformation.hpp>
00009 #include <graphmap/graphProperties.hpp>
00010
00011 namespace jafar{
00012 namespace graphmap{
00013
00014 class GraphManagerAbstract
00015 {
00016 public:
00017 typedef boost::adjacency_list<boost::setS, boost::vecS, boost::bidirectionalS, Vertex_Properties, Edge_Properties, Graph_Properties> Graph;
00018 typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
00019 typedef typename boost::graph_traits<Graph>::edge_descriptor edge_descriptor;
00020
00021 typedef kernel::IdFactory<MapId, kernel::IdCollectorNone> IdFactory;
00022
00023 GraphManagerAbstract(RobotId robotId);
00024 virtual ~GraphManagerAbstract() {}
00025
00026 virtual bool addNewEdge(RobotId from_robot, MapId from_map,
00027 RobotId to_robot, MapId to_map,
00028 Transformation t) = 0;
00029
00035 vertex_descriptor getVertexDesc(const RobotId &rob_id, const MapId &map_id);
00036
00039 vertex_descriptor getVertexDesc(const MapId &map_id);
00040
00043 vertex_descriptor getVertexDesc(const Vertex &v_id);
00044
00048 Vertex getVertex(const vertex_descriptor &desc);
00049
00050 static IdFactory mapIds;
00051 vertex_descriptor _origin_vertex;
00052 vertex_descriptor _current_vertex;
00053 RobotId _robot_id;
00054 std::map<Vertex,vertex_descriptor> _vertex_map;
00055 Graph _graph;
00056 Transformation _robot_current_pose;
00057
00058 };
00059
00060 }
00061 }
00062
00063 #endif // GRAPHMANAGERABSTRACT_HPP