Go to the documentation of this file.00001
00009 #ifndef DATAMANAGERABSTRACT_HPP_
00010 #define DATAMANAGERABSTRACT_HPP_
00011
00012 #include "rtslam/parents.hpp"
00013 #include "rtslam/sensorAbstract.hpp"
00014 #include "rtslam/mapManager.hpp"
00015
00016 namespace jafar {
00017 namespace rtslam {
00018
00019 class ObservationAbstract;
00020
00024 class DataManagerAbstract
00025 : public ParentOf<ObservationAbstract>
00026 , public ChildOf<SensorExteroAbstract>
00027 , public ChildOf<MapManagerAbstract>
00028 , public boost::enable_shared_from_this<DataManagerAbstract>
00029 , public kernel::DataLoggable
00030 {
00031 public:
00032
00033 ENABLE_LINK_TO_PARENT(SensorExteroAbstract,Sensor,DataManagerAbstract);
00034
00035 ENABLE_ACCESS_TO_PARENT(SensorExteroAbstract,sensor);
00036
00037 ENABLE_LINK_TO_PARENT(MapManagerAbstract,MapManager,DataManagerAbstract);
00038
00039 ENABLE_ACCESS_TO_PARENT(MapManagerAbstract,mapManager);
00040
00041 ENABLE_ACCESS_TO_CHILDREN(ObservationAbstract,Observation,observation);
00042
00043 protected:
00044 boost::shared_ptr<ObservationFactory> obsFactory;
00045 public:
00046 void setObservationFactory( boost::shared_ptr<ObservationFactory> of ) { obsFactory=of; }
00047 boost::shared_ptr<ObservationFactory> observationFactory( void ) { return obsFactory; }
00048
00049 public:
00050 virtual ~DataManagerAbstract(void) {}
00051
00052 virtual void processKnown(raw_ptr_t data, double date_limit = -1.) = 0;
00053 virtual void detectNew(raw_ptr_t data) = 0;
00054
00055 virtual void dump(raw_ptr_t data) = 0;
00056
00057 };
00058
00059 }
00060 }
00061 #endif