VertexNode.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 VERTEXNODE_HPP
00039 #define VERTEXNODE_HPP
00040
00041 #include <map>
00042 #include "CommandInterface.hpp"
00043
00044 namespace RTT
00045 {
00046 class DataSourceBase;
00047 }
00048
00049
00050
00051
00052 #undef DS
00053 #undef OEL
00054 #undef VL
00055 #undef VP
00056 #undef EP
00057 #undef GP
00058 #undef EL
00059
00060 #define BOOST_NO_HASH
00061 #include <boost/graph/adjacency_list.hpp>
00062
00063 namespace RTT {
00064 enum vertex_command_t { vertex_command };
00065 enum vertex_exec_t { vertex_exec };
00066 }
00067
00068 namespace boost {
00069 using RTT::vertex_exec_t;
00070 using RTT::vertex_command_t;
00071 BOOST_INSTALL_PROPERTY(vertex, command);
00072 BOOST_INSTALL_PROPERTY(vertex, exec);
00073 }
00074
00075 namespace RTT
00076 {
00077 class ProcessorControlInterface;
00078 class ProcessorInterface;
00079 class StateDescription;
00080
00084 class RTT_API VertexNode
00085 {
00086 public:
00090 enum NodeTypes { normal_node, prog_start_node, prog_exit_node, func_start_node, func_exit_node };
00091 typedef boost::property<vertex_command_t, VertexNode,
00092 boost::property<vertex_exec_t, int,
00093 boost::property<boost::vertex_index_t, int> > > VertProperty;
00094
00099 VertexNode();
00100
00105 explicit VertexNode(CommandInterface* cmd);
00106
00110 VertexNode( const VertexNode& orig );
00111
00112 VertexNode copy( std::map<const DataSourceBase*, DataSourceBase*>& rdss ) const;
00113
00114 VertexNode& operator=( const VertexNode& orig );
00115
00116 public:
00126
00127
00128
00129
00130
00131
00132 ~VertexNode();
00133
00146 void startExecution();
00147
00152 bool execute();
00153
00157 bool isValid() const;
00165 CommandInterface* setCommand(CommandInterface* c);
00166
00173 void setLineNumber(int ln);
00174
00182 CommandInterface* getCommand() const;
00183
00188 int getLineNumber() const;
00189 private:
00190
00194 CommandInterface* command;
00195
00201 int lineNumber;
00202
00203 };
00204 }
00205
00206 #endif
00207
00208
00209