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