VISR  0.11.6
Versatile Interactive Scene Renderer
parameter_input.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_PARAMETER_INPUT_HPP_INCLUDED
4 #define VISR_PARAMETER_INPUT_HPP_INCLUDED
5 
7 
10 #include "export_symbols.hpp"
11 #include "parameter_type.hpp"
12 
13 #include <ciso646>
14 #include <stdexcept>
15 
16 namespace visr
17 {
18 
19 class VISR_CORE_LIBRARY_SYMBOL ParameterInputBase: public ParameterPortBase
20 {
21 public:
22  explicit ParameterInputBase( char const * name,
23  Component & parent,
24  ParameterType const & parameterType,
25  CommunicationProtocolType const & protocolType,
26  ParameterConfigBase const & paramConfig );
27 
28  explicit ParameterInputBase( char const * name,
29  Component & parent,
30  ParameterType const & parameterType,
31  CommunicationProtocolType const & protocolType );
32 
33  virtual ~ParameterInputBase() override;
34 
35  virtual CommunicationProtocolBase::Input & protocolInput() = 0;
36 
38 };
39 
44 template< class ProtocolT, class ParameterT >
46  public ProtocolT::template Input< ParameterT >
47 {
48 public:
50 
51  template<typename ... ProtocolArgs>
52  explicit ParameterInput( char const * name,
53  Component & parent,
54  ParameterConfigType const & paramConfig,
55  ProtocolArgs ... protoArgs );
56 
57  template<typename ... ProtocolArgs>
58  explicit ParameterInput( char const * name,
59  Component & parent,
60  ProtocolArgs ... protoArgs );
61 
65  /*virtual*/ ~ParameterInput() override;
66 
68  {
69  return static_cast<typename ProtocolT::template Input< ParameterT > & >(*this); // cast to protocol input type.
70  };
71 
72 
73  //ParameterType parameterType() const override
74  //{
75  // return ParameterToId<ParameterT>::id;
76  //}
77 
78  //CommunicationProtocolType protocolType() const override
79  //{
80  // return CommunicationProtocolToId<ProtocolT>::id;
81  //}
82 
83  //ParameterConfigBase const & parameterConfig() const override
84  //{
85  // return ParameterPortBase::parameterConfig();
86  //}
87 
94  {
96  }
97 protected:
98  void setProtocol( CommunicationProtocolBase * protocol ) override
99  {
100  ProtocolT* typedProtocol
101  = dynamic_cast< ProtocolT * >(protocol);
102  if( not typedProtocol )
103  {
104  throw std::invalid_argument( "MessageQueueProtocol::MessageQueueProtocol::Input::setProtocol(): Protocol class type does not match" );
105  }
106  this->setProtocolInstance( typedProtocol );
107  }
108 private:
109 };
110 
111 template< class ProtocolT, class ParameterT >
112 template<typename ... ProtocolArgs>
114 ParameterInput( char const * name,
115  Component & parent,
116  ParameterConfigType const & paramConfig,
117  ProtocolArgs ... protoArgs )
118  : ParameterInputBase( name, parent,
119  ParameterToId<ParameterT>::id,
120  CommunicationProtocolToId<ProtocolT>::id, paramConfig )
121  , ProtocolT::template Input<ParameterT>(protoArgs...)
122 {
123 }
124 
125 template< class ProtocolT, class ParameterT >
126 template<typename ... ProtocolArgs>
128 ParameterInput( char const * name,
129  Component & parent,
130  ProtocolArgs ... protoArgs )
131  : ParameterInputBase( name, parent,
132  ParameterToId<ParameterT>::id,
133  CommunicationProtocolToId<ProtocolT>::id )
134  , ProtocolT::template Input<ParameterT>( protoArgs... )
135 {
136 }
137 
138 template< class ProtocolT, class ParameterT >
140 
141 } // namespace visr
142 
143 #endif // #ifndef VISR_PARAMETER_INPUT_HPP_INCLUDED
Definition: communication_protocol_type.hpp:29
Definition: communication_protocol_base.hpp:94
ParameterInput(char const *name, Component &parent, ParameterConfigType const &paramConfig, ProtocolArgs ... protoArgs)
Definition: parameter_input.hpp:114
uint64_t ParameterType
Definition: parameter_type.hpp:13
Definition: parameter_type.hpp:43
CommunicationProtocolBase::Input & protocolInput() override
Definition: parameter_input.hpp:67
~ParameterInput() override
std::uint64_t CommunicationProtocolType
Definition: communication_protocol_type.hpp:14
Definition: component.hpp:38
Definition: parameter_input.hpp:19
Definition: options.cpp:10
Definition: parameter_config_base.hpp:22
Definition: parameter_input.hpp:45
void setParameterConfig(ParameterConfigType const &parameterConfig)
Definition: parameter_input.hpp:93
typename ParameterToConfigType< visr::pml::StringParameter >::ConfigType ParameterConfigType
Definition: parameter_input.hpp:49
Definition: communication_protocol_base.hpp:21
ParameterConfigBase const & parameterConfig() const
Definition: parameter_port_base.cpp:57
Definition: parameter_port_base.hpp:29
void setParameterConfig(ParameterConfigBase const &parameterConfig)
Definition: parameter_port_base.cpp:32
void setProtocol(CommunicationProtocolBase *protocol) override
Definition: parameter_input.hpp:98
Definition: parameter_type.hpp:27