1 /* Public domain */ 2 3 /* 4 * Definitions of primitive integer types used throughout Agar. Also 5 * defines AG_HAVE_64BIT and AG_HAVE_LONG_DOUBLE. 6 */ 7 8 #include <agar/config/have_cygwin.h> 9 10 #if defined(HAVE_CYGWIN) 11 # include <basetyps.h> 12 #else 13 # if !defined(_WIN32) 14 # include <agar/config/_mk_have_sys_types_h.h> 15 # ifdef _MK_HAVE_SYS_TYPES_H 16 # undef _MK_HAVE_SYS_TYPES_H 17 # include <sys/types.h> 18 # endif 19 # endif /* !_WIN32 */ 20 #endif /* HAVE_CYGWIN */ 21 22 #ifndef _AGAR_HAVE_64BIT_H 23 # include <agar/config/have_64bit.h> 24 # define _AGAR_HAVE_64BIT_H_ 25 # ifdef HAVE_64BIT 26 # include <agar/config/have_int64_t.h> 27 # include <agar/config/have___int64.h> 28 # define AG_HAVE_64BIT 29 # endif 30 #endif 31 32 #ifndef _AGAR_HAVE_LONG_DOUBLE_H_ 33 # include <agar/config/have_long_double.h> 34 # define _AGAR_HAVE_LONG_DOUBLE_H_ 35 # ifdef HAVE_LONG_DOUBLE 36 # define AG_HAVE_LONG_DOUBLE 37 # endif 38 #endif 39 40 #ifndef Uint 41 # define Uint unsigned int 42 # define _AGAR_CORE_DEFINED_UINT 43 #endif 44 #ifndef Uchar 45 # define Uchar unsigned char 46 # define _AGAR_CORE_DEFINED_UCHAR 47 #endif 48 #ifndef Ulong 49 # define Ulong unsigned long 50 # define _AGAR_CORE_DEFINED_ULONG 51 #endif 52 53 #if defined(_WIN32) 54 # ifndef Sint8 55 # define Sint8 __int8 56 # define _AGAR_CORE_DEFINED_SINT8 57 # endif 58 # ifndef Uint8 59 # define Uint8 unsigned __int8 60 # define _AGAR_CORE_DEFINED_UINT8 61 # endif 62 # ifndef Sint16 63 # define Sint16 __int16 64 # define _AGAR_CORE_DEFINED_SINT16 65 # endif 66 # ifndef Uint16 67 # define Uint16 unsigned __int16 68 # define _AGAR_CORE_DEFINED_UINT16 69 # endif 70 # ifndef Sint32 71 # define Sint32 __int32 72 # define _AGAR_CORE_DEFINED_SINT32 73 # endif 74 # ifndef Uint32 75 # define Uint32 unsigned __int32 76 # define _AGAR_CORE_DEFINED_UINT32 77 # endif 78 # ifndef Sint64 79 # define Sint64 __int64 80 # define _AGAR_CORE_DEFINED_SINT64 81 # endif 82 # ifndef Uint64 83 # define Uint64 unsigned __int64 84 # define _AGAR_CORE_DEFINED_UINT64 85 # endif 86 #else /* !_WIN32 */ 87 # ifndef Sint8 88 # define Sint8 int8_t 89 # define _AGAR_CORE_DEFINED_SINT8 90 # endif 91 # ifndef Uint8 92 # define Uint8 u_int8_t 93 # define _AGAR_CORE_DEFINED_UINT8 94 # endif 95 # ifndef Sint16 96 # define Sint16 int16_t 97 # define _AGAR_CORE_DEFINED_SINT16 98 # endif 99 # ifndef Uint16 100 # define Uint16 u_int16_t 101 # define _AGAR_CORE_DEFINED_UINT16 102 # endif 103 # ifndef Sint32 104 # define Sint32 int32_t 105 # define _AGAR_CORE_DEFINED_SINT32 106 # endif 107 # ifndef Uint32 108 # define Uint32 u_int32_t 109 # define _AGAR_CORE_DEFINED_UINT32 110 # endif 111 # ifdef AG_HAVE_64BIT 112 # ifndef Sint64 113 # if defined(HAVE_INT64_T) 114 # define Sint64 int64_t 115 # elif defined(HAVE___INT64) 116 # define Sint64 __int64 117 # endif 118 # define _AGAR_CORE_DEFINED_SINT64 119 # endif 120 # ifndef Uint64 121 # if defined(HAVE_INT64_T) 122 # define Uint64 u_int64_t 123 # elif defined(HAVE___INT64) 124 # define Uint64 __int64 125 # endif 126 # define _AGAR_CORE_DEFINED_UINT64 127 # endif 128 # else /* !AG_HAVE_64BIT */ 129 typedef struct ag_fake_int64 { Uint32 _pad1; Uint32 _pad2; }; 130 # ifndef Sint64 131 # define Sint64 struct ag_fake_int64 132 # define _AGAR_CORE_DEFINED_SINT64 133 # endif 134 # ifndef Uint64 135 # define Uint64 struct ag_fake_int64 136 # define _AGAR_CORE_DEFINED_UINT64 137 # endif 138 # endif /* AG_HAVE_64BIT */ 139 #endif /* !WIN32 */ 140