7CLASS_DECL_ACME
void throw_cast_overflow();
13#define INT_TO_NATURAL(i) (i >= 0 ? (::u32) i : 0)
18inline ::u32 natural(::i32 i)
20 return i >= 0 ? (::u32) i : 0;
23inline ::u32 natural(::u32 u)
28inline ::u64 natural(::i64 hi)
30 return hi >= 0 ? (::u64) hi: 0;
33inline ::u64 natural(::u64 hn)
40inline ulong natural(
long l)
42 return l >= 0 ? (ulong) l : 0;
49inline ::i32 natural_min(::i32 i1, ::i32 i2, ::i32 iEscape = -1)
79inline bool less_than(::u64 u, ::i32 i)
81 return i < 0 ? false : u < (::u64) i;
85inline ::i32 mkint(::u32 u)
88 throw_cast_overflow();
92inline ::i32 mkint(::i32 i)
97inline ::i64 mkint(::u64 hn)
99 if (hn >= 0x7fffffffffffffffull)
100 throw_cast_overflow();
104inline ::i64 mkint(::i64 hi)
141template <
typename A,
typename B >
142constexpr largest_type < A, B > minimum_non_negative(A a, B b)
151 return (largest_type < A, B >) minimum(a, b);
157 return (largest_type < A, B >) b;
165 return (largest_type < A, B >) a;
171 return (largest_type < A, B >) minimum(a, b);
178template <
typename t >
179t minimum_non_null(
const t & t1,
const t & t2)
185 else if (t2 == (t) 0)
201template <
typename T,
typename L,
typename H >
202constexpr auto minimum_maximum(T t, L l, H h)