NAP
parametersimple.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "parameter.h"
9 
10 // External Includes
11 #include <nap/signalslot.h>
12 
13 namespace nap
14 {
18  template<typename T>
19  class ParameterSimple : public Parameter
20  {
21  RTTI_ENABLE(Parameter)
22  public:
23 
29  virtual void setValue(const Parameter& value) override;
30 
36  void setValue(const T& value);
37 
41  const T& getValue() const;
42 
43  public:
44  T mValue;
46  };
47 
48 
50  // Simple Parameter Type Declarations
52 
55 
56 
58  // Template Definitions
60 
61  template<typename T>
63  {
64  const ParameterSimple<T>* derived_type = rtti_cast<const ParameterSimple<T>>(&value);
65  assert(derived_type != nullptr);
66  setValue(derived_type->mValue);
67  }
68 
69  template<typename T>
70  void nap::ParameterSimple<T>::setValue(const T& value)
71  {
72  if (value != mValue)
73  {
74  mValue = value;
75  valueChanged(mValue);
76  }
77  }
78 
79  template<typename T>
81  {
82  return mValue;
83  }
84 }
85 
89 #define DEFINE_SIMPLE_PARAMETER(Type) \
90  RTTI_BEGIN_CLASS(Type) \
91  RTTI_PROPERTY("Value", &Type::mValue, nap::rtti::EPropertyMetaData::Default) \
92  RTTI_FUNCTION("setValue", static_cast<void (Type::*)(const decltype(Type::mValue)&)>(&Type::setValue))\
93  RTTI_END_CLASS
nap::Parameter
Definition: parameter.h:20
nap::ParameterSimple::valueChanged
Signal< T > valueChanged
Signal that's raised when the value of this parameter changes.
Definition: parametersimple.h:45
nap::ParameterSimple::mValue
T mValue
Property: 'Value' the value of this parameter.
Definition: parametersimple.h:44
nap::Signal< T >
nap::ParameterSimple::getValue
const T & getValue() const
Definition: parametersimple.h:80
nap::ParameterSimple
Definition: parametersimple.h:19
nap
Definition: templateapp.h:17
nap::ParameterSimple::setValue
virtual void setValue(const Parameter &value) override
Definition: parametersimple.h:62