Go to the documentation of this file.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 "rtt-scripting-config.h"
00042 #include <map>
00043 #include "../base/ActionInterface.hpp"
00044
00045
00046
00047 #undef DS
00048 #undef OEL
00049 #undef VL
00050 #undef VP
00051 #undef EP
00052 #undef GP
00053 #undef EL
00054 #define BOOST_NO_HASH
00055 #include <boost/graph/adjacency_list.hpp>
00056
00057 namespace RTT
00058 { namespace scripting {
00059 enum vertex_command_t { vertex_command };
00060 enum vertex_exec_t { vertex_exec };
00061 }}
00062
00063 namespace boost {
00064 using RTT::scripting::vertex_exec_t;
00065 using RTT::scripting::vertex_command_t;
00066 BOOST_INSTALL_PROPERTY(vertex, command);
00067 BOOST_INSTALL_PROPERTY(vertex, exec);
00068 }
00069
00070 namespace RTT
00071 { namespace scripting {
00072
00076 class RTT_SCRIPTING_API VertexNode
00077 {
00078 public:
00082 enum NodeTypes { normal_node, prog_start_node, prog_exit_node, func_start_node, func_exit_node };
00083 typedef boost::property<vertex_command_t, VertexNode,
00084 boost::property<vertex_exec_t, int,
00085 boost::property<boost::vertex_index_t, int> > > VertProperty;
00086
00091 VertexNode();
00092
00097 explicit VertexNode(base::ActionInterface* cmd);
00098
00102 VertexNode( const VertexNode& orig );
00103
00104 VertexNode copy( std::map<const base::DataSourceBase*, base::DataSourceBase*>& rdss ) const;
00105
00106 VertexNode& operator=( const VertexNode& orig );
00107
00108 public:
00118
00119
00120
00121
00122
00123
00124 ~VertexNode();
00125
00138 void startExecution();
00139
00144 bool execute();
00145
00149 bool isValid() const;
00157 base::ActionInterface* setCommand(base::ActionInterface* c);
00158
00165 void setLineNumber(int ln);
00166
00174 base::ActionInterface* getCommand() const;
00175
00180 int getLineNumber() const;
00181 private:
00182
00186 base::ActionInterface* command;
00187
00193 int lineNumber;
00194
00195 };
00196 }}
00197
00198 #endif
00199
00200
00201