On 05/15/2014 08:53 PM, Martin Kletzander wrote:
On Thu, May 15, 2014 at 06:39:49PM +0900, Dongsheng Yang wrote:
> This patch introduce a new macro to return a
> value clamped to a given range.
>
> Signed-off-by: Dongsheng Yang <yangds.fnst(a)cn.fujitsu.com>
> ---
> src/util/virutil.h | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/util/virutil.h b/src/util/virutil.h
> index 2bb74e2..e8536d8 100644
> --- a/src/util/virutil.h
> +++ b/src/util/virutil.h
> @@ -37,6 +37,12 @@
> # ifndef MAX
> # define MAX(a, b) ((a) > (b) ? (a) : (b))
> # endif
> +# ifndef CLAMP
> +# define CLAMP(v, min, max) ({ \
> + typeof(v) _v = v; \
> + _v = _v < min ? min: _v; \
> + _v > max ? max: _v; })
> +# endif
>
It's just my subjective impression, but wouldn't the following be a
bit more readable and less obfuscated?
#define CLAMP(v, min, max) MAX(MIN(v, max), min)
Neat! I think it works. I will use it in v2.
Thanx
Martin.