ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
00001 00007 #ifndef MEDIUM_H 00008 #define MEDIUM_H 00009 00010 namespace argos { 00011 class CMedium; 00012 } 00013 00014 #include <argos3/core/utility/configuration/base_configurable_resource.h> 00015 #include <argos3/core/utility/configuration/argos_configuration.h> 00016 #include <argos3/core/utility/datatypes/datatypes.h> 00017 #include <argos3/core/utility/plugins/factory.h> 00018 00019 namespace argos { 00020 00021 class CMedium : public CBaseConfigurableResource { 00022 00023 public: 00024 00025 typedef std::vector<CMedium*> TVector; 00026 typedef std::map<std::string, CMedium*> TMap; 00027 00028 public: 00029 00030 CMedium() {} 00031 virtual ~CMedium() {} 00032 00047 virtual void Init(TConfigurationNode& t_tree); 00048 virtual void Reset() {} 00049 virtual void Destroy() {} 00050 00064 virtual void PostSpaceInit() {} 00065 00069 virtual void Update() = 0; 00070 00075 inline const std::string& GetId() const { 00076 return m_strId; 00077 } 00078 00083 void SetId(const std::string& str_id) { 00084 m_strId = str_id; 00085 } 00086 00087 private: 00088 00090 std::string m_strId; 00091 00092 }; 00093 00094 } 00095 00096 #define REGISTER_MEDIUM(CLASSNAME, \ 00097 LABEL, \ 00098 AUTHOR, \ 00099 VERSION, \ 00100 BRIEF_DESCRIPTION, \ 00101 LONG_DESCRIPTION, \ 00102 STATUS) \ 00103 REGISTER_SYMBOL(CMedium, \ 00104 CLASSNAME, \ 00105 LABEL, \ 00106 AUTHOR, \ 00107 VERSION, \ 00108 BRIEF_DESCRIPTION, \ 00109 LONG_DESCRIPTION, \ 00110 STATUS) 00111 00112 #endif