00001 00025 #ifndef _PREDICATE_DEPENDENT_ENTITY_H_ 00026 #define _PREDICATE_DEPENDENT_ENTITY_H_ 00027 00028 #include <string> 00029 00030 #include <predicate_manager/dependencies.h> 00031 #include <predicate_manager/common_defs.h> 00032 00033 namespace predicate_manager 00034 { 00039 class PredicateDependentEntity 00040 { 00041 public: 00047 PredicateDependentEntity ( const Dependencies& deps ); 00048 00052 PredicateDependentEntity(); 00053 00059 virtual void update() = 0; 00060 00062 void declareDependency ( const std::string& dep_name, const int pm_id = 0 ); 00064 void declareDependency ( const NameID dep_name_id ); 00065 00072 void bindDependency ( const NameID dep_name_id, const bool* value_ref ); 00073 00075 NameIDSet getDependencies(); 00076 00077 protected: 00085 bool getDependencyValue ( const std::string& dep_name, const int pm_id = 0, DEP_STATUS* status = NULL ); 00086 00087 private: 00088 NameIDSet dep_set_; 00089 PredValueMap dep_value_map_; 00090 }; 00091 } 00092 00093 #endif