mf
Media Framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
filter_parameter.h
Go to the documentation of this file.
1 #ifndef MF_FLOW_FILTER_PARAMETER_H_
2 #define MF_FLOW_FILTER_PARAMETER_H_
3 
4 #include "../common.h"
5 #include <functional>
6 #include <stdexcept>
7 
8 namespace mf { namespace flow {
9 
10 template<typename Value>
12 public:
13  using value_type = Value;
14  using function_type = Value(time_unit t);
15 
16 private:
17  std::function<function_type> function_;
18 
19  filter_parameter(const filter_parameter&) = delete;
20  filter_parameter& operator=(const filter_parameter&) = delete;
21 
22 public:
23  filter_parameter() = default;
24 
25  explicit filter_parameter(const Value& constant_value) {
26  set_constant(constant_value);
27  }
28 
29  bool is_defined() const noexcept { return !! function_; }
30 
31  value_type get(time_unit t) const {
32  if(! is_defined()) throw std::runtime_error("node parameter is undefined");
33  else return function_(t);
34  }
35 
36  void set_constant(const Value& constant_value) {
37  function_ = [constant_value](time_unit i) { return constant_value; };
38  }
39 
40  template<typename Function>
41  void set_time_function(Function&& func) {
42  function_ = func;
43  }
44 
45  void set_mirror(const filter_parameter& param) {
46  set_time_function([&param](time_unit t) { return param.get(t); });
47  }
48 
49  void unset() {
50  function_ = nullptr;
51  }
52 };
53 
54 }}
55 
56 #endif
std::ptrdiff_t time_unit
Discrete time unit type.
Definition: common.h:52
filter_parameter(const Value &constant_value)
Definition: filter_parameter.h:25
void set_mirror(const filter_parameter &param)
Definition: filter_parameter.h:45
Value value_type
Definition: filter_parameter.h:13
bool is_defined() const noexcept
Definition: filter_parameter.h:29
void set_constant(const Value &constant_value)
Definition: filter_parameter.h:36
void set_time_function(Function &&func)
Definition: filter_parameter.h:41
value_type get(time_unit t) const
Definition: filter_parameter.h:31
Value(time_unit t) function_type
Definition: filter_parameter.h:14
Definition: filter_parameter.h:11
void unset()
Definition: filter_parameter.h:49