diff --git a/include/GooseFEM/config.h b/include/GooseFEM/config.h index 1da7d10..9965b48 100644 --- a/include/GooseFEM/config.h +++ b/include/GooseFEM/config.h @@ -1,155 +1,153 @@ /** Basic configuration: - Include general dependencies. - Define assertions. -- Define version. -- Define git commit hash/branch. \file config.h \copyright Copyright 2017. Tom de Geus. All rights reserved. \license This project is released under the GNU Public License (GPLv3). */ #ifndef GOOSEFEM_CONFIG_H #define GOOSEFEM_CONFIG_H /** \cond */ #define _USE_MATH_DEFINES // to use "M_PI" from "math.h" /** \endcond */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** \cond */ using namespace xt::placeholders; #define Q(x) #x #define QUOTE(x) Q(x) #define UNUSED(p) ((void)(p)) #define GOOSEFEM_WARNING_IMPL(message, file, line) \ std::cout << \ std::string(file) + ':' + std::to_string(line) + \ ": " message ") \n\t"; \ #define GOOSEFEM_ASSERT_IMPL(expr, file, line) \ if (!(expr)) { \ throw std::runtime_error( \ std::string(file) + ':' + std::to_string(line) + \ ": assertion failed (" #expr ") \n\t"); \ } /** \endcond */ /** All assertions are implementation as:: GOOSEFEM_ASSERT(...) They can be enabled by:: #define GOOSEFEM_ENABLE_ASSERT (before including GooseFEM). The advantage is that: - File and line-number are displayed if the assertion fails. - GooseFEM's assertions can be enabled/disabled independently from those of other libraries. \throw std::runtime_error */ #ifdef GOOSEFEM_ENABLE_ASSERT #define GOOSEFEM_ASSERT(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__) #else #define GOOSEFEM_ASSERT(expr) #endif /** Assertion that cannot be switched off. Implement assertion by:: GOOSEFEM_CHECK(...) \throw std::runtime_error */ #define GOOSEFEM_CHECK(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__) /** Assertion that concerns temporary implementation limitations. Implement assertion by:: GOOSEFEM_WIP_ASSERT(...) \throw std::runtime_error */ #define GOOSEFEM_WIP_ASSERT(expr) GOOSEFEM_ASSERT_IMPL(expr, __FILE__, __LINE__) /** All warnings are implemented as:: GOOSEFEM_WARNING(...) They can be disabled by:: #define GOOSEFEM_DISABLE_WARNING */ #ifdef GOOSEFEM_DISABLE_WARNING #define GOOSEFEM_WARNING(message) #else #define GOOSEFEM_WARNING(message) GOOSEFEM_WARNING_IMPL(message, __FILE__, __LINE__) #endif /** All warnings specific to the Python API are implemented as:: GOOSEFEM_WARNING_PYTHON(...) They can be enabled by:: #define GOOSEFEM_ENABLE_WARNING_PYTHON */ #ifdef GOOSEFEM_ENABLE_WARNING_PYTHON #define GOOSEFEM_WARNING_PYTHON(message) GOOSEFEM_WARNING_IMPL(message, __FILE__, __LINE__) #else #define GOOSEFEM_WARNING_PYTHON(message) #endif /** Toolbox to perform finite element computations. */ namespace GooseFEM {} #endif