1 extern void link_error(void);
2 
3 #define RANGE(name, min, max) \
4   if (name < min || name > max) \
5     return;
6 #define ANTI_RANGE(name, min, max) \
7   if (name >= min && name <= max) \
8     return;
9 #define MERGE(cond, name1, name2) \
10   if (cond) \
11     name1 = name2;
12 #define CHECK_RANGE(expr, min, max) \
13   do { \
14      __typeof__ (expr) v = (expr); \
15      if (v < min) link_error(); \
16      if (v > max) link_error(); \
17      if (v < min || v > max) link_error (); \
18   } while (0)
19 #define CHECK_ANTI_RANGE(expr, min, max) \
20   do { \
21     __typeof__ (expr) v = (expr); \
22     if (v >= min) \
23       if (v <= max) \
24         link_error(); \
25     if (v >= min && v <= max) \
26       link_error(); \
27   } while (0)
28