Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
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>

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, EdgePropertyGraph
 
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. More...
 
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

RTT::FunctionGraphBuilder::FunctionGraphBuilder ( )

Constructs a Function graph builder.

Definition at line 65 of file FunctionGraphBuilder.cpp.

RTT::FunctionGraphBuilder::~FunctionGraphBuilder ( )

Definition at line 70 of file FunctionGraphBuilder.cpp.

Member Function Documentation

FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::addCommand ( ConditionInterface cond,
base::ActionInterface com 
)

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

Returns
the 'new' build CommandNode.

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.

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.

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.

FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::buildNode ( ) const

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.

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.

ActionInterface * RTT::FunctionGraphBuilder::getCommand ( CommandNode  cn)

Get the Command on a given CommandNode.

Definition at line 149 of file FunctionGraphBuilder.cpp.

FunctionGraphPtr RTT::FunctionGraphBuilder::getFunction ( )

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.

Returns
the previous CommandNode.

Definition at line 140 of file FunctionGraphBuilder.cpp.

FunctionGraphBuilder::CommandNode RTT::FunctionGraphBuilder::nextNode ( ) const

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.

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

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.

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.

void RTT::FunctionGraphBuilder::returnFunction ( ConditionInterface cond,
int  line 
)

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.

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.

Parameters
vertThe CommandNode to be adapted
commThe 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.

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.

void RTT::FunctionGraphBuilder::setLineNumber ( int  ln)

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.

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.

Member Data Documentation

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.

CommandNode RTT::scripting::FunctionGraphBuilder::build

The node which will be built next.

Definition at line 240 of file FunctionGraphBuilder.hpp.

FunctionGraphPtr RTT::scripting::FunctionGraphBuilder::func
private

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.

CommandNode RTT::scripting::FunctionGraphBuilder::next

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 Tue Jun 25 2019 19:33:46