TuttleOFX  1
tuttle::host::graph::ProcessGraph Class Reference

Created from a user Graph, this class allows you to launch the process. More...

#include <ProcessGraph.hpp>

Collaboration diagram for tuttle::host::graph::ProcessGraph:

Public Types

typedef Graph::Node Node
typedef graph::ProcessVertex Vertex
typedef graph::ProcessVertexAtTime VertexAtTime
typedef graph::ProcessEdge Edge
typedef graph::ProcessEdgeAtTime EdgeAtTime
typedef Graph::Attribute Attribute
typedef InternalGraph< Vertex,
Edge
InternalGraphImpl
typedef InternalGraph
< ProcessVertexAtTime,
ProcessEdgeAtTime
InternalGraphAtTimeImpl
typedef std::map< std::string,
Node * > 
NodeMap
typedef Graph::InstanceCountMap InstanceCountMap

Public Member Functions

 ProcessGraph (const ComputeOptions &options, Graph &graph, const std::list< std::string > &nodes, memory::IMemoryCache &internMemoryCache)
 ~ProcessGraph ()
 @ todo: const Graph, no ?
void updateGraph (Graph &userGraph, const std::list< std::string > &outputNodes)
void setup ()
std::list< TimeRangecomputeTimeRange ()
void computeHashAtTime (NodeHashContainer &outNodesHash, const OfxTime time)
void beginSequence (const TimeRange &timeRange)
void setupAtTime (const OfxTime time)
void processAtTime (memory::IMemoryCache &outCache, const OfxTime time)
void endSequence ()
bool process (memory::IMemoryCache &outCache)

Private Member Functions

VertexAtTime::Key getOutputKeyAtTime (const OfxTime time)
InternalGraphAtTimeImpl::vertex_descriptor getOutputVertexAtTime (const OfxTime time)
void relink ()
 After copying Vertices, we need to duplicate Nodes and relink Vertices with new Nodes.
void bakeGraphInformationToNodes (InternalGraphAtTimeImpl &renderGraphAtTime)

Private Attributes

InternalGraphImpl _renderGraph
InternalGraphAtTimeImpl _renderGraphAtTime
NodeMap _nodes
InstanceCountMap _instanceCount
const ComputeOptions_options
memory::IMemoryCache_internMemoryCache
ProcessVertexData _procOptions

Static Private Attributes

static const std::string _outputId

Detailed Description

Created from a user Graph, this class allows you to launch the process.

Internally this class use multiple graphs with different representation of the graph. It create a new graph with a vertex for each node at each time. It reorder the nodes to optimise memory usage.

Definition at line 33 of file ProcessGraph.hpp.


Member Typedef Documentation

typedef std::map<std::string, Node*> tuttle::host::graph::ProcessGraph::NodeMap

Definition at line 45 of file ProcessGraph.hpp.

Todo:
tuttle ProcessNode...

Definition at line 37 of file ProcessGraph.hpp.


Constructor & Destructor Documentation

tuttle::host::graph::ProcessGraph::ProcessGraph ( const ComputeOptions options,
Graph graph,
const std::list< std::string > &  nodes,
memory::IMemoryCache internMemoryCache 
)
tuttle::host::graph::ProcessGraph::~ProcessGraph ( )

@ todo: const Graph, no ?

Definition at line 31 of file ProcessGraph.cpp.


Member Function Documentation

void tuttle::host::graph::ProcessGraph::computeHashAtTime ( NodeHashContainer outNodesHash,
const OfxTime  time 
)
void tuttle::host::graph::ProcessGraph::endSequence ( )

Definition at line 197 of file ProcessGraph.cpp.

References _nodes, _options, _procOptions, tuttle::host::ComputeOptions::endSequenceHandle(), TUTTLE_INFO, and TUTTLE_TLOG.

Referenced by process().

Here is the call graph for this function:

ProcessGraph::VertexAtTime::Key tuttle::host::graph::ProcessGraph::getOutputKeyAtTime ( const OfxTime  time) [private]

Definition at line 35 of file ProcessGraph.cpp.

References _outputId, _procOptions, and tuttle::host::graph::ProcessVertexAtTime::getKey().

Referenced by getOutputVertexAtTime().

Here is the call graph for this function:

ProcessGraph::InternalGraphAtTimeImpl::vertex_descriptor tuttle::host::graph::ProcessGraph::getOutputVertexAtTime ( const OfxTime  time) [private]
void tuttle::host::graph::ProcessGraph::setupAtTime ( const OfxTime  time)
Todo:
: this is maybe better to move this into the ProcessData? Doesn't depend on time?

Definition at line 333 of file ProcessGraph.cpp.

References tuttle::host::graph::ProcessVertex::_data, tuttle::host::graph::ProcessVertexAtTime::_data, tuttle::host::graph::ProcessVertexAtTimeData::_isFinalNode, _options, _outputId, _renderGraph, _renderGraphAtTime, tuttle::host::graph::ProcessVertexData::_times, tuttle::host::graph::ProcessEdge::_timesNeeded, tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::addEdge(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::addVertex(), bakeGraphInformationToNodes(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::clear(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::depthFirstVisit(), tuttle::host::graph::exportDebugAsDOT(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::getEdges(), tuttle::host::ComputeOptions::getForceIdentityNodesProcess(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::getGraph(), tuttle::host::graph::IEdge::getInAttrName(), tuttle::host::graph::ProcessVertexAtTime::getKey(), getOutputVertexAtTime(), tuttle::host::graph::ProcessVertexAtTime::getProcessDataAtTime(), tuttle::host::graph::IVertex::getProcessNode(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::getVertexDescriptor(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::getVertices(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::instance(), tuttle::host::graph::IVertex::isFake(), tuttle::host::graph::visitor::removeIdentityNodes(), tuttle::host::INode::setProcessDataAtTime(), tuttle::host::ComputeOptions::setupAtTimeHandle(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::sourceInstance(), tuttle::host::graph::InternalGraph< VERTEX, EDGE, OutEdgeList, VertexList, EdgeList >::targetInstance(), TUTTLE_INFO, TUTTLE_LOG_TRACE, and TUTTLE_TLOG.

Referenced by computeHashAtTime(), process(), tuttle::host::Graph::setupAtTime(), and tuttle::host::OverlayInteract::setupGraph().

Here is the call graph for this function:


Field Documentation


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