diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h')
-rw-r--r-- | gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h b/gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h new file mode 100644 index 0000000000..55a5a295af --- /dev/null +++ b/gfx/angle/checkout/src/common/third_party/base/anglebase/numerics/ranges.h @@ -0,0 +1,39 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_NUMERICS_RANGES_H_ +#define BASE_NUMERICS_RANGES_H_ + +#include <algorithm> +#include <cmath> + +namespace base +{ + +// DO NOT USE THIS FUNCTION. IT IS DUE TO BE REMOVED. https://crbug.com/1231569 +// Please use base::clamp() from base/cxx17_backports.h instead. +// +// This function, unlike base::clamp(), does not check if `min` is greater than +// `max`, and returns a bogus answer if it is. Please migrate all code that +// calls this function to use base::clamp() instead. +// +// If, for some reason the broken behavior is required, please re-create this +// min/max nesting inline in the host code and explain with a comment why it +// is needed. +template <class T> +constexpr const T &BrokenClampThatShouldNotBeUsed(const T &value, const T &min, const T &max) +{ + return std::min(std::max(value, min), max); +} + +template <typename T> +constexpr bool IsApproximatelyEqual(T lhs, T rhs, T tolerance) +{ + static_assert(std::is_arithmetic<T>::value, "Argument must be arithmetic"); + return std::abs(rhs - lhs) <= tolerance; +} + +} // namespace base + +#endif // BASE_NUMERICS_RANGES_H_ |