Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #pragma once
00019
00020 #ifndef __OpenKarto_SensorRegistry_h__
00021 #define __OpenKarto_SensorRegistry_h__
00022
00023 #include <OpenKarto/Referenced.h>
00024 #include <OpenKarto/Identifier.h>
00025
00026 namespace karto
00027 {
00028
00030
00031
00035 class Sensor;
00036
00037 struct SensorRegistryPrivate;
00038
00043 class KARTO_EXPORT SensorRegistry : public Referenced
00044 {
00045 friend class Sensor;
00046
00047 public:
00051 SensorRegistry();
00052
00056 virtual ~SensorRegistry();
00057
00058 public:
00062 static SensorRegistry* GetInstance();
00063
00064 public:
00070 Sensor* GetSensorByName(const Identifier& rName);
00071
00077 template<class C>
00078 C* GetSensorByName(const Identifier& rName)
00079 {
00080 Sensor* pSensor = GetSensorByName(rName);
00081
00082 return dynamic_cast<C*>(pSensor);
00083 }
00084
00089 static void Validate(Sensor* pSensor);
00090
00094 void Clear();
00095
00096 private:
00102 void RegisterSensor(Sensor* pSensor);
00103
00108 void UnregisterSensor(Sensor* pSensor);
00109
00110 private:
00111 SensorRegistryPrivate* m_pSensorRegistryPrivate;
00112 };
00113
00115
00116 }
00117
00118 #endif // __OpenKarto_SensorRegistry_h__