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 #ifndef ARACTION_H
00028 #define ARACTION_H
00029
00030 #include "ariaTypedefs.h"
00031 #include "ArArg.h"
00032 #include "ArActionDesired.h"
00033 #include <map>
00034 #include <string>
00035
00036 class ArRobot;
00037
00039 class ArAction
00040 {
00041 public:
00043 ArAction(const char * name, const char * description = "");
00045 virtual ~ArAction();
00047 virtual bool isActive(void) const;
00049 virtual void activate(void);
00051 virtual void deactivate(void);
00053
00060 virtual ArActionDesired *fire(ArActionDesired currentDesired) = 0;
00062 virtual void setRobot(ArRobot *robot);
00064 virtual int getNumArgs(void) const;
00065 #ifndef SWIG
00066
00067 virtual const ArArg *getArg(int number) const;
00068 #endif // SWIG
00069
00070 virtual ArArg *getArg(int number);
00072 virtual const char *getName(void) const;
00074 virtual const char *getDescription(void) const;
00076 virtual ArActionDesired *getDesired(void) { return NULL; }
00078 virtual void log(bool verbose = true) const;
00079 protected:
00080
00082 void setNextArgument(ArArg const &arg);
00083 ArRobot *myRobot;
00084 bool myIsActive;
00085
00086 int myNumArgs;
00087 std::map<int, ArArg> myArgumentMap;
00088 std::string myName;
00089 std::string myDescription;
00090 };
00091
00092
00093 #endif //ARACTION_H