color config for code blocks
[smdp.git] / include / common.h
1 #if !defined( COMMON_H )
2 #define COMMON_H
3
4 /*
5  * Common macros.
6  * Copyright (C) 2018 Michael Goehler
7  *
8  * This file is part of mdp.
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  *
23  *
24  * type: bool variable stores only true or false.
25  *
26  * macro: MAX returns the higher one of two input variables
27  * macro: MIN returns the lower one of two input variables
28  *
29  */
30
31 #if defined( __STDC__ )  // for standard C compiler
32 #if __STDC_VERSION__ >= 199901L    // for C99 and later
33 #include <stdbool.h>
34 #else    // __STDC_VERSION__ >= 199901L
35 #if !defined( bool )
36 typedef enum {
37     false = 0,
38     true  = 1
39 } bool;
40 #endif   // !defined( bool )
41 #endif   // __STDC_VERSION__ >= 199901L
42 #else    // defined( __STDC__ )
43 #define bool    int
44 #define true    1
45 #define false   0
46 #endif   // defined( __STDC__ )
47
48 #define MAX(a, b) ({ typeof(a) _a = a; typeof(b) _b = b; _a > _b? _a : _b; })
49 #define MIN(a, b) ({ typeof(a) _a = a; typeof(b) _b = b; _a < _b? _a : _b; })
50
51 #endif // !defined( COMMON_H )