xref: /openbsd/include/stdbool.h (revision f7094e11)
1*f7094e11Sdaniel /* $OpenBSD: stdbool.h,v 1.7 2015/09/04 23:47:09 daniel Exp $ */
29e5915d4Sespie 
39e5915d4Sespie /*
49e5915d4Sespie  * Written by Marc Espie, September 25, 1999
59e5915d4Sespie  * Public domain.
69e5915d4Sespie  */
79e5915d4Sespie 
8a85af443Sespie #ifndef	_STDBOOL_H_
9a85af443Sespie #define	_STDBOOL_H_
10a85af443Sespie 
11139a1b95Sespie #ifndef __cplusplus
12139a1b95Sespie 
13*f7094e11Sdaniel #if defined(__GNUC__) || \
14*f7094e11Sdaniel 	(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901)
15*f7094e11Sdaniel /* Support for C99: type _Bool is already built-in. */
16139a1b95Sespie #define false	0
17139a1b95Sespie #define true	1
18139a1b95Sespie 
19139a1b95Sespie #else
20a85af443Sespie /* `_Bool' type must promote to `int' or `unsigned int'. */
21a85af443Sespie typedef enum {
22a85af443Sespie 	false = 0,
23a85af443Sespie 	true = 1
24a85af443Sespie } _Bool;
25a85af443Sespie 
26a85af443Sespie /* And those constants must also be available as macros. */
27a85af443Sespie #define	false	false
28a85af443Sespie #define	true	true
29a85af443Sespie 
30139a1b95Sespie #endif
31139a1b95Sespie 
32a85af443Sespie /* User visible type `bool' is provided as a macro which may be redefined */
33a85af443Sespie #define bool _Bool
34a85af443Sespie 
35139a1b95Sespie #else /* __cplusplus */
36139a1b95Sespie #define _Bool 	bool
37139a1b95Sespie #define bool 	bool
38139a1b95Sespie #define false 	false
39139a1b95Sespie #define true 	true
40139a1b95Sespie #endif /* __cplusplus */
41139a1b95Sespie 
42a85af443Sespie /* Inform that everything is fine */
43a85af443Sespie #define __bool_true_false_are_defined 1
44a85af443Sespie 
45a85af443Sespie #endif /* _STDBOOL_H_ */
46