Lodestar
An integrated real-time control package in C++
ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv > Class Template Reference

Multiplies input by a value (gain). More...

#include <GainBlock.hpp>

Inheritance diagram for ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >:
[legend]
Collaboration diagram for ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >:
[legend]

Public Types

using OutputTrait = typename ::std::conditional< TOps !=GainBlockOperator::Right, ls::aux::TemplateTraits::BinaryOperators::isMultiplicable< TGain, TInput >, ls::aux::TemplateTraits::BinaryOperators::isMultiplicable< TInput, TGain > >::type
 Output type trait.
 
using SanitizedOutputTrait = typename ls::aux::TemplateTraits::BinaryOperators::sanitizeTypeMultiplicable< typename OutputTrait::returnType >
 Sanitized output type trait.
 
using OutputType = OUTPUT_GAINBLOCK()
 Output type.
 
using GainTrait = ls::aux::TemplateTraits::BinaryOperators::parseMatrixLike< TGain >
 Gain type trait.
 
using InputTrait = ls::aux::TemplateTraits::BinaryOperators::parseMatrixLike< TInput >
 Input type trait.
 
using Base = Block< ::std::tuple< TInput >, ::std::tuple< OutputType >, ::std::tuple< TGain, double > >
 Base Block class type alias.
 
using Ops = GainBlockOperator
 Utility type alias for GainBlockOperator.
 
using Conv = GainBlockConvolutionMode
 Utility type alias for GainBlockOperator.
 
- Public Types inherited from ls::blocks::BlockBase< Block< ::std::tuple< TInput >, ::std::tuple< OUTPUT_GAINBLOCK()>, ::std::tuple< TInput, double > > >
using empty = std::tuple<>
 
- Public Types inherited from ls::blocks::BlockProto
using empty = std::tuple<>
 

Public Member Functions

 GainBlock ()
 
 GainBlock (const TGain &gain)
 
void setGain (const TGain &gain)
 
const TGain & getGain () const
 
typename ::std::tuple_element< 0, typename Base::Params >::type & gain ()
 
const typename ::std::tuple_element< 0, typename Base::Params >::type & gain () const
 
typename ::std::tuple_element< 1, typename Base::Params >::type & constantVal ()
 
const typename ::std::tuple_element< 1, typename Base::Params >::type & constantVal () const
 
const ::std::array< GiNaC::ex, Base::kIns > & inputSymbols ()
 
const ::std::array< GiNaC::ex, Base::kOuts > & outputSymbols ()
 
const ::std::array< GiNaC::ex, Base::kPars > & parameterSymbols ()
 
- Public Member Functions inherited from ls::blocks::BlockBase< Block< ::std::tuple< TInput >, ::std::tuple< OUTPUT_GAINBLOCK()>, ::std::tuple< TInput, double > > >
void trigger () override
 Number of parameter slots. More...
 
- Public Member Functions inherited from ls::blocks::BlockProto
void setPriority (int prio)
 
int getPriority () const
 
const GiNaC::function blkf (const ::std::vector< GiNaC::ex > &exvec, bool appendId=true)
 

Static Public Attributes

static constexpr Ops Left = Ops::Left
 Utility alias for left multiplication.
 
static constexpr Ops Right = Ops::Right
 Utility alias for right multiplication.
 
static constexpr Ops Convolution = Ops::Convolution
 Utility alias for convolution.
 
static constexpr Ops ElementWise = Ops::ElementWise
 Utility alias for elementwise multiplication.
 
static constexpr Conv Reflect = Conv::Reflect
 Utility alias for reflect convolution mode.
 
static constexpr Conv Constant = Conv::Constant
 Utility alias for constant convolution mode.
 
static constexpr Conv Nearest = Conv::Nearest
 Utility alias for nearest convolution mode.
 
static constexpr Conv Mirror = Conv::Mirror
 Utility alias for mirror convolution mode.
 
static constexpr Conv Wrap = Conv::Wrap
 Utility alias for wrap convolution mode.
 
- Static Public Attributes inherited from ls::blocks::BlockProto
static int objects_created = 0
 
static int objects_alive = 0
 

Protected Member Functions

template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Left >::type * = nullptr>
void bindEquation ()
 Sets trigger function for non-right multiplication TOps. More...
 
template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Right >::type * = nullptr>
void bindEquation ()
 Sets trigger function for right multiplication TOps. More...
 
template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Convolution >::type * = nullptr>
void bindEquation ()
 Sets trigger function for convolution TOps. More...
 

Static Protected Member Functions

template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Reflect))>::type * = nullptr>
static void convolve (Base &b)
 
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Constant))>::type * = nullptr>
static void convolve (Base &b)
 
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Nearest))>::type * = nullptr>
static void convolve (Base &b)
 
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Mirror))>::type * = nullptr>
static void convolve (Base &b)
 
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Wrap))>::type * = nullptr>
static void convolve (Base &b)
 

Additional Inherited Members

- Public Attributes inherited from ls::blocks::BlockProto
std::vector< SignalBase * > inputPointers {}
 Utility using declaration for empty slot bank.
 
std::vector< SignalBase * > outputPointers {}
 Vector of input signal pointers.
 
const unsigned int id
 Vector of output signal pointers.
 
unsigned int ins
 Unique Block ID.
 
unsigned int outs
 Number of input slots.
 
unsigned int pars
 Number of output slots.
 
unsigned serial
 
- Protected Attributes inherited from ls::blocks::BlockProto
int prio_ = -1
 

Detailed Description

template<typename TInput, typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
class ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >

Multiplies input by a value (gain).

The output type is derived from TInput and TGain, as well as the type of multiplication through TOps.

The following operation types are available:

The following convolution modes are available:

This class raises static_asserts if the gain and input are not multiplicable.

Note
This class is derived from Block implementation.
Template Parameters
TInputInput type.
TGainGain type.
TOpsMultiplication type.
TConvConvolution mode.

Constructor & Destructor Documentation

◆ GainBlock() [1/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::GainBlock ( )
inline

Default constructor.

◆ GainBlock() [2/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::GainBlock ( const TGain &  gain)
inline

Constructor with gain parameter setting.

Parameters
gainGain to be set.

Member Function Documentation

◆ bindEquation() [1/3]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Left >::type * = nullptr>
void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::bindEquation ( )
inlineprotected

Sets trigger function for non-right multiplication TOps.

Template Parameters
TTOpsShadows TOps.
Returns
void if active.

◆ bindEquation() [2/3]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Right >::type * = nullptr>
void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::bindEquation ( )
inlineprotected

Sets trigger function for right multiplication TOps.

Template Parameters
TTOpsShadows TOps.
Returns
void if active.

◆ bindEquation() [3/3]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, typename ::std::enable_if< TTOps==Convolution >::type * = nullptr>
void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::bindEquation ( )
inlineprotected

Sets trigger function for convolution TOps.

Template Parameters
TTOpsShadows TOps.
Returns
void if active.

◆ constantVal() [1/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
typename ::std::tuple_element<1, typename Base::Params>::type& ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::constantVal ( )
inline

Returns reference to constant value (used when GainBlockConvolutionMode is Constant).

Returns
Reference to constant value.

◆ constantVal() [2/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
const typename ::std::tuple_element<1, typename Base::Params>::type& ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::constantVal ( ) const
inline

Returns const reference to constant value (used when GainBlockConvolutionMode is Constant).

Returns
Const reference to constant value.

◆ convolve() [1/5]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Reflect))>::type * = nullptr>
static void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::convolve ( Base b)
inlinestaticprotected

Convolution function with reflection boundary condition.

Template Parameters
TTOpsCopy of TOps
TTConvCopy of TConv
Parameters
bBase block object.

◆ convolve() [2/5]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Constant))>::type * = nullptr>
static void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::convolve ( Base b)
inlinestaticprotected

Convolution function with constant boundary condition.

Template Parameters
TTOpsCopy of TOps
TTConvCopy of TConv
Parameters
bBase block object.

◆ convolve() [3/5]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Nearest))>::type * = nullptr>
static void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::convolve ( Base b)
inlinestaticprotected

Convolution function with nearest boundary condition.

Template Parameters
TTOpsCopy of TOps
TTConvCopy of TConv
Parameters
bBase block object.

◆ convolve() [4/5]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Mirror))>::type * = nullptr>
static void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::convolve ( Base b)
inlinestaticprotected

Convolution function with mirror boundary condition.

Template Parameters
TTOpsCopy of TOps
TTConvCopy of TConv
Parameters
bBase block object.

◆ convolve() [5/5]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
template<GainBlockOperator TTOps = TOps, GainBlockConvolutionMode TTConv = TConv, typename ::std::enable_if<((TTOps==Convolution) &&(TTConv==Wrap))>::type * = nullptr>
static void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::convolve ( Base b)
inlinestaticprotected

Convolution function with wrap boundary condition.

Template Parameters
TTOpsCopy of TOps
TTConvCopy of TConv
Parameters
bBase block object.

◆ gain() [1/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
typename ::std::tuple_element<0, typename Base::Params>::type& ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::gain ( )
inline

Returns reference to gain.

Returns
Reference to gain.

◆ gain() [2/2]

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
const typename ::std::tuple_element<0, typename Base::Params>::type& ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::gain ( ) const
inline

Returns const reference to gain.

Returns
Const reference to gain.

◆ getGain()

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
const TGain& ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::getGain ( ) const
inline

Returns const reference to gain.

Returns
Const reference to gain.

◆ setGain()

template<typename TInput , typename TGain = TInput, GainBlockOperator TOps = GainBlockOperator::Left, GainBlockConvolutionMode TConv = GainBlockConvolutionMode::Reflect>
void ls::blocks::std::GainBlock< TInput, TGain, TOps, TConv >::setGain ( const TGain &  gain)
inline

Sets gain.

Parameters
gainGain to be set.

The documentation for this class was generated from the following file: