$search
00001 #ifndef PROPERTY_SET_H_ 00002 #define PROPERTY_SET_H_ 00003 00004 #include "wire/core/datatypes.h" 00005 #include "wire/core/IStateEstimator.h" 00006 00007 #include "problib/pdfs/PDF.h" 00008 00009 namespace mhf { 00010 00011 class Property; 00012 00013 class PropertySet : public IStateEstimator { 00014 public: 00015 00016 static int N_PROPERTY_SET; 00017 00018 PropertySet(Time timestamp = 0); 00019 00020 PropertySet(const PropertySet& orig); 00021 00022 virtual ~PropertySet(); 00023 00024 PropertySet* clone() const; 00025 00026 void addProperty(const Attribute& attribute, const pbl::PDF& value); 00027 00028 void addProperty(const std::string& attribute, const pbl::PDF& value); 00029 00030 void addProperty(const Attribute& attribute, const IStateEstimator& estimator); 00031 00032 const Property* getProperty(const Attribute& attribute) const; 00033 00034 const Property* getProperty(const std::string& attribute) const; 00035 00036 void propagate(const Time& time); 00037 00038 void update(const pbl::PDF& z, const Time& time); 00039 00040 void reset(); 00041 00042 const pbl::PDF& getValue() const; 00043 00044 virtual double getLikelihood(const PropertySet& P) const; 00045 00046 const std::map<Attribute, Property*>& getPropertyMap() const; 00047 00048 Time getTimestamp() const; 00049 00050 std::string toString() const; 00051 00052 protected: 00053 00054 Time timestamp_; 00055 00056 void addProperty(Property* property); 00057 00058 Property* getProperty(const Attribute& attribute); 00059 00060 private: 00061 00062 std::map<Attribute, Property*> properties_; 00063 00064 }; 00065 00066 } 00067 00068 #endif /* PROPERTY_SET_H_ */