1 // ---------------------------------------------------------------------------
3 // Copyright (C) cisc 1998, 1999.
4 // ---------------------------------------------------------------------------
5 // $Id: misc.h,v 1.5 2002/05/31 09:45:20 cisc Exp $
11 inline int Max(int x, int y) { return std::max(x, y); }
12 inline int Min(int x, int y) { return std::min(x, y); }
14 inline int Abs(int x) { return x >= 0 ? x : -x; }
16 //#if defined(__cplusplus) && (__cplusplus >= 201703L)
17 //#define Limit(foo, max, min) std::clamp((int)foo, (int)min, (int)max)
19 inline int Limit(int v, int max, int min)
21 return v > max ? max : (v < min ? min : v);
25 #if defined(__has_builtin) && (__has_builtin(__builtin_bswap32))
26 inline unsigned int BSwap(unsigned int a)
28 return __builtin_bswap32(a);
31 inline unsigned int BSwap(unsigned int a)
33 return (a >> 24) | ((a >> 8) & 0xff00) | ((a << 8) & 0xff0000) | (a << 24);
37 inline unsigned int NtoBCD(unsigned int a)
39 return ((a / 10) << 4) + (a % 10);
42 inline unsigned int BCDtoN(unsigned int v)
44 return (v >> 4) * 10 + (v & 15);
48 #if defined(__cplusplus) && (__cplusplus >= 201703L)
53 inline T gcd(T x, T y)