Orocos Real-Time Toolkit  2.6.0
Public Types | Public Member Functions | Public Attributes
RTT::scripting::FunctionGraphBuilder Class Reference

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>

List of all members.

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::ActionInterfacegetCommand (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.

Detailed Description

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.


Member Function Documentation

Add a new command from the build CommandNode under a condition.

Returns:
the 'new' build CommandNode.

Definition at line 120 of file FunctionGraphBuilder.cpp.

References build, next, and setCommand().

Append a function to the build CommandNode.

Parameters:
fnThe Function to append from the build CommandNode
condThe 'enter' condition
Returns:
the last CommandNode of the appended function.

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.

Returns:
the finished function.

Definition at line 98 of file FunctionGraphBuilder.cpp.

References build, and next.

Select an already added CommandNode.

Returns:
the previous CommandNode.

Definition at line 140 of file FunctionGraphBuilder.cpp.

References build, next, and setLineNumber().

Proceed to the 'next' CommandNode.

Parameters:
line_nrThe line number of the 'build' command.
Returns:
The new build CommandNode.

Definition at line 182 of file FunctionGraphBuilder.cpp.

References build, next, and setLineNumber().

Referenced by proceedToNext().

Proceed to the 'next' CommandNode and add an edge with a condition.

Parameters:
condThe condition under which to proceed to the next node.
line_nrThe line number of the 'build' command.
Returns:
The new build CommandNode.

Definition at line 176 of file FunctionGraphBuilder.cpp.

References build, next, and proceedToNext().

Function return is detected inside the function.

Do not confuse with endFunction().

Parameters:
condThe Condition under which to return.
lineThe line number of that line in the function.

Definition at line 86 of file FunctionGraphBuilder.cpp.

References build.

Sets a (new) command on a given CommandNode.

Parameters:
vertThe CommandNode to be adapted
commThe new Command to be executed in that node.

Definition at line 163 of file FunctionGraphBuilder.cpp.

Put a function in the build CommandNode.

Parameters:
fnThe Function to append from the build CommandNode
Returns:
the last CommandNode of the appended function.

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().

Set the line number of the build command node.

Parameters:
lnThe line number.

Definition at line 212 of file FunctionGraphBuilder.cpp.

References build.

Referenced by moveTo(), and proceedToNext().


The documentation for this class was generated from the following files: