STK++ 0.9.13
STK_StaticAssert.h File Reference

In this file we define a StaticAssert convenience structure for error checking at compile time. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  STK::StaticAssert< condition >
 
struct  STK::StaticAssert< false >
 
struct  STK::StaticAssert< true >
 

Namespaces

namespace  STK
 The namespace STK is the main domain space of the Statistical ToolKit project.
 

Macros

#define STK_SINGLE_ARG2(A, B)   A,B
 
#define STK_SINGLE_ARG3(A, B, C)   A,B,C
 
#define STK_SINGLE_ARG4(A, B, C, D)   A,B,C,D
 
#define STK_SINGLE_ARG5(A, B, C, D, E)   A,B,C,D,E
 
#define STK_STATIC_ASSERT(COND, MSG)   if (STK::StaticAssert<COND>::MSG) {}
 
#define STK_STATIC_ASSERT_SAME_ORIENTATION(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_REFERENCE_WITH_A_DIFFERENT_ORIENTATION)
 
#define STK_STATIC_ASSERT_DIMENSIONS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_METHOD_BETWEEN_NOT_COMPATIBLE_ARRAYS)
 
#define STK_STATIC_ASSERT_SQUARE_SIZES_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_SQUAREMATRIX_WITH_DIFFERENT_DIMENSIONS)
 
#define STK_STATIC_ASSERT_VECTOR_SIZECOLS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_VECTOR_WITH_MORE_THAN_ONE_COLUM)
 
#define STK_STATIC_ASSERT_POINT_SIZEROWS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_POINT_WITH_MORE_THAN_ONE_ROW)
 
#define STK_STATIC_ASSERT_SCALAR_SIZE_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_SCALAR_WITH_MORE_THAN_ONE_ROW_OR_ONE_COLUMN)
 
#define STK_STATIC_ASSERT_ROWS_DIMENSIONS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_ROWS_SIZE)
 
#define STK_STATIC_ASSERT_COLS_DIMENSIONS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_COLS_SIZE)
 
#define STK_STATIC_ASSERT_BINARY_OPERATOR_DIMENSIONS_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_DIMENSIONS_SIZE)
 
#define STK_STATIC_ASSERT_BINARY_OPERATOR_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_BETWEEN_NOT_COMPATIBLE_ARRAYS)
 
#define STK_STATIC_ASSERT_PRODUCT_OPERATOR_MISMATCH(COND)    STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_PRODUCT_OPERATOR_BETWEEN_NOT_COMPATIBLE_ARRAYS)
 
#define STK_STATIC_ASSERT_TWO_DIMENSIONS_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_ONE_DIMENSION_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_SAME_ORIENT(LHS, RHS)
 
#define STK_STATIC_ASSERT_DENSE_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_POINT_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_VECTOR_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_POINT_OR_VECTOR_ONLY(EXPR)
 
#define STK_STATIC_ASSERT_ZERO_DIMENSION_ONLY(EXPR)
 

Detailed Description

In this file we define a StaticAssert convenience structure for error checking at compile time.

Definition in file STK_StaticAssert.h.

Macro Definition Documentation

◆ STK_SINGLE_ARG2

#define STK_SINGLE_ARG2 (   A,
 
)    A,B

Definition at line 40 of file STK_StaticAssert.h.

◆ STK_SINGLE_ARG3

#define STK_SINGLE_ARG3 (   A,
  B,
 
)    A,B,C

Definition at line 41 of file STK_StaticAssert.h.

◆ STK_SINGLE_ARG4

#define STK_SINGLE_ARG4 (   A,
  B,
  C,
 
)    A,B,C,D

Definition at line 42 of file STK_StaticAssert.h.

◆ STK_SINGLE_ARG5

#define STK_SINGLE_ARG5 (   A,
  B,
  C,
  D,
 
)    A,B,C,D,E

Definition at line 43 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT

#define STK_STATIC_ASSERT (   COND,
  MSG 
)    if (STK::StaticAssert<COND>::MSG) {}

Definition at line 95 of file STK_StaticAssert.h.

96 {}

◆ STK_STATIC_ASSERT_BINARY_OPERATOR_DIMENSIONS_MISMATCH

#define STK_STATIC_ASSERT_BINARY_OPERATOR_DIMENSIONS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_DIMENSIONS_SIZE)

Definition at line 130 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_BINARY_OPERATOR_MISMATCH

#define STK_STATIC_ASSERT_BINARY_OPERATOR_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_BETWEEN_NOT_COMPATIBLE_ARRAYS)

Definition at line 133 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_COLS_DIMENSIONS_MISMATCH

#define STK_STATIC_ASSERT_COLS_DIMENSIONS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_COLS_SIZE)

Definition at line 127 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_DENSE_ONLY

#define STK_STATIC_ASSERT_DENSE_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( int(hidden::Traits<EXPR>::storage_) == int(Arrays::dense_) \
,YOU_TRIED_CALLING_A_DENSE_METHOD_ON_SPARSE_STORAGE)
#define STK_STATIC_ASSERT(COND, MSG)

Definition at line 162 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_DIMENSIONS_MISMATCH

#define STK_STATIC_ASSERT_DIMENSIONS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_METHOD_BETWEEN_NOT_COMPATIBLE_ARRAYS)

Definition at line 109 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_ONE_DIMENSION_ONLY

#define STK_STATIC_ASSERT_ONE_DIMENSION_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( ( int(hidden::Traits<EXPR>::structure_) == int(Arrays::vector_)) \
||( int(hidden::Traits<EXPR>::structure_) == int(Arrays::point_)) \
||( int(hidden::Traits<EXPR>::structure_) == int(Arrays::diagonal_)) \
||( int(hidden::Traits<EXPR>::structure_) == int(Arrays::number_)) \
,YOU_CANNOT_USED_AN_UNIDIMENSIONAL_METHOD_ON_THIS_OBJECT)

Definition at line 151 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_POINT_ONLY

#define STK_STATIC_ASSERT_POINT_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( int(hidden::Traits<EXPR>::structure_) == int(Arrays::point_) \
,YOU_TRIED_CALLING_A_POINT_METHOD_ON_SOMETHING_ELSE)

Definition at line 166 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_POINT_OR_VECTOR_ONLY

#define STK_STATIC_ASSERT_POINT_OR_VECTOR_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( STK_SINGLE_ARG2(hidden::IsEqual< int(hidden::Traits<EXPR>::structure_), int(Arrays::vector_)>::value_) \
||STK_SINGLE_ARG2(hidden::IsEqual< int(hidden::Traits<EXPR>::structure_), int(Arrays::point_)>::value_) \
,YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_SOMETHING_ELSE)
#define STK_SINGLE_ARG2(A, B)

Definition at line 174 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_POINT_SIZEROWS_MISMATCH

#define STK_STATIC_ASSERT_POINT_SIZEROWS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_POINT_WITH_MORE_THAN_ONE_ROW)

Definition at line 118 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_PRODUCT_OPERATOR_MISMATCH

#define STK_STATIC_ASSERT_PRODUCT_OPERATOR_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_PRODUCT_OPERATOR_BETWEEN_NOT_COMPATIBLE_ARRAYS)

Definition at line 136 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_ROWS_DIMENSIONS_MISMATCH

#define STK_STATIC_ASSERT_ROWS_DIMENSIONS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_APPLY_A_BINARY_OPERATOR_WITH_WRONG_ROWS_SIZE)

Definition at line 124 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_SAME_ORIENT

#define STK_STATIC_ASSERT_SAME_ORIENT (   LHS,
  RHS 
)
Value:
STK_STATIC_ASSERT( int(hidden::Traits<LHS>::structure_)== int(hidden::Traits<RHS>::structure_) \
,YOU_HAVE_TO_USE_TWO_ARRAYS_WITH_THE_SAME_ORIENTATION)

Definition at line 158 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_SAME_ORIENTATION

#define STK_STATIC_ASSERT_SAME_ORIENTATION (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_REFERENCE_WITH_A_DIFFERENT_ORIENTATION)

Definition at line 106 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_SCALAR_SIZE_MISMATCH

#define STK_STATIC_ASSERT_SCALAR_SIZE_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_SCALAR_WITH_MORE_THAN_ONE_ROW_OR_ONE_COLUMN)

Definition at line 121 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_SQUARE_SIZES_MISMATCH

#define STK_STATIC_ASSERT_SQUARE_SIZES_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_SQUAREMATRIX_WITH_DIFFERENT_DIMENSIONS)

Definition at line 112 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_TWO_DIMENSIONS_ONLY

#define STK_STATIC_ASSERT_TWO_DIMENSIONS_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( ((int(hidden::Traits<EXPR>::structure_)==(int)Arrays::array2D_)) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::square_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::diagonal_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::number_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::lower_triangular_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::upper_triangular_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::symmetric_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::lower_symmetric_) \
||(int(hidden::Traits<EXPR>::structure_)==(int)Arrays::upper_symmetric_) \
,YOU_TRIED_CALLING_A_MATRIX_METHOD_ON_A_VECTOR)

Definition at line 139 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_VECTOR_ONLY

#define STK_STATIC_ASSERT_VECTOR_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT( int(hidden::Traits<EXPR>::structure_) == int(Arrays::vector_) \
,YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_SOMETHING_ELSE)

Definition at line 170 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_VECTOR_SIZECOLS_MISMATCH

#define STK_STATIC_ASSERT_VECTOR_SIZECOLS_MISMATCH (   COND)     STK_STATIC_ASSERT(COND,YOU_TRIED_TO_CONSTRUCT_A_VECTOR_WITH_MORE_THAN_ONE_COLUM)

Definition at line 115 of file STK_StaticAssert.h.

◆ STK_STATIC_ASSERT_ZERO_DIMENSION_ONLY

#define STK_STATIC_ASSERT_ZERO_DIMENSION_ONLY (   EXPR)
Value:
STK_STATIC_ASSERT(STK_SINGLE_ARG2(hidden::IsEqual< int(hidden::Traits<EXPR>::structure_), int(Arrays::number_)>::value_) \
,YOU_CANNOT_USED_A_ZERODIMENSIONAL_METHOD_ON_THIS_OBJECT)

Definition at line 179 of file STK_StaticAssert.h.