Files
boost_algorithm/include/boost/algorithm/clamp.hpp
Marshall Clow d9efcc6b6d Updated per Olaf's suggestions
[SVN r54484]
2009-06-28 23:04:50 +00:00

45 lines
1.2 KiB
C++

/*
Copyright (c) Marshall Clow 2008.
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Revision history:
27 June 2009 mtc First version
*/
/// \file clamp.hpp
/// \brief Clamp algorithm
/// \author Marshall Clow
///
/// Suggested by olafvdspek in https://svn.boost.org/trac/boost/ticket/3215
#ifndef BOOST_ALGORITHM_CLAMP_HPP
#define BOOST_ALGORITHM_CLAMP_HPP
namespace boost { namespace algorithm {
/// \fn clamp ( V val, V lo, V hi )
/// \brief Returns the value "val" brought into the range [ lo, hi ]
/// If the value is greater than "hi", return hi. If the value is
/// less than "lo", return lo. Otherwise, return the original value.
///
/// \param val The value to be clamped
/// \param lo The low point of the range to be clamped to
/// \param hi The high point of the range to be clamped to
///
template<typename V>
V clamp ( V val, V lo, V hi )
{
// return val >= hi ? hi : val <= lo ? lo : val;
// Alternately,
// return std::max ( std::min ( val, hi ), lo );
// Rewritten to only use operator <
return val < lo ? lo : hi < val ? hi : val;
}
}}
#endif // BOOST_ALGORITHM_CLAMP_HPP