// This file is part of Eigen, a lightweight C++ template library // for linear algebra. // // Copyright (C) 2008 Gael Guennebaud <[email protected]> // Copyright (C) 2008 Benoit Jacob <[email protected]> // // This Source Code Form is subject to the terms of the Mozilla // Public License v. 2.0. If a copy of the MPL was not distributed // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. #ifndef EIGEN_STATIC_ASSERT_H #define EIGEN_STATIC_ASSERT_H /* Some notes on Eigen's static assertion mechanism: * * - in EIGEN_STATIC_ASSERT(CONDITION,MSG) the parameter CONDITION must be a compile time boolean * expression, and MSG an enum listed in struct internal::static_assertion<true> * * - currently EIGEN_STATIC_ASSERT can only be used in function scope * */ #ifndef EIGEN_STATIC_ASSERT #ifndef EIGEN_NO_STATIC_ASSERT #define EIGEN_STATIC_ASSERT(X, MSG) … #else // EIGEN_NO_STATIC_ASSERT #define EIGEN_STATIC_ASSERT … #endif // EIGEN_NO_STATIC_ASSERT #endif // EIGEN_STATIC_ASSERT // static assertion failing if the type \a TYPE is not a vector type #define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) … // static assertion failing if the type \a TYPE is not fixed-size #define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE) … // static assertion failing if the type \a TYPE is not dynamic-size #define EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE) … // static assertion failing if the type \a TYPE is not a vector type of the given size #define EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE) … // static assertion failing if the type \a TYPE is not a vector type of the given size #define EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS) … // static assertion failing if the two vector expression types are not compatible (same fixed-size or dynamic size) #define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0, TYPE1) … #define EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0, TYPE1) … #define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE) … // static assertion failing if it is guaranteed at compile-time that the two matrix expression types have different // sizes #define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0, TYPE1) … #define EIGEN_STATIC_ASSERT_SIZE_1x1(TYPE) … #define EIGEN_STATIC_ASSERT_LVALUE(Derived) … #define EIGEN_STATIC_ASSERT_ARRAYXPR(Derived) … #define EIGEN_STATIC_ASSERT_SAME_XPR_KIND(Derived1, Derived2) … // Check that a cost value is positive, and that is stay within a reasonable range // TODO this check could be enabled for internal debugging only #define EIGEN_INTERNAL_CHECK_COST_VALUE(C) … #endif // EIGEN_STATIC_ASSERT_H