ProgramInterface.hpp
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
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef PROGRAMINTERFACE_HPP
00039 #define PROGRAMINTERFACE_HPP
00040
00041 #include <string>
00042 #include <vector>
00043 #include "DataSourceBase.hpp"
00044 #include "AttributeBase.hpp"
00045 #include <boost/shared_ptr.hpp>
00046
00047 namespace RTT
00048 {
00049 class ProgramProcessor;
00050 class ProgramInterface;
00051 typedef boost::shared_ptr<ProgramInterface> ProgramInterfacePtr;
00052 typedef boost::weak_ptr<ProgramInterface> ProgramInterfaceWPtr;
00053
00058 class RTT_API ProgramInterface
00059 {
00060 public:
00064 struct RTT_API Status {
00068 enum ProgramStatus { stopped,
00069 running,
00070 paused,
00071 error,
00072 unloaded
00073 };
00074 };
00075 protected:
00076 Status::ProgramStatus pStatus;
00077 ProgramProcessor* pp;
00078 virtual void handleUnload();
00079 public:
00080 ProgramInterface(ProgramProcessor* progp = 0);
00081
00082 virtual ~ProgramInterface();
00083
00084 void setProgramProcessor(ProgramProcessor* progp);
00085
00086 ProgramProcessor* getProgramProcessor() const { return pp; }
00087
00091 virtual bool start() = 0;
00092
00096 virtual bool pause() = 0;
00097
00101 virtual bool step() = 0;
00102
00106 virtual bool stop() = 0;
00107
00114 virtual bool execute()= 0;
00115
00119 virtual void reset() = 0;
00120
00124 inline bool isRunning() const { return pStatus == Status::running; }
00125
00129 inline bool isPaused() const { return pStatus == Status::paused; }
00130
00134 inline bool isStopped() const { return pStatus == Status::stopped || pStatus == Status::unloaded ; }
00135
00139 inline bool inError() const { return pStatus == Status::error; }
00140
00141 virtual bool stepDone() const = 0;
00142
00146 virtual int getLineNumber() const = 0;
00147
00151 Status::ProgramStatus getStatus() const { return pStatus; }
00152
00157 virtual std::string getText() const = 0;
00158
00162 virtual const std::string& getName() const = 0;
00163
00167 virtual std::vector<AttributeBase*> getArguments() const = 0;
00168
00186 virtual ProgramInterface* copy( std::map<const DataSourceBase*, DataSourceBase*>& replacementdss ) const = 0;
00187
00188 virtual ProgramInterface* clone() const = 0;
00189 };
00190
00191
00192 }
00193
00194
00195 #endif
00196
00197