00001 00011 #ifndef SPATIAL_TEMPORAL_LEARNING_WORLDLIB_MODEL_TASK_MODEL_H_ 00012 #define SPATIAL_TEMPORAL_LEARNING_WORLDLIB_MODEL_TASK_MODEL_H_ 00013 00014 // worldlib 00015 #include "PlacementModel.h" 00016 00017 // C++ Standard Library 00018 #include <stdint.h> 00019 #include <string> 00020 #include <vector> 00021 00022 namespace rail 00023 { 00024 namespace spatial_temporal_learning 00025 { 00026 namespace worldlib 00027 { 00028 namespace model 00029 { 00030 00037 class TaskModel 00038 { 00039 public: 00048 TaskModel(const uint32_t task_id = 0, const std::string &name = ""); 00049 00057 uint32_t getTaskID(); 00058 00066 void setTaskID(const uint32_t task_id); 00067 00075 const std::string &getName() const; 00076 00084 void setName(const std::string &name); 00085 00093 const std::vector<PlacementModel> &getPlacementModels() const; 00094 00102 std::vector<PlacementModel> &getPlacementModels(); 00103 00111 size_t getNumPlacementModels() const; 00112 00122 const PlacementModel &getPlacementModel(const size_t index) const; 00123 00133 PlacementModel &getPlacementModel(const size_t index); 00134 00142 void addPlacementModel(const PlacementModel &placement_model); 00143 00152 void removePlacementModel(const size_t index); 00153 00162 void getUniqueItems(std::vector<world::Item> &items) const; 00163 00172 void getUniqueSurfaces(std::vector<world::Surface> &surfaces) const; 00173 00174 private: 00176 uint32_t task_id_; 00178 std::string name_; 00179 /* The associated placement models */ 00180 std::vector<PlacementModel> placement_models_; 00181 }; 00182 00183 } 00184 } 00185 } 00186 } 00187 00188 #endif