diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libcamera/include/utils.h | 8 | ||||
-rw-r--r-- | src/libcamera/utils.cpp | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/libcamera/include/utils.h b/src/libcamera/include/utils.h index 97bd470a..47a42258 100644 --- a/src/libcamera/include/utils.h +++ b/src/libcamera/include/utils.h @@ -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 */ diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp index ef365366..afbdd834 100644 --- a/src/libcamera/utils.cpp +++ b/src/libcamera/utils.cpp @@ -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 */ |