Public Types | Public Member Functions | Public Attributes | Private 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 <FunctionGraphBuilder.hpp>

List of all members.

Public Types

typedef FunctionGraph::Vertex CommandNode
typedef FunctionGraph::Edge ConditionEdge
typedef boost::graph_traits
< Graph >::edge_descriptor 
Edge
typedef EdgeCondition::EdgeProperty EdgeProperty
typedef boost::adjacency_list
< boost::vecS, boost::listS,
boost::directedS, VertProperty,
EdgeProperty
Graph
typedef boost::graph_traits
< Graph >::vertex_descriptor 
Vertex
typedef VertexNode::VertProperty VertProperty

Public Member Functions

CommandNode addCommand (ConditionInterface *cond, base::ActionInterface *com)
void addConditionEdge (ConditionInterface *cond, CommandNode vert)
CommandNode appendFunction (ConditionInterface *cond, FunctionGraphPtr fn, std::vector< base::DataSourceBase::shared_ptr > fnargs)
bool breakLoop ()
size_t buildEdges () const
CommandNode buildNode () const
void closeConditionEdge (CommandNode vert, ConditionInterface *cond)
void connectToNext (CommandNode v, ConditionInterface *cond)
void endElseBlock (int linenumber)
FunctionGraphPtr endFunction (int line=0)
void endIfBlock (int linenumber)
void endWhileBlock (int linenumber)
 FunctionGraphBuilder ()
base::ActionInterfacegetCommand (CommandNode cn)
FunctionGraphPtr getFunction ()
bool inLoop ()
CommandNode moveTo (CommandNode _build, CommandNode _next, int linenr)
CommandNode nextNode () const
CommandNode proceedToNext (int line_nr=0)
CommandNode proceedToNext (ConditionInterface *cond, int line_nr=0)
void returnFunction (ConditionInterface *cond, int line)
void setCommand (base::ActionInterface *comm)
void setCommand (CommandNode vert, base::ActionInterface *comm)
CommandNode setFunction (FunctionGraphPtr fn, std::vector< base::DataSourceBase::shared_ptr > fnargs)
void setLineNumber (int ln)
void setName (const std::string &_name)
FunctionGraphPtr startFunction (const std::string &fname)
void startIfStatement (ConditionInterface *cond, int linenumber)
void startWhileStatement (ConditionInterface *cond, int linenumber)
 ~FunctionGraphBuilder ()

Public Attributes

CommandNode build
CommandNode next

Private Attributes

std::stack< CommandNodebranch_stack
 A stack which keeps track of branch points.
std::stack< CommandNodebreak_stack
FunctionGraphPtr func
Graphgraph

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 Typedef Documentation

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.


Constructor & Destructor Documentation

Constructs a Function graph builder.

Definition at line 65 of file FunctionGraphBuilder.cpp.

Definition at line 70 of file FunctionGraphBuilder.cpp.


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.

Add an edge from the build CommandNode to the given CommandNode without changing the build CommandNode.

Definition at line 130 of file FunctionGraphBuilder.cpp.

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.

Definition at line 468 of file FunctionGraphBuilder.cpp.

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.

Add an edge between the given CommandNode and the build CommandNode.

Definition at line 135 of file FunctionGraphBuilder.cpp.

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.

Finish building the function and return the result.

Returns:
the finished function.

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.

Definition at line 463 of file FunctionGraphBuilder.cpp.

Select an already added CommandNode.

Returns:
the previous CommandNode.

Definition at line 140 of file FunctionGraphBuilder.cpp.

Return the next CommandNode.

Definition at line 207 of file FunctionGraphBuilder.cpp.

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.

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.

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.

Sets a new Command on the build CommandNode.

Definition at line 158 of file FunctionGraphBuilder.cpp.

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 373 of file FunctionGraphBuilder.cpp.

Set the line number of the build command node.

Parameters:
lnThe 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.

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.

Definition at line 435 of file FunctionGraphBuilder.cpp.


Member Data Documentation

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.

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.

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.


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


rtt
Author(s): RTT Developers
autogenerated on Sat Jun 8 2019 18:46:40