diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2012-12-23 14:23:32 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2012-12-24 10:52:13 -0800 |
commit | a1a02150d710df2838060445b9ad447689538985 (patch) | |
tree | 8ae2d08ebbd04df92a2e07f738a614d4f22157f1 /src/common/utils2.hpp | |
parent | 7afacd63fe36eb56b52490ecf22daeaa95657942 (diff) | |
download | tmwa-a1a02150d710df2838060445b9ad447689538985.tar.gz tmwa-a1a02150d710df2838060445b9ad447689538985.tar.bz2 tmwa-a1a02150d710df2838060445b9ad447689538985.tar.xz tmwa-a1a02150d710df2838060445b9ad447689538985.zip |
Enumify some more things ... maybe even everything
Diffstat (limited to 'src/common/utils2.hpp')
-rw-r--r-- | src/common/utils2.hpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/common/utils2.hpp b/src/common/utils2.hpp index 326b12f..aa97959 100644 --- a/src/common/utils2.hpp +++ b/src/common/utils2.hpp @@ -93,6 +93,18 @@ struct underlying_type >::type type; }; +template<class E, bool=std::is_enum<E>::value> +struct remove_enum +{ + typedef E type; +}; +template<class E> +struct remove_enum<E, true> +{ + typedef typename underlying_type<E>::type type; +}; + + #define ENUM_BITWISE_OPERATORS(E) \ inline \ E operator & (E l, E r) \ @@ -175,3 +187,15 @@ IteratorPair<EnumValueIterator<E>> erange(E b, E e) namespace std { namespace placeholders {} } namespace ph = std::placeholders; + +template<class A, class B> +typename std::common_type<A, B>::type min(A a, B b) +{ + return a < b ? a : b; +} + +template<class A, class B> +typename std::common_type<A, B>::type max(A a, B b) +{ + return b < a ? a : b; +} |