vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
vspline::bf_grok_type< _delta_et, _target_et, _vsize > Struct Template Reference

If there are several differently-typed basis functors to be combined in a multi_bf_type object, we can erase their type, just like grok_type does for vspline::unary_functors. grokking a basis functor may cost a little bit of performance but it makes the code to handle multi_bf_types simple: instead of having to cope for several, potentially differently-typed per-axis functors there is only one type - which may be a bf_grok_type if the need arises to put differently-typed basis functors into the multi_bf_type. With this mechanism, the code to build evaluators can be kept simple (handling only one uniform type of basis functor used for all axes) and still use different basis functors. More...

#include <eval.h>

Public Types

enum  { vsize = _vsize }
 
typedef _delta_et delta_et
 
typedef _target_et target_et
 
typedef std::function< void(target_et *, const delta_et &) > e_eval_t
 
typedef vspline::simdized_type< delta_et, vsizedelta_vt
 
typedef vspline::simdized_type< target_et, vsizetarget_vt
 
typedef std::function< void(target_vt *, const delta_vt &) > v_eval_t
 

Public Member Functions

 bf_grok_type (const e_eval_t &_e_eval, const v_eval_t &_v_eval)
 
template<class grokkee_type >
 bf_grok_type (const grokkee_type &grokkee)
 
void operator() (target_et *p_trg, const delta_et &delta) const
 
void operator() (target_vt *p_trg, const delta_vt &delta) const
 

Public Attributes

const e_eval_t e_eval
 
const v_eval_t v_eval
 

Static Public Attributes

static const std::size_t degree
 

Detailed Description

template<typename _delta_et, typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
struct vspline::bf_grok_type< _delta_et, _target_et, _vsize >

If there are several differently-typed basis functors to be combined in a multi_bf_type object, we can erase their type, just like grok_type does for vspline::unary_functors. grokking a basis functor may cost a little bit of performance but it makes the code to handle multi_bf_types simple: instead of having to cope for several, potentially differently-typed per-axis functors there is only one type - which may be a bf_grok_type if the need arises to put differently-typed basis functors into the multi_bf_type. With this mechanism, the code to build evaluators can be kept simple (handling only one uniform type of basis functor used for all axes) and still use different basis functors.

Definition at line 184 of file eval.h.

Member Typedef Documentation

◆ delta_et

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef _delta_et vspline::bf_grok_type< _delta_et, _target_et, _vsize >::delta_et

Definition at line 188 of file eval.h.

◆ delta_vt

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef vspline::simdized_type< delta_et , vsize > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::delta_vt

Definition at line 202 of file eval.h.

◆ e_eval_t

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef std::function< void ( target_et * , const delta_et & ) > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::e_eval_t

Definition at line 197 of file eval.h.

◆ target_et

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef _target_et vspline::bf_grok_type< _delta_et, _target_et, _vsize >::target_et

Definition at line 189 of file eval.h.

◆ target_vt

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef vspline::simdized_type< target_et , vsize > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::target_vt

Definition at line 203 of file eval.h.

◆ v_eval_t

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
typedef std::function< void ( target_vt * , const delta_vt & ) > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::v_eval_t

Definition at line 208 of file eval.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
anonymous enum
Enumerator
vsize 

Definition at line 190 of file eval.h.

Constructor & Destructor Documentation

◆ bf_grok_type() [1/2]

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
vspline::bf_grok_type< _delta_et, _target_et, _vsize >::bf_grok_type ( const e_eval_t _e_eval,
const v_eval_t _v_eval 
)
inline

Definition at line 219 of file eval.h.

◆ bf_grok_type() [2/2]

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
template<class grokkee_type >
vspline::bf_grok_type< _delta_et, _target_et, _vsize >::bf_grok_type ( const grokkee_type grokkee)
inline

Definition at line 231 of file eval.h.

Member Function Documentation

◆ operator()() [1/2]

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
void vspline::bf_grok_type< _delta_et, _target_et, _vsize >::operator() ( target_et p_trg,
const delta_et delta 
) const
inline

Definition at line 241 of file eval.h.

◆ operator()() [2/2]

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
void vspline::bf_grok_type< _delta_et, _target_et, _vsize >::operator() ( target_vt p_trg,
const delta_vt delta 
) const
inline

Definition at line 246 of file eval.h.

Member Data Documentation

◆ degree

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
const std::size_t vspline::bf_grok_type< _delta_et, _target_et, _vsize >::degree
static

Definition at line 186 of file eval.h.

◆ e_eval

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
const e_eval_t vspline::bf_grok_type< _delta_et, _target_et, _vsize >::e_eval

Definition at line 214 of file eval.h.

◆ v_eval

template<typename _delta_et , typename _target_et = _delta_et, std::size_t _vsize = vspline::vector_traits < _delta_et > :: size>
const v_eval_t vspline::bf_grok_type< _delta_et, _target_et, _vsize >::v_eval

Definition at line 215 of file eval.h.


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