VISR  0.12.0
Versatile Interactive Scene Renderer
parameter_connection_graph.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRRL_PARAMETER_CONNECTION_GRAPH_HPP_INCLUDED
4 #define VISR_LIBRRL_PARAMETER_CONNECTION_GRAPH_HPP_INCLUDED
5 
7 
8 #include <libvisr/constants.hpp>
9 
10 #include <ciso646>
11 #include <iosfwd>
12 #include <set>
13 #include <memory>
14 #include <stdexcept>
15 #include <vector>
16 
17 #include <boost/graph/adjacency_list.hpp>
18 
19 namespace visr
20 {
21 // Forward declarations
22 namespace impl
23 {
24 class ParameterPortBaseImplementation;
25 }
26 
27 namespace rrl
28 {
29 
31 {
32 public:
34  {
36  public:
37  using Ports = std::vector< impl::ParameterPortBaseImplementation * >;
38 
40 
41  Ports const & receivePorts() const { return mReceivePorts; }
42  Ports const & sendPorts() const { return mSendPorts; }
43 
44  std::size_t numSenders() const { return mSendPorts.size(); }
45  std::size_t numReceivers() const { return mSendPorts.size(); }
46 
47  private:
48  Ports mSendPorts;
49  Ports mReceivePorts;
50  };
51 
52  using ConnectedPortVector = std::vector< ConnectedPorts >;
53 
54  explicit ParameterConnectionGraph( ParameterConnectionMap const & connections );
55 
60 
61  ConnectedPortVector const & connectedPorts() const { return mConnections; }
62 
63 private:
64 
65  using GraphType = boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, impl::ParameterPortBaseImplementation * >;
66 
67  GraphType mConnectionGraph;
68 
69  using VertexMap = std::map<impl::ParameterPortBaseImplementation *, GraphType::vertex_descriptor >;
70 
71  VertexMap mVertexLookup;
72 
73  ConnectedPortVector mConnections;
74 };
75 
76 } // namespace rrl
77 } // namespace visr
78 
79 #endif // #ifndef VISR_LIBRRL_PARAMETER_CONNECTION_GRAPH_HPP_INCLUDED
~ParameterConnectionGraph()
Definition: parameter_connection_graph.cpp:109
ConnectedPorts()
Definition: parameter_connection_graph.hpp:39
std::vector< impl::ParameterPortBaseImplementation *> Ports
Definition: parameter_connection_graph.hpp:37
Ports const & receivePorts() const
Definition: parameter_connection_graph.hpp:41
Ports const & sendPorts() const
Definition: parameter_connection_graph.hpp:42
Definition: options.cpp:10
Definition: parameter_connection_graph.hpp:33
std::size_t numSenders() const
Definition: parameter_connection_graph.hpp:44
ParameterConnectionGraph(ParameterConnectionMap const &connections)
Definition: parameter_connection_graph.cpp:27
Definition: parameter_connection_graph.hpp:30
Definition: parameter_connection_map.hpp:28
ConnectedPortVector const & connectedPorts() const
Definition: parameter_connection_graph.hpp:61
std::size_t numReceivers() const
Definition: parameter_connection_graph.hpp:45
std::vector< ConnectedPorts > ConnectedPortVector
Definition: parameter_connection_graph.hpp:52