1
2 #ifndef _TYPES_H_
3 #define _TYPES_H_
4
5 #include <stdbool.h>
6
7 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
8
9 typedef unsigned char u8;
10 typedef unsigned short u16;
11 typedef unsigned int u32;
12 typedef unsigned long long u64;
13 typedef signed char s8;
14 typedef short s16;
15 typedef int s32;
16 typedef long long s64;
17
18
19 typedef u8 uint8_t;
20 typedef u16 uint16_t;
21 typedef u32 uint32_t;
22 typedef u64 uint64_t;
23 typedef s8 int8_t;
24 typedef s16 int16_t;
25 typedef s32 int32_t;
26 typedef s64 int64_t;
27
28 #define min(x,y) ({ \
29 typeof(x) _x = (x); \
30 typeof(y) _y = (y); \
31 (void) (&_x == &_y); \
32 _x < _y ? _x : _y; })
33
34 #define max(x,y) ({ \
35 typeof(x) _x = (x); \
36 typeof(y) _y = (y); \
37 (void) (&_x == &_y); \
38 _x > _y ? _x : _y; })
39
40 #define min_t(type, a, b) min(((type) a), ((type) b))
41 #define max_t(type, a, b) max(((type) a), ((type) b))
42
43 typedef int bool;
44
45 #ifndef true
46 #define true 1
47 #endif
48
49 #ifndef false
50 #define false 0
51 #endif
52 #endif