19 #ifndef LIBMESH_ATTRIBUTES_H 20 #define LIBMESH_ATTRIBUTES_H 52 #define LIBMESH_INT_TYPE(cxxtype) \ 54 struct Attributes<cxxtype> \ 56 static const bool has_min_max = true; \ 57 static void set_lowest(cxxtype & x) { x = std::numeric_limits<cxxtype>::min(); } \ 58 static void set_highest(cxxtype & x) { x = std::numeric_limits<cxxtype>::max(); } \ 61 #define LIBMESH_FLOAT_TYPE(cxxtype) \ 63 struct Attributes<cxxtype> \ 65 static const bool has_min_max = true; \ 66 static void set_lowest(cxxtype & x) { x = -std::numeric_limits<cxxtype>::infinity(); } \ 67 static void set_highest(cxxtype & x) { x = std::numeric_limits<cxxtype>::infinity(); } \ 70 #define LIBMESH_CONTAINER_TYPE(cxxtype) \ 71 struct Attributes<cxxtype> \ 73 static const bool has_min_max = Attributes<T>::has_min_max; \ 74 static void set_lowest(cxxtype & x) { \ 75 for (auto & val : x) \ 76 Attributes<T>::set_lowest(val); } \ 77 static void set_highest(cxxtype & x) { \ 78 for (auto & val : x) \ 79 Attributes<T>::set_highest(val); } \ 99 #define LIBMESH_ATTRIBUTES_COMMA , 101 template <
typename T,
typename C,
typename A>
104 template <
typename T,
typename A>
111 #endif // LIBMESH_ATTRIBUTES_H static void set_lowest(T &)
LIBMESH_CONTAINER_TYPE(std::set< T LIBMESH_ATTRIBUTES_COMMA C LIBMESH_ATTRIBUTES_COMMA A >)
LIBMESH_FLOAT_TYPE(float)
static void set_highest(T &)
static const bool has_min_max