00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef LM_DECIDER_H
00029 #define LM_DECIDER_H
00030
00031 #include <boost/tuple/tuple.hpp>
00032 #include <list>
00033
00034 #include "Defs.h"
00035
00036 namespace lm
00037 {
00038 class Agent;
00039 class Effector;
00040 class Sensor;
00041
00046 class Decider
00047 {
00048 public:
00049 Decider(Effector* defaultEffect);
00050 Decider();
00051 public:
00052 virtual ~Decider();
00053
00054 void append(std::list<Effector*> effects);
00055
00056 void append(std::list<Sensor*> senses);
00060 void add(std::list<Effector*> effects);
00061
00065 void add(Effector& effect);
00066
00070 void add(Sensor& sense);
00071
00075 void add(std::list<Sensor*> senses);
00076
00077 void setEffectors(std::list<Effector*> effects);
00078 void setSensors(std::list<Sensor*> senses);
00079
00086 std::list<Effector*> getEffectors();
00087 std::list<Sensor*> getSensors();
00088
00089
00090 protected:
00094 std::list<Effector*> mEffectors;
00095
00101 std::list<Sensor*> mSensors;
00102
00113 std::list<boost::tuple<bool, Sensor*> > mSensorsResults;
00114
00115
00116
00117 protected:
00122 std::list<boost::tuple<bool, Sensor*> > getSensorsResults();
00123
00128 Agent* mAgent;
00129 public:
00133 void setAgent(Agent* newAgent);
00134
00135 public:
00141 void applyDecision(Effector* e, int agentState );
00142
00147 virtual Effector* makeDecision() = 0;
00148
00152 Agent* getAgent()
00153 {
00154 return mAgent;
00155 }
00156
00157 };
00158 }
00159
00160 #endif
00161