Orocos Real-Time Toolkit
2.6.0
|
This class builds a program consisting of data contained in a program graph tree, based on the Boost Graph Library. More...
#include <rtt/scripting/FunctionGraphBuilder.hpp>
Public Types | |
typedef EdgeCondition::EdgeProperty | EdgeProperty |
typedef VertexNode::VertProperty | VertProperty |
typedef boost::adjacency_list < boost::vecS, boost::listS, boost::directedS, VertProperty, EdgeProperty > | Graph |
typedef boost::graph_traits < Graph >::vertex_descriptor | Vertex |
typedef boost::graph_traits < Graph >::edge_descriptor | Edge |
typedef FunctionGraph::Vertex | CommandNode |
A CommandNode serves as a token to construct a vertex or node, containing a command. | |
typedef FunctionGraph::Edge | ConditionEdge |
A ConditionEdge serves as a token to construct an edge, containing a condition. | |
Public Member Functions | |
FunctionGraphBuilder () | |
Constructs a Function graph builder. | |
void | setLineNumber (int ln) |
Set the line number of the build command node. | |
void | setName (const std::string &_name) |
FunctionGraphPtr | startFunction (const std::string &fname) |
Start building a new function. | |
void | returnFunction (ConditionInterface *cond, int line) |
Function return is detected inside the function. | |
FunctionGraphPtr | endFunction (int line=0) |
Finish building the function and return the result. | |
FunctionGraphPtr | getFunction () |
Return a pointer to the function being built, zero if none. | |
void | startIfStatement (ConditionInterface *cond, int linenumber) |
void | endIfBlock (int linenumber) |
void | endElseBlock (int linenumber) |
void | startWhileStatement (ConditionInterface *cond, int linenumber) |
void | endWhileBlock (int linenumber) |
bool | inLoop () |
bool | breakLoop () |
CommandNode | addCommand (ConditionInterface *cond, base::ActionInterface *com) |
Add a new command from the build CommandNode under a condition. | |
void | addConditionEdge (ConditionInterface *cond, CommandNode vert) |
Add an edge from the build CommandNode to the given CommandNode without changing the build CommandNode. | |
void | closeConditionEdge (CommandNode vert, ConditionInterface *cond) |
Add an edge between the given CommandNode and the build CommandNode. | |
CommandNode | moveTo (CommandNode _build, CommandNode _next, int linenr) |
Select an already added CommandNode. | |
void | setCommand (base::ActionInterface *comm) |
Sets a new Command on the build CommandNode. | |
base::ActionInterface * | getCommand (CommandNode cn) |
Get the Command on a given CommandNode. | |
void | setCommand (CommandNode vert, base::ActionInterface *comm) |
Sets a (new) command on a given CommandNode. | |
CommandNode | appendFunction (ConditionInterface *cond, FunctionGraphPtr fn, std::vector< base::DataSourceBase::shared_ptr > fnargs) |
Append a function to the build CommandNode. | |
CommandNode | setFunction (FunctionGraphPtr fn, std::vector< base::DataSourceBase::shared_ptr > fnargs) |
Put a function in the build CommandNode. | |
CommandNode | proceedToNext (int line_nr=0) |
Proceed to the 'next' CommandNode. | |
CommandNode | proceedToNext (ConditionInterface *cond, int line_nr=0) |
Proceed to the 'next' CommandNode and add an edge with a condition. | |
void | connectToNext (CommandNode v, ConditionInterface *cond) |
Connect the given CommandNode to the 'next' CommandNode. | |
CommandNode | buildNode () const |
Return the build CommandNode. | |
size_t | buildEdges () const |
Return the number of edges of the build CommandNode. | |
CommandNode | nextNode () const |
Return the next CommandNode. | |
Public Attributes | |
CommandNode | build |
The node which will be built next. | |
CommandNode | next |
The node which will be built next. |
This class builds a program consisting of data contained in a program graph tree, based on the Boost Graph Library.
Definition at line 59 of file FunctionGraphBuilder.hpp.
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::addCommand | ( | ConditionInterface * | cond, |
base::ActionInterface * | com | ||
) |
Add a new command from the build CommandNode under a condition.
Definition at line 120 of file FunctionGraphBuilder.cpp.
References build, next, and setCommand().
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::appendFunction | ( | ConditionInterface * | cond, |
FunctionGraphPtr | fn, | ||
std::vector< base::DataSourceBase::shared_ptr > | fnargs | ||
) |
Append a function to the build CommandNode.
fn | The Function to append from the build CommandNode |
cond | The 'enter' condition |
This can be used if a function must be called conditionally.
Definition at line 233 of file FunctionGraphBuilder.cpp.
References RTT::scripting::CommandComposite::add(), addConditionEdge(), build, buildNode(), connectToNext(), getCommand(), and setCommand().
Referenced by setFunction().
FunctionGraphPtr RTT::FunctionGraphBuilder::endFunction | ( | int | line = 0 | ) |
Finish building the function and return the result.
Definition at line 98 of file FunctionGraphBuilder.cpp.
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::moveTo | ( | CommandNode | _build, |
CommandNode | _next, | ||
int | linenr | ||
) |
Select an already added CommandNode.
Definition at line 140 of file FunctionGraphBuilder.cpp.
References build, next, and setLineNumber().
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::proceedToNext | ( | int | line_nr = 0 | ) |
Proceed to the 'next' CommandNode.
line_nr | The line number of the 'build' command. |
Definition at line 182 of file FunctionGraphBuilder.cpp.
References build, next, and setLineNumber().
Referenced by proceedToNext().
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::proceedToNext | ( | ConditionInterface * | cond, |
int | line_nr = 0 |
||
) |
Proceed to the 'next' CommandNode and add an edge with a condition.
cond | The condition under which to proceed to the next node. |
line_nr | The line number of the 'build' command. |
Definition at line 176 of file FunctionGraphBuilder.cpp.
References build, next, and proceedToNext().
void RTT::FunctionGraphBuilder::returnFunction | ( | ConditionInterface * | cond, |
int | line | ||
) |
Function return is detected inside the function.
Do not confuse with endFunction().
cond | The Condition under which to return. |
line | The line number of that line in the function. |
Definition at line 86 of file FunctionGraphBuilder.cpp.
References build.
void RTT::FunctionGraphBuilder::setCommand | ( | CommandNode | vert, |
base::ActionInterface * | comm | ||
) |
Sets a (new) command on a given CommandNode.
vert | The CommandNode to be adapted |
comm | The new Command to be executed in that node. |
Definition at line 163 of file FunctionGraphBuilder.cpp.
FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::setFunction | ( | FunctionGraphPtr | fn, |
std::vector< base::DataSourceBase::shared_ptr > | fnargs | ||
) |
Put a function in the build CommandNode.
fn | The Function to append from the build CommandNode |
This function must/should be used when build has no edges yet leaving. Off course, edges can already be pointing to build of the previous command. That's why build can not be overwritten with the first node of the function, and we need to insert an extra edge from build to funcStart. That is why we use (until better solution found) the append Function.
Definition at line 369 of file FunctionGraphBuilder.cpp.
References appendFunction().
void RTT::FunctionGraphBuilder::setLineNumber | ( | int | ln | ) |
Set the line number of the build command node.
ln | The line number. |
Definition at line 212 of file FunctionGraphBuilder.cpp.
References build.
Referenced by moveTo(), and proceedToNext().