// -*-c++-*-
// vim: set ft=cpp:

/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file LICENSE.rst or https://cmake.org/licensing for details.  */
#pragma once

#include <algorithm> // IWYU pragma: export
#include <cassert>

namespace cm {

#if __cplusplus >= 201703L || defined(_MSVC_LANG) && _MSVC_LANG >= 201703L

using std::clamp;

#else

template <typename T>
T const& clamp(T const& v, T const& lo, T const& hi)
{
  assert(!(hi < lo));
  return (v < lo) ? lo : (hi < v) ? hi : v;
}

template <typename T, typename Comp>
T const& clamp(T const& v, T const& lo, T const& hi, Comp comp)
{
  assert(!comp(hi, lo));
  return comp(v, lo) ? lo : comp(hi, v) ? hi : v;
}

#endif

} // namespace cm
