-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminmax.h
31 lines (28 loc) · 808 Bytes
/
minmax.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "compat.h"
#ifndef FWM_MINMAX
#define FWM_MINMAX
#define min(__array, __length, __comparator) ({ \
typeof(*(__array)) __min, *__array_copy = (__array); \
\
__min = __array_copy[0]; \
\
for (int __curr = 1; __curr < (__length); ++__curr) { \
if ((__comparator)(__array_copy[__curr], __min) < 0) \
__min = __array_copy[__curr]; \
} \
\
__min; \
})
#define max(__array, __length, __comparator) ({ \
typeof(*(__array)) __max, *__array_copy = (__array); \
\
__max = __array_copy[0]; \
\
for (int __curr = 1; __curr < (__length); ++__curr) { \
if ((__comparator)(__array_copy[__curr], __max) > 0) \
__max = __array_copy[__curr]; \
} \
\
__max; \
})
#endif