vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
|
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, vsize > | delta_vt |
typedef vspline::simdized_type< target_et, vsize > | target_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 |
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.
typedef _delta_et vspline::bf_grok_type< _delta_et, _target_et, _vsize >::delta_et |
typedef vspline::simdized_type< delta_et , vsize > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::delta_vt |
typedef std::function< void ( target_et * , const delta_et & ) > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::e_eval_t |
typedef _target_et vspline::bf_grok_type< _delta_et, _target_et, _vsize >::target_et |
typedef vspline::simdized_type< target_et , vsize > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::target_vt |
typedef std::function< void ( target_vt * , const delta_vt & ) > vspline::bf_grok_type< _delta_et, _target_et, _vsize >::v_eval_t |
anonymous enum |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
const e_eval_t vspline::bf_grok_type< _delta_et, _target_et, _vsize >::e_eval |
const v_eval_t vspline::bf_grok_type< _delta_et, _target_et, _vsize >::v_eval |