1// Copyright (c) 2015 Nuxi, https://nuxi.nl/
 2//
 3// SPDX-License-Identifier: BSD-2-Clause
 4
 5#ifndef COMMON_LIMITS_H
 6#define COMMON_LIMITS_H
 7
 8#include <limits.h>
 9
10#define NUMERIC_MIN(t)                                  \
11  _Generic((t)0, char                                   \
12           : CHAR_MIN, signed char                      \
13           : SCHAR_MIN, unsigned char : 0, short        \
14           : SHRT_MIN, unsigned short : 0, int          \
15           : INT_MIN, unsigned int : 0, long            \
16           : LONG_MIN, unsigned long : 0, long long     \
17           : LLONG_MIN, unsigned long long : 0, default \
18           : (void)0)
19
20#define NUMERIC_MAX(t)                     \
21  _Generic((t)0, char                      \
22           : CHAR_MAX, signed char         \
23           : SCHAR_MAX, unsigned char      \
24           : UCHAR_MAX, short              \
25           : SHRT_MAX, unsigned short      \
26           : USHRT_MAX, int                \
27           : INT_MAX, unsigned int         \
28           : UINT_MAX, long                \
29           : LONG_MAX, unsigned long       \
30           : ULONG_MAX, long long          \
31           : LLONG_MAX, unsigned long long \
32           : ULLONG_MAX, default           \
33           : (void)0)
34
35#endif