libcamera: utils: Add clamp()

C++11 does not support std::clamp(), add a custom implementation in
utils.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2019-07-13 20:25:21 +09:00
parent 1a7f1610e9
commit c4b9ccb45a
2 changed files with 16 additions and 0 deletions

View file

@ -7,6 +7,7 @@
#ifndef __LIBCAMERA_UTILS_H__
#define __LIBCAMERA_UTILS_H__
#include <algorithm>
#include <memory>
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
@ -45,6 +46,13 @@ unsigned int set_overlap(InputIt1 first1, InputIt1 last1,
return count;
}
/* C++11 doesn't provide std::clamp */
template <typename T>
const T& clamp(const T& v, const T& lo, const T& hi)
{
return std::max(lo, std::min(v, hi));
}
} /* namespace utils */
} /* namespace libcamera */

View file

@ -85,6 +85,14 @@ char *secure_getenv(const char *name)
* \return The number of elements in the intersection of the two ranges
*/
/**
* \fn libcamera::utils::clamp(const T& v, const T& lo, const T& hi)
* \param[in] v The value to clamp
* \param[in] lo The lower boundary to clamp v to
* \param[in] hi The higher boundary to clamp v to
* \return lo if v is less than lo, hi if v is greater than hi, otherwise v
*/
} /* namespace utils */
} /* namespace libcamera */