3 #ifndef VISR_LIBRRL_SCHEDULING_GRAPH_HPP_INCLUDED 4 #define VISR_LIBRRL_SCHEDULING_GRAPH_HPP_INCLUDED 20 #include <boost/graph/adjacency_list.hpp> 25 class AtomicComponent;
28 class ComponentImplementation;
29 class ParameterPortBaseImplementation;
35 class AudioConnectionMap;
52 std::vector<AtomicComponent *> sequentialSchedule()
const;
61 bool checkAcyclicGraph( std::ostream & messages )
const;
70 struct ProcessingNode:
public std::tuple<NodeType, impl::ComponentImplementation const *>
75 explicit ProcessingNode( NodeType nodeType );
83 NodeType type()
const {
return std::get<0>(*this); }
88 using GraphType = boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, ProcessingNode >;
90 GraphType mDependencyGraph;
92 ProcessingNode
const & getNode( GraphType::vertex_descriptor vertex )
const;
94 std::string nodeName( ProcessingNode
const & node )
const;
101 void insertDependencyEdge( GraphType::vertex_descriptor sourceVertex, GraphType::vertex_descriptor destVertex );
104 using VertexMap = std::map<ProcessingNode, GraphType::vertex_descriptor >;
106 VertexMap mVertexLookup;
108 GraphType::vertex_descriptor mSourceVertex;
110 GraphType::vertex_descriptor mSinkVertex;
116 #endif // #ifndef VISR_LIBRRL_SCHEDULING_GRAPH_HPP_INCLUDED Definition: component_implementation.hpp:34
Definition: options.cpp:10
Definition: audio_connection_map.hpp:64
Definition: scheduling_graph.hpp:38
Definition: parameter_connection_map.hpp:28