aimstil  5.0.5
traits.h File Reference
#include <limits>
#include "boost/call_traits.hpp"
#include "boost/type_traits.hpp"
#include "boost/utility/enable_if.hpp"
#include "til/til_common.h"
#include "til/til_declarations.h"
#include "til/templateTools.h"
Include dependency graph for traits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  til::require_that< B >
 
class  til::require_that< true >
 
struct  til::precision< T >
 Numerical precision of the data for storage classes. More...
 
struct  til::change_precision< T, TNewPrecision >
 Changing the numerical precision of an object. More...
 
struct  til::combine< T1, T2 >
 Defines the return type of an operation between numbers of different types. More...
 
struct  til::value_type_of< T >
 Externalization of the standard value_type member typedef. More...
 
struct  til::value_type_of< T * >
 Specialization for pointers. More...
 
struct  til::value_type_of< T & >
 Specialization for references. More...
 
struct  til::value_type_of< None >
 Specialization for None type. More...
 
struct  til::deref< T >
 Type return by T when unitary T::operator*() is called. More...
 
struct  til::deref< T * >
 
struct  til::unary_detemplated_functor< TReturn >
 
struct  til::unary_detemplated_functor< TReturn >::result_type< T >
 
struct  til::range_of< T >
 
struct  til::range_of< const T >
 
struct  til::const_range_of< T >
 
struct  til::reference_of< T >
 Returns T::reference or T::const_reference, depending on the constness of T. More...
 
struct  til::opti< T >
 Return T is T is stateless^H^H^H^Hempty, otherwise boost::call_traits<T>::param_type. More...
 
struct  til::is_signed< T >
 
struct  til::is_integer< T >
 
struct  til::is_floating_point< T >
 
struct  til::accumulation_of< T >
 
struct  til::accumulation_of< float >
 

Namespaces

 til
 Belongs to package Box Do not include directly, include til/Box.h instead.
 

Macros

#define TIL_COMMA   ,
 
#define TIL_DEFINE_PRECISION_FOR_NUMERIC_TYPES(argtype)
 Specialization for numerical types. More...
 
#define DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, targs)
 
#define DEFINE_PRECISION_RECURSIVE_SPECIALIZATION(argtype)   DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, typename T)
 
#define TIL_DEFINE_CHANGE_PRECISION_FOR_NUMERIC_TYPES(argtype)
 
#define TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, targs)
 
#define TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION(argtype)   TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, typename T)
 

Functions

 til::TIL_FOR_ALL_NUMERIC_TYPES (TIL_DEFINE_PRECISION_FOR_NUMERIC_TYPES)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (ImageC< T >)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (ImageNC< T >)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (ImageRLE< T >)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T (numeric_array< T TIL_COMMA D >, typename T TIL_COMMA std::size_t D)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T (sparse_vector< T TIL_COMMA BaselinePolicy >, typename T TIL_COMMA typename BaselinePolicy)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (Matrix3< T >)
 
 til::DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (SymMatrix3< T >)
 
 til::TIL_FOR_ALL_NUMERIC_TYPES (TIL_DEFINE_CHANGE_PRECISION_FOR_NUMERIC_TYPES)
 
 til::TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (ImageC< T >)
 
 til::TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (ImageNC< T >)
 
 til::TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (ImageRLE< T >)
 
 til::TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (Matrix3< T >)
 
 til::TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (SymMatrix3< T >)
 

Macro Definition Documentation

◆ DEFINE_PRECISION_RECURSIVE_SPECIALIZATION

#define DEFINE_PRECISION_RECURSIVE_SPECIALIZATION (   argtype)    DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, typename T)

Definition at line 73 of file traits.h.

◆ DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T

#define DEFINE_PRECISION_RECURSIVE_SPECIALIZATION_T (   argtype,
  targs 
)
Value:
template < targs > \
struct precision< argtype > \
{ typedef typename precision<T>::type type; } \

Definition at line 68 of file traits.h.

◆ TIL_COMMA

#define TIL_COMMA   ,

Definition at line 19 of file traits.h.

◆ TIL_DEFINE_CHANGE_PRECISION_FOR_NUMERIC_TYPES

#define TIL_DEFINE_CHANGE_PRECISION_FOR_NUMERIC_TYPES (   argtype)
Value:
template < typename TNewPrecision > \
struct change_precision< argtype, TNewPrecision > \
{ \
typedef TNewPrecision type; \
private: \
typedef typename enable_if_c<std::numeric_limits<TNewPrecision>::is_specialized>::type CheckIsNumeric; \
}; \

Definition at line 110 of file traits.h.

◆ TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION

#define TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION (   argtype)    TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION_T(argtype, typename T)

Definition at line 136 of file traits.h.

◆ TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION_T

#define TIL_DEFINE_CHANGE_PRECISION_RECURSIVE_SPECIALIZATION_T (   argtype,
  targs 
)
Value:
template < targs , typename TNewPrecision> \
struct change_precision< argtype , TNewPrecision> \
{ \
typedef typename change_precision<T, TNewPrecision>::type type; \
private: \
typedef typename enable_if_c<std::numeric_limits<TNewPrecision>::is_specialized>::type CheckIsNumeric; \
}; \

Definition at line 126 of file traits.h.

◆ TIL_DEFINE_PRECISION_FOR_NUMERIC_TYPES

#define TIL_DEFINE_PRECISION_FOR_NUMERIC_TYPES (   argtype)
Value:
template <> \
struct precision< argtype > \
{ typedef argtype type; };

Specialization for numerical types.

Definition at line 51 of file traits.h.