5 #ifndef LODESTAR_DIFFERENTIATORBLOCK_HPP
6 #define LODESTAR_DIFFERENTIATORBLOCK_HPP
9 #include "Lodestar/blocks/Block.hpp"
10 #include "Lodestar/aux/ArrayStack.hpp"
11 #include "Lodestar/primitives/differentiators/AdaptiveBackwardDifference.hpp"
16 template<
typename TInput,
unsigned int NHorizon=1,
typename TScalar =
float>
36 void clear(TInput value)
38 fifoStack_.fill(value);
39 this->
template o<0>() = value;
43 void clear(TInput &value)
45 fifoStack_.fill(value);
46 this->
template o<0>() = value;
50 TScalar &samplingPeriod()
52 return this->
template p<0>();
55 TScalar &samplingPeriod(
const TScalar t)
57 this->
template p<0>() = t;
58 return this->
template p<0>();
61 TScalar samplingPeriod()
const
63 return this->
template p<0>();
72 this->equation = ::std::bind(
75 ::std::placeholders::_1
79 void triggerFunction(
Base &b)
81 fifoStack_.
push(b.template i<0>().object);
82 if (fifoStack_.
size() > 1) {
89 template<
typename TInput,
unsigned int NDelay,
typename TScalar>
94 directFeedthrough = (NDelay > 0)
106 static const ::std::array<::std::string, kIns> inTypes;
107 static const ::std::array<::std::string, kOuts> outTypes;
108 static const ::std::array<::std::string, kPars> parTypes;
110 static const ::std::array<::std::string, 2> templateTypes;
113 template<
typename TInput,
unsigned int NDelay,
typename TScalar>
115 {demangle(
typeid(TInput).name())};
117 template<
typename TInput,
unsigned int NDelay,
typename TScalar>
118 const ::std::array<::std::string, BlockTraits<std::DifferentiatorBlock<TInput, NDelay, TScalar>>::kOuts> BlockTraits<std::DifferentiatorBlock<TInput, NDelay, TScalar>>::outTypes =
119 {demangle(
typeid(TInput).name())};
121 template<
typename TInput,
unsigned int NDelay,
typename TScalar>
122 const ::std::array<::std::string, BlockTraits<std::DifferentiatorBlock<TInput, NDelay, TScalar>>::kPars> BlockTraits<std::DifferentiatorBlock<TInput, NDelay, TScalar>>::parTypes =
123 {demangle(
typeid(TScalar).name())};
125 template<
typename TInput,
unsigned int NDelay,
typename TScalar>
126 const ::std::array<::std::string, 2> BlockTraits<std::DifferentiatorBlock<TInput, NDelay, TScalar>>::templateTypes =
127 {demangle(
typeid(TInput).name()),
"unsigned int"};
132 #endif //LODESTAR_DIFFERENTIATORBLOCK_HPP