5 #ifndef LODESTAR_DELAYBLOCK_HPP
6 #define LODESTAR_DELAYBLOCK_HPP
8 #include <Lodestar/blocks/Block.hpp>
9 #include <Lodestar/aux/ArrayStack.hpp>
14 template<
typename TInput,
unsigned int NDelay=1>
34 void clear(TInput value)
36 fifoStack_.fill(value);
37 this->
template o<0>() = value;
40 void clear(TInput &value)
42 fifoStack_.fill(value);
43 this->
template o<0>() = value;
50 this->equation = ::std::bind(
53 ::std::placeholders::_1
57 void triggerFunction(
Base &b)
59 fifoStack_.
push(b.template i<0>().object);
60 b.template o<0>() = fifoStack_.
back();
65 template<
typename TInput,
unsigned int NDelay>
70 directFeedthrough = (NDelay < 1)
82 static const ::std::array<::std::string, kIns> inTypes;
83 static const ::std::array<::std::string, kOuts> outTypes;
84 static const ::std::array<::std::string, kPars> parTypes;
86 static const ::std::array<::std::string, 2> templateTypes;
89 template<
typename TInput,
unsigned int NDelay>
91 {demangle(
typeid(TInput).name())};
93 template<
typename TInput,
unsigned int NDelay>
94 const ::std::array<::std::string, BlockTraits<std::DelayBlock<TInput, NDelay>>::kOuts> BlockTraits<std::DelayBlock<TInput, NDelay>>::outTypes =
95 {demangle(
typeid(TInput).name())};
97 template<
typename TInput,
unsigned int NDelay>
98 const ::std::array<::std::string, BlockTraits<std::DelayBlock<TInput, NDelay>>::kPars> BlockTraits<std::DelayBlock<TInput, NDelay>>::parTypes =
101 template<
typename TInput,
unsigned int NDelay>
102 const ::std::array<::std::string, 2> BlockTraits<std::DelayBlock<TInput, NDelay>>::templateTypes =
103 {demangle(
typeid(TInput).name()),
"unsigned int"};
108 #endif //LODESTAR_DELAYBLOCK_HPP