This class builds a program consisting of data contained in a program graph tree, based on the Boost Graph Library. More...
#include <FunctionGraphBuilder.hpp>
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.
A CommandNode serves as a token to construct a vertex or node, containing a command.
Definition at line 74 of file FunctionGraphBuilder.hpp.
A ConditionEdge serves as a token to construct an edge, containing a condition.
Definition at line 80 of file FunctionGraphBuilder.hpp.
typedef boost::graph_traits<Graph>::edge_descriptor RTT::scripting::FunctionGraphBuilder::Edge |
Definition at line 68 of file FunctionGraphBuilder.hpp.
Definition at line 63 of file FunctionGraphBuilder.hpp.
typedef boost::adjacency_list<boost::vecS, boost::listS, boost::directedS, VertProperty, EdgeProperty> RTT::scripting::FunctionGraphBuilder::Graph |
Definition at line 66 of file FunctionGraphBuilder.hpp.
typedef boost::graph_traits<Graph>::vertex_descriptor RTT::scripting::FunctionGraphBuilder::Vertex |
Definition at line 67 of file FunctionGraphBuilder.hpp.
Definition at line 64 of file FunctionGraphBuilder.hpp.
Constructs a Function graph builder.
Definition at line 65 of file FunctionGraphBuilder.cpp.
Definition at line 70 of file FunctionGraphBuilder.cpp.
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.
void RTT::FunctionGraphBuilder::addConditionEdge | ( | ConditionInterface * | cond, |
CommandNode | vert | ||
) |
Add an edge from the build CommandNode to the given CommandNode without changing the build CommandNode.
Definition at line 130 of file FunctionGraphBuilder.cpp.
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.
bool RTT::FunctionGraphBuilder::breakLoop | ( | ) |
Definition at line 468 of file FunctionGraphBuilder.cpp.
size_t RTT::FunctionGraphBuilder::buildEdges | ( | ) | const |
Return the number of edges of the build CommandNode.
Definition at line 202 of file FunctionGraphBuilder.cpp.
Return the build CommandNode.
Definition at line 197 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::closeConditionEdge | ( | CommandNode | vert, |
ConditionInterface * | cond | ||
) |
Add an edge between the given CommandNode and the build CommandNode.
Definition at line 135 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::connectToNext | ( | CommandNode | v, |
ConditionInterface * | cond | ||
) |
Connect the given CommandNode to the 'next' CommandNode.
Definition at line 192 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::endElseBlock | ( | int | linenumber | ) |
Definition at line 426 of file FunctionGraphBuilder.cpp.
FunctionGraphPtr RTT::FunctionGraphBuilder::endFunction | ( | int | line = 0 | ) |
Finish building the function and return the result.
Definition at line 98 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::endIfBlock | ( | int | linenumber | ) |
Definition at line 411 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::endWhileBlock | ( | int | linenumber | ) |
Definition at line 451 of file FunctionGraphBuilder.cpp.
Get the Command on a given CommandNode.
Definition at line 149 of file FunctionGraphBuilder.cpp.
Return a pointer to the function being built, zero if none.
Definition at line 93 of file FunctionGraphBuilder.cpp.
bool RTT::FunctionGraphBuilder::inLoop | ( | ) |
Definition at line 463 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.
Return the next CommandNode.
Definition at line 207 of file FunctionGraphBuilder.cpp.
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.
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.
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.
void RTT::FunctionGraphBuilder::setCommand | ( | base::ActionInterface * | comm | ) |
Sets a new Command on the build CommandNode.
Definition at line 158 of file FunctionGraphBuilder.cpp.
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 373 of file FunctionGraphBuilder.cpp.
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.
void RTT::FunctionGraphBuilder::setName | ( | const std::string & | _name | ) |
Definition at line 172 of file FunctionGraphBuilder.cpp.
FunctionGraphPtr RTT::FunctionGraphBuilder::startFunction | ( | const std::string & | fname | ) |
Start building a new function.
Definition at line 74 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::startIfStatement | ( | ConditionInterface * | cond, |
int | linenumber | ||
) |
Definition at line 387 of file FunctionGraphBuilder.cpp.
void RTT::FunctionGraphBuilder::startWhileStatement | ( | ConditionInterface * | cond, |
int | linenumber | ||
) |
Definition at line 435 of file FunctionGraphBuilder.cpp.
std::stack<CommandNode> RTT::scripting::FunctionGraphBuilder::branch_stack [private] |
A stack which keeps track of branch points.
Each if statement pushes three nodes on the stack : 1st: next, 2nd: else, 3rd: build. Each consequtive if statement places these three and they are popped on endIfBlock and endElseBlock.
Definition at line 264 of file FunctionGraphBuilder.hpp.
std::stack<CommandNode> RTT::scripting::FunctionGraphBuilder::break_stack [private] |
Save the after-while nodes in a break stack to support the break statement.
Definition at line 270 of file FunctionGraphBuilder.hpp.
The node which will be built next.
Definition at line 240 of file FunctionGraphBuilder.hpp.
Definition at line 249 of file FunctionGraphBuilder.hpp.
Graph* RTT::scripting::FunctionGraphBuilder::graph [private] |
The graph currently working on.
Definition at line 254 of file FunctionGraphBuilder.hpp.
The node which will be built next.
Definition at line 245 of file FunctionGraphBuilder.hpp.