1 /* 2 +----------------------------------------------------------------------+ 3 | PHP Version 5 | 4 +----------------------------------------------------------------------+ 5 | Copyright (c) 1997-2016 The PHP Group | 6 +----------------------------------------------------------------------+ 7 | This source file is subject to version 3.01 of the PHP license, | 8 | that is bundled with this package in the file LICENSE, and is | 9 | available through the world-wide-web at the following url: | 10 | http://www.php.net/license/3_01.txt | 11 | If you did not receive a copy of the PHP license and are unable to | 12 | obtain it through the world-wide-web, please send a note to | 13 | license@php.net so we can mail you a copy immediately. | 14 +----------------------------------------------------------------------+ 15 | Author: Michael Wallner <mike@php.net> | 16 +----------------------------------------------------------------------+ 17 */ 18 19 #ifndef PHP_STDINT_H 20 #define PHP_STDINT_H 21 22 #if defined(_MSC_VER) 23 /* Make sure the regular stdint.h wasn't included already and prevent it to be 24 included afterwards. Though if some other library needs some stuff from 25 stdint.h included afterwards and misses it, we'd have to extend ours. On 26 the other hand, if stdint.h was included before, some conflicts might 27 happen so we'd likewise have to fix ours. */ 28 # if !defined(_STDINT) 29 # define _STDINT 30 # include "win32/php_stdint.h" 31 # endif 32 # define HAVE_INT8_T 1 33 # define HAVE_UINT8_T 1 34 # define HAVE_INT16_T 1 35 # define HAVE_UINT16_T 1 36 # define HAVE_INT32_T 1 37 # define HAVE_UINT32_T 1 38 # define HAVE_INT64_T 1 39 # define HAVE_UINT64_T 1 40 #else 41 42 #include "php_config.h" 43 44 #if HAVE_SYS_TYPES_H 45 # include <sys/types.h> 46 #endif 47 48 #if HAVE_INTTYPES_H 49 # include <inttypes.h> 50 #endif 51 52 #if HAVE_STDINT_H 53 # include <stdint.h> 54 #endif 55 56 #ifndef HAVE_INT8_T 57 # ifdef HAVE_INT8 58 typedef int8 int8_t; 59 # else 60 typedef signed char int8_t; 61 # endif 62 #endif 63 64 #ifndef INT8_C 65 # define INT8_C(c) c 66 #endif 67 68 #ifndef HAVE_UINT8_T 69 # ifdef HAVE_UINT8 70 typedef uint8 uint8_t 71 # elif HAVE_U_INT8_T 72 typedef u_int8_t uint8_t; 73 # else 74 typedef unsigned char uint8_t; 75 # endif 76 #endif 77 78 #ifndef UINT8_C 79 # define UINT8_C(c) c 80 #endif 81 82 #ifndef HAVE_INT16_T 83 # ifdef HAVE_INT16 84 typedef int16 int16_t; 85 # elif SIZEOF_SHORT >= 2 86 typedef signed short int16_t; 87 # else 88 # error "No suitable 16bit integer type found" 89 # endif 90 #endif 91 92 #ifndef INT16_C 93 # define INT16_C(c) c 94 #endif 95 96 #ifndef HAVE_UINT16_T 97 # ifdef HAVE_UINT16 98 typedef uint16 uint16_t 99 # elif HAVE_U_INT16_T 100 typedef u_int16_t uint16_t; 101 # elif SIZEOF_SHORT >= 2 102 typedef unsigned short uint16_t; 103 # else 104 # error "No suitable 16bit integer type found" 105 # endif 106 #endif 107 108 #ifndef UINT16_C 109 # define UINT16_C(c) c 110 #endif 111 112 #ifndef HAVE_INT32_T 113 # ifdef HAVE_INT32 114 typedef int32 int32_t; 115 # elif SIZEOF_INT >= 4 116 typedef int int32_t; 117 # elif SIZEOF_LONG >= 4 118 typedef long int32_t; 119 # else 120 # error "No suitable 32bit integer type found" 121 # endif 122 #endif 123 124 #ifndef INT32_C 125 # define INT32_C(c) c 126 #endif 127 128 #ifndef HAVE_UINT32_T 129 # ifdef HAVE_UINT32 130 typedef uint32 uint32_t 131 # elif HAVE_U_INT32_T 132 typedef u_int32_t uint32_t; 133 # elif SIZEOF_INT >= 4 134 typedef unsigned int uint32_t; 135 # elif SIZEOF_LONG >= 4 136 typedef unsigned long uint32_t; 137 # else 138 # error "No suitable 32bit integer type found" 139 # endif 140 #endif 141 142 #ifndef UINT32_C 143 # define UINT32_C(c) c ## U 144 #endif 145 146 #ifndef HAVE_INT64_T 147 # ifdef HAVE_INT64 148 typedef int64 int64_t; 149 # elif SIZEOF_INT >= 8 150 typedef int int64_t; 151 # elif SIZEOF_LONG >= 8 152 typedef long int64_t; 153 # elif SIZEOF_LONG_LONG >= 8 154 typedef long long int64_t; 155 # else 156 # error "No suitable 64bit integer type found" 157 # endif 158 #endif 159 160 #ifndef INT64_C 161 # if SIZEOF_INT >= 8 162 # define INT64_C(c) c 163 # elif SIZEOF_LONG >= 8 164 # define INT64_C(c) c ## L 165 # elif SIZEOF_LONG_LONG >= 8 166 # define INT64_C(c) c ## LL 167 # endif 168 #endif 169 170 #ifndef HAVE_UINT64_T 171 # ifdef HAVE_UINT64 172 typedef uint64 uint64_t 173 # elif HAVE_U_INT64_T 174 typedef u_int64_t uint64_t; 175 # elif SIZEOF_INT >= 8 176 typedef unsigned int uint64_t; 177 # elif SIZEOF_LONG >= 8 178 typedef unsigned long uint64_t; 179 # elif SIZEOF_LONG_LONG >= 8 180 typedef unsigned long long uint64_t; 181 # else 182 # error "No suitable 64bit integer type found" 183 # endif 184 #endif 185 186 #ifndef UINT64_C 187 # if SIZEOF_INT >= 8 188 # define UINT64_C(c) c ## U 189 # elif SIZEOF_LONG >= 8 190 # define UINT64_C(c) c ## UL 191 # elif SIZEOF_LONG_LONG >= 8 192 # define UINT64_C(c) c ## ULL 193 # endif 194 #endif 195 196 #endif /* !PHP_WIN32 */ 197 #endif /* PHP_STDINT_H */ 198 199 /* 200 * Local variables: 201 * tab-width: 4 202 * c-basic-offset: 4 203 * End: 204 * vim600: sw=4 ts=4 fdm=marker 205 * vim<600: sw=4 ts=4 206 */ 207