vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
Public Types | Public Member Functions | Public Attributes | List of all members
vspline::chain_type< T1, T2 > Struct Template Reference

class chain_type is a helper class to pass one unary functor's result as argument to another one. We rely on T1 and T2 to provide a few of the standard types used in unary functors. Typically, T1 and T2 will both be vspline::unary_functors, but the type requirements could also be fulfilled 'manually'. More...

#include <unary_functor.h>

Inheritance diagram for vspline::chain_type< T1, T2 >:
vspline::unary_functor< T1::in_type, T2::out_type, T1::vsize > vspline::callable< chain_type< T1, T2 >, T1::in_type, T2::out_type, T1::vsize > vspline::unary_functor_tag< _vsize >

Public Types

enum  { vsize = T1::vsize }
 
typedef vspline::unary_functor< typename T1::in_type, typename T2::out_type, vsizebase_type
 
typedef T1::out_type intermediate_type
 
typedef T1::out_v intermediate_v
 
typedef IN in_type
 
typedef OUT out_type
 
typedef vector_traits< IN, vsize >::type in_v
 vectorized in_type and out_type. vspline::vector_traits supplies these types so that multidimensional/multichannel data come as vigra::TinyVectors, while 'singular' data won't be made into TinyVectors of one element. More...
 
typedef vector_traits< OUT, vsize >::type out_v
 
- Public Types inherited from vspline::unary_functor< T1::in_type, T2::out_type, T1::vsize >
enum  
 
enum  
 
enum  
 
typedef T1::in_type in_type
 
typedef T2::out_type out_type
 
typedef vspline::vector_traits< T1::in_type >::ele_type in_ele_type
 
typedef vspline::vector_traits< T2::out_type >::ele_type out_ele_type
 
typedef vigra::TinyVector< in_ele_type, dim_inin_nd_ele_type
 
typedef vigra::TinyVector< out_ele_type, dim_outout_nd_ele_type
 
typedef vector_traits< T1::in_type, vsize >::ele_v in_ele_v
 a simdized type of the elementary type of result_type, which is used for coefficients and results. this is fixed via the traits class vector_traits (in vector.h). Note how we derive this type using vsize from the template argument, not what vspline::vector_traits deems appropriate for ele_type - though both numbers will be the same in most cases. More...
 
typedef vector_traits< T2::out_type, vsize >::ele_v out_ele_v
 
typedef vector_traits< T1::in_type, vsize >::nd_ele_v in_nd_ele_v
 
typedef vector_traits< T2::out_type, vsize >::nd_ele_v out_nd_ele_v
 
typedef vector_traits< T1::in_type, vsize >::type in_v
 vectorized in_type and out_type. vspline::vector_traits supplies these types so that multidimensional/multichannel data come as vigra::TinyVectors, while 'singular' data won't be made into TinyVectors of one element. More...
 
typedef vector_traits< T2::out_type, vsize >::type out_v
 
typedef vector_traits< int, vsize >::ele_v ic_v
 vsize wide vector of ints, used for gather/scatter indexes More...
 
- Public Types inherited from vspline::callable< chain_type< T1, T2 >, T1::in_type, T2::out_type, T1::vsize >
typedef vector_traits< T1::in_type, vsize >::type cl_in_v
 
typedef vector_traits< T2::out_type, vsize >::type cl_out_v
 

Public Member Functions

 chain_type (const T1 &_t1, const T2 &_t2)
 
void eval (const in_type &argument, out_type &result) const
 
template<typename = std::enable_if < ( vsize > 1 ) >>
void eval (const in_v &argument, out_v &result) const
 
- Public Member Functions inherited from vspline::callable< chain_type< T1, T2 >, T1::in_type, T2::out_type, T1::vsize >
T2::out_type operator() (const T1::in_type &in) const
 
T2::out_type operator() (const T1::in_type &in)
 
cl_out_v operator() (const cl_in_v &in) const
 
cl_out_v operator() (const cl_in_v &in)
 

Public Attributes

const T1 t1
 
const T2 t2
 

Additional Inherited Members

- Static Public Attributes inherited from vspline::unary_functor< T1::in_type, T2::out_type, T1::vsize >
static const bool has_capped_eval
 

Detailed Description

template<typename T1, typename T2>
struct vspline::chain_type< T1, T2 >

class chain_type is a helper class to pass one unary functor's result as argument to another one. We rely on T1 and T2 to provide a few of the standard types used in unary functors. Typically, T1 and T2 will both be vspline::unary_functors, but the type requirements could also be fulfilled 'manually'.

Note how callability is introduced via the mixin 'vspline::callable'. The inheritance definition looks confusing, the template arg list reads as: 'the derived class, followed by the arguments needed to determine the call signature(s)'. See vspline::callable above.

Definition at line 514 of file unary_functor.h.

Member Typedef Documentation

◆ base_type

template<typename T1 , typename T2 >
typedef vspline::unary_functor< typename T1::in_type , typename T2::out_type , vsize > vspline::chain_type< T1, T2 >::base_type

Definition at line 531 of file unary_functor.h.

◆ in_type

template<typename T1 , typename T2 >
typedef IN vspline::unary_functor< IN, OUT, _vsize >::in_type

Definition at line 208 of file unary_functor.h.

◆ in_v

template<typename T1 , typename T2 >
typedef vector_traits<IN,vsize>::type vspline::unary_functor< IN, OUT, _vsize >::in_v

vectorized in_type and out_type. vspline::vector_traits supplies these types so that multidimensional/multichannel data come as vigra::TinyVectors, while 'singular' data won't be made into TinyVectors of one element.

Definition at line 254 of file unary_functor.h.

◆ intermediate_type

template<typename T1 , typename T2 >
typedef T1::out_type vspline::chain_type< T1, T2 >::intermediate_type

Definition at line 546 of file unary_functor.h.

◆ intermediate_v

template<typename T1 , typename T2 >
typedef T1::out_v vspline::chain_type< T1, T2 >::intermediate_v

Definition at line 547 of file unary_functor.h.

◆ out_type

template<typename T1 , typename T2 >
typedef OUT vspline::unary_functor< IN, OUT, _vsize >::out_type

Definition at line 209 of file unary_functor.h.

◆ out_v

template<typename T1 , typename T2 >
typedef vector_traits<OUT,vsize>::type vspline::unary_functor< IN, OUT, _vsize >::out_v

Definition at line 255 of file unary_functor.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename T1 , typename T2 >
anonymous enum
Enumerator
vsize 

Definition at line 527 of file unary_functor.h.

Constructor & Destructor Documentation

◆ chain_type()

template<typename T1 , typename T2 >
vspline::chain_type< T1, T2 >::chain_type ( const T1 &  _t1,
const T2 &  _t2 
)
inline

Definition at line 556 of file unary_functor.h.

Member Function Documentation

◆ eval() [1/2]

template<typename T1 , typename T2 >
void vspline::chain_type< T1, T2 >::eval ( const in_type argument,
out_type result 
) const
inline

Definition at line 564 of file unary_functor.h.

◆ eval() [2/2]

template<typename T1 , typename T2 >
template<typename = std::enable_if < ( vsize > 1 ) >>
void vspline::chain_type< T1, T2 >::eval ( const in_v argument,
out_v result 
) const
inline

Definition at line 573 of file unary_functor.h.

Member Data Documentation

◆ t1

template<typename T1 , typename T2 >
const T1 vspline::chain_type< T1, T2 >::t1

Definition at line 551 of file unary_functor.h.

◆ t2

template<typename T1 , typename T2 >
const T2 vspline::chain_type< T1, T2 >::t2

Definition at line 552 of file unary_functor.h.


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