summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libcamera/include/utils.h8
-rw-r--r--src/libcamera/utils.cpp8
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 */