VISR  0.11.8
Versatile Interactive Scene Renderer
component.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_COMPONENT_HPP_INCLUDED
4 #define VISR_COMPONENT_HPP_INCLUDED
5 
6 #include "constants.hpp"
7 
8 #include "export_symbols.hpp"
9 #include "status_message.hpp"
11 
12 #include <cstddef>
13 #include <string>
14 #include <sstream>
15 
16 namespace visr
17 {
18 
19 // Forward declaration(s)
20 class AudioPortBase;
21 class CompositeComponent;
22 class ParameterPortBase;
23 class SignalFlowContext;
24 
25 namespace impl
26 {
27 class ComponentImplementation;
28 }
29 
38 class VISR_CORE_LIBRARY_SYMBOL Component
39 {
40 public:
41 
51  explicit Component( SignalFlowContext const & context,
52  char const * componentName,
53  CompositeComponent * parent );
54 
65  explicit Component( SignalFlowContext const & context,
66  std::string const & componentName,
67  CompositeComponent * parent);
68 
72  Component( Component const & ) = delete;
73 
77  Component( Component && ) = delete;
78 
82  Component & operator=( Component const & ) = delete;
83 
87  Component & operator=( Component && ) = delete;
88 
92  static const std::string & nameSeparator();
93 
97  virtual ~Component();
98 
102  std::string const & name() const;
103 
107  std::string fullName() const;
108 
116  void status( StatusMessage::Kind status, char const * message );
117 
129  template<typename ... MessageArgs >
130  void status( StatusMessage::Kind status, MessageArgs ... args );
131 
136  bool isComposite() const;
137 
138  AudioPortBase& audioPort( char const * portName );
139 
140  AudioPortBase const& audioPort( char const * portName ) const;
141 
142  AudioPortBase& audioPort( std::string const & portName );
143 
144  AudioPortBase const& audioPort( std::string const & portName ) const;
145 
146 
147  ParameterPortBase& parameterPort( char const * portName );
148 
149  ParameterPortBase const& parameterPort( char const * portName ) const;
150 
151  ParameterPortBase& parameterPort( std::string const & portName );
152 
153  ParameterPortBase const& parameterPort( std::string const & portName ) const;
154 
155 
159  SamplingFrequencyType samplingFrequency() const;
160 
169  std::size_t period() const;
170 
172 
177  bool isTopLevel() const;
178 
185  impl::ComponentImplementation & implementation();
186 
193  impl::ComponentImplementation const & implementation() const;
194 
195 protected:
202  explicit Component( impl::ComponentImplementation * impl );
203 
204 private:
212 };
213 
214 // template method implementation.
215 template<typename ... MessageArgs >
216 inline void Component::status( StatusMessage::Kind statusId, MessageArgs ... args )
217 {
218  status( statusId, detail::composeMessageString( args ... ).c_str() );
219 }
220 
221 } // namespace visr
222 
223 #endif // #ifndef VISR_COMPONENT_HPP_INCLUDED
Kind
Definition: status_message.hpp:20
Definition: component_implementation.hpp:34
Definition: audio_port_base.hpp:28
void status(StatusMessage::Kind status, char const *message)
Definition: component.cpp:63
Definition: component.hpp:38
Definition: options.cpp:10
Definition: composite_component.hpp:29
Definition: signal_flow_context.hpp:15
Definition: parameter_port_base.hpp:29
std::size_t SamplingFrequencyType
Definition: constants.hpp:19