From 37a8562961680521c7e60b838fa6c73d25eb4066 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Fri, 10 Jul 2015 17:11:09 +0300 Subject: [PATCH] EnumMin, EnumMax --- libuavcan/include/uavcan/util/templates.hpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libuavcan/include/uavcan/util/templates.hpp b/libuavcan/include/uavcan/util/templates.hpp index b90c8c3817..aa61ca1cb3 100644 --- a/libuavcan/include/uavcan/util/templates.hpp +++ b/libuavcan/include/uavcan/util/templates.hpp @@ -175,6 +175,24 @@ To coerceOrFallback(const From& from) * @} */ +/** + * Selects smaller value + */ +template +struct EnumMin +{ + enum { Result = (A < B) ? A : B }; +}; + +/** + * Selects larger value + */ +template +struct EnumMax +{ + enum { Result = (A > B) ? A : B }; +}; + /** * Compile time square root for integers. * Useful for operations on square matrices.