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 #ifndef ARACTION_H
00027 #define ARACTION_H
00028
00029 #include "ariaTypedefs.h"
00030 #include "ArArg.h"
00031 #include "ArActionDesired.h"
00032 #include <map>
00033 #include <string>
00034
00035 class ArRobot;
00036
00060 class ArAction
00061 {
00062 public:
00064 AREXPORT ArAction(const char * name, const char * description = "");
00066 AREXPORT virtual ~ArAction();
00068 AREXPORT virtual bool isActive(void) const;
00070 AREXPORT virtual void activate(void);
00072 AREXPORT virtual void deactivate(void);
00074
00088 AREXPORT virtual ArActionDesired *fire(ArActionDesired currentDesired) = 0;
00090 AREXPORT virtual void setRobot(ArRobot *robot);
00092 AREXPORT virtual int getNumArgs(void) const;
00093 #ifndef SWIG
00094
00097 AREXPORT virtual const ArArg *getArg(int number) const;
00098 #endif // SWIG
00099
00100 AREXPORT virtual ArArg *getArg(int number);
00102 AREXPORT virtual const char *getName(void) const;
00104 AREXPORT virtual const char *getDescription(void) const;
00106 AREXPORT virtual ArActionDesired *getDesired(void) { return NULL; }
00108 AREXPORT virtual const ArActionDesired *getDesired(void) const { return NULL; }
00110 AREXPORT virtual void log(bool verbose = true) const;
00111
00113 AREXPORT ArRobot* getRobot() const { return myRobot; }
00114
00115 protected:
00117 AREXPORT void setNextArgument(ArArg const &arg);
00118
00120 ArRobot *myRobot;
00121
00122
00123 bool myIsActive;
00124 int myNumArgs;
00125 std::map<int, ArArg> myArgumentMap;
00126 std::string myName;
00127 std::string myDescription;
00128 };
00129
00130
00131 #endif //ARACTION_H