vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
Classes | Namespaces | Typedefs | Enumerations | Variables
common.h File Reference

definitions common to all files in this project, utility code More...

#include <vigra/multi_array.hxx>
#include <vigra/tinyvector.hxx>
#include "vector.h"

Go to the source code of this file.

Classes

struct  vspline::invalid_scalar< T, sz >
 
struct  vspline::allocator_traits< T >
 vspline creates vigra::MultiArrays of vectorized types. As long as the vectorized types are Vc::SimdArray or vspline::simd_type, using std::allocator is fine, but when using other types, using a specific allocator may be necessary. Currently this is never the case, but I have the lookup of allocator type from this traits class in place if it should become necessary. More...
 
struct  vspline::not_implemented
 for interfaces which need specific implementations we use: More...
 
struct  vspline::dimension_mismatch
 dimension-mismatch is thrown if two arrays have different dimensions which should have the same dimensions. More...
 
struct  vspline::shape_mismatch
 shape mismatch is the exception which is thrown if the shapes of an input array and an output array do not match. More...
 
struct  vspline::not_supported
 exception which is thrown if an opertion is requested which vspline does not support More...
 
struct  vspline::out_of_bounds
 out_of_bounds is thrown by mapping mode REJECT for out-of-bounds coordinates this exception is left without a message, it only has a very specific application, and there it may be thrown often, so we don't want anything slowing it down. More...
 
struct  vspline::numeric_overflow
 exception which is thrown when assigning an rvalue which is larger than what the lvalue can hold More...
 

Namespaces

namespace  vspline
 

Typedefs

typedef long double vspline::xlf_type
 
template<typename T >
using vspline::ET = typename vigra::ExpandElementResult< T > ::type
 using definition for the 'elementary type' of a type via vigra's ExpandElementResult mechanism. Since this is a frequently used idiom in vspline but quite a mouthful, here's an abbreviation: More...
 
template<typename T >
using vspline::EN = typename std::integral_constant< int, vigra::ExpandElementResult< T > ::size > ::type
 produce a std::integral_constant from the size obtained from vigra's ExpandElementResult mechanism More...
 
template<class T >
using vspline::is_element_expandable = typename std::integral_constant< bool, ! std::is_same< typename vigra::ExpandElementResult< T > ::type, vigra::UnsuitableTypeForExpandElements > ::value > ::type
 is_element_expandable tests if a type T is known to vigra's ExpandElementResult mechanism. If this is so, the type is considered 'element-expandable'. More...
 
template<class T1 , class T2 >
using vspline::promote_type = typename vigra::PromoteTraits< T1, T2 > ::Promote
 
template<class T1 , class T2 >
using vspline::common_math_type = typename vigra::NumericTraits< promote_type< T1, T2 > > ::RealPromote
 
template<class T1 , class T2 >
using vspline::promote_ele_type = typename vigra::ExpandElementResult< promote_type< T1, T2 > > ::type
 
template<class T1 , class T2 >
using vspline::common_math_ele_type = typename vigra::NumericTraits< promote_ele_type< T1, T2 > > ::RealPromote
 
template<typename T , int N = EN < T > :: value>
using vspline::canonical_type = typename std::conditional< N==1, ET< T >, vigra::TinyVector< ET< T >, N > > ::type
 produce the 'canonical type' for a given type T. If T is single-channel, this will be the elementary type itself, otherwise it's a TinyVector of the elementary type. optionally takes the number of elements the resulting type should have, to allow construction from a fundamental and a number of channels. More...
 
template<typename T , int N = EN < T > :: value>
using vspline::synthetic_type = vigra::TinyVector< ET< T >, N >
 
template<class T , size_t sz = 1>
using vspline::scalar = typename std::conditional< sz==1, T, invalid_scalar< T, sz > > ::type
 definition of a scalar with the same template argument list as a simdized type, to use 'scalar' in the same syntactic slot More...
 
template<typename T , size_t SZ>
using vspline::tiny_vector = typename vigra::TinyVector< T, static_cast< int >(SZ) >
 

Enumerations

enum  vspline::bc_code {
  vspline::MIRROR , vspline::PERIODIC , vspline::REFLECT , vspline::NATURAL ,
  vspline::CONSTANT , vspline::ZEROPAD , vspline::GUESS , vspline::INVALID
}
 This enumeration is used for codes connected to boundary conditions. There are two aspects to boundary conditions: During prefiltering, the initial causal and anticausal coefficients have to be calculated in a way specific to the chosen boundary conditions. Bracing also needs these codes to pick the appropriate extrapolation code to extrapolate the coefficients beyond the core array. More...
 

Variables

const std::string vspline::bc_name []
 bc_name is for diagnostic output of bc codes More...
 

Detailed Description

definitions common to all files in this project, utility code

This file contains

It includes vspline/vector.h which defines vspline's use of vectorization (meaning SIMD operation) and associated types ans code.

Definition in file common.h.