19 #ifndef TIMPI_ATTRIBUTES_H 20 #define TIMPI_ATTRIBUTES_H 23 #include "timpi/timpi_config.h" 26 #ifdef TIMPI_DEFAULT_QUADRUPLE_PRECISION 27 # include <boost/multiprecision/float128.hpp> 58 #define TIMPI_INT_TYPE(cxxtype) \ 60 struct Attributes<cxxtype> \ 62 static const bool has_min_max = true; \ 63 static void set_lowest(cxxtype & x) { x = std::numeric_limits<cxxtype>::min(); } \ 64 static void set_highest(cxxtype & x) { x = std::numeric_limits<cxxtype>::max(); } \ 67 #define TIMPI_FLOAT_TYPE(cxxtype) \ 69 struct Attributes<cxxtype> \ 71 static const bool has_min_max = true; \ 72 static void set_lowest(cxxtype & x) { x = -std::numeric_limits<cxxtype>::infinity(); } \ 73 static void set_highest(cxxtype & x) { x = std::numeric_limits<cxxtype>::infinity(); } \ 76 #define TIMPI_CONTAINER_TYPE(cxxtype) \ 77 struct Attributes<cxxtype> \ 79 static const bool has_min_max = Attributes<T>::has_min_max; \ 80 static void set_lowest(cxxtype & x) { \ 81 for (auto & val : x) \ 82 Attributes<T>::set_lowest(val); } \ 83 static void set_highest(cxxtype & x) { \ 84 for (auto & val : x) \ 85 Attributes<T>::set_highest(val); } \ 104 #ifdef TIMPI_DEFAULT_QUADRUPLE_PRECISION 108 #define TIMPI_ATTRIBUTES_COMMA , 110 template <
typename T,
typename C,
typename A>
113 template <
typename T,
typename A>
118 #endif // TIMPI_ATTRIBUTES_H
static const bool has_min_max
TIMPI_CONTAINER_TYPE(std::set< T TIMPI_ATTRIBUTES_COMMA C TIMPI_ATTRIBUTES_COMMA A >)