1 /* 2 * Copyright (C) 1999 WIDE Project. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the project nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 #ifndef _BITTYPES_H 30 #define _BITTYPES_H 31 32 #ifndef HAVE_U_INT8_T 33 34 #if SIZEOF_CHAR == 1 35 typedef unsigned char u_int8_t; 36 typedef signed char int8_t; 37 #elif SIZEOF_INT == 1 38 typedef unsigned int u_int8_t; 39 typedef signed int int8_t; 40 #else /* XXX */ 41 #error "there's no appropriate type for u_int8_t" 42 #endif 43 #define HAVE_U_INT8_T 1 44 #define HAVE_INT8_T 1 45 46 #endif /* HAVE_U_INT8_T */ 47 48 #ifndef HAVE_U_INT16_T 49 50 #if SIZEOF_SHORT == 2 51 typedef unsigned short u_int16_t; 52 typedef signed short int16_t; 53 #elif SIZEOF_INT == 2 54 typedef unsigned int u_int16_t; 55 typedef signed int int16_t; 56 #elif SIZEOF_CHAR == 2 57 typedef unsigned char u_int16_t; 58 typedef signed char int16_t; 59 #else /* XXX */ 60 #error "there's no appropriate type for u_int16_t" 61 #endif 62 #define HAVE_U_INT16_T 1 63 #define HAVE_INT16_T 1 64 65 #endif /* HAVE_U_INT16_T */ 66 67 #ifndef HAVE_U_INT32_T 68 69 #if SIZEOF_INT == 4 70 typedef unsigned int u_int32_t; 71 typedef signed int int32_t; 72 #elif SIZEOF_LONG == 4 73 typedef unsigned long u_int32_t; 74 typedef signed long int32_t; 75 #elif SIZEOF_SHORT == 4 76 typedef unsigned short u_int32_t; 77 typedef signed short int32_t; 78 #else /* XXX */ 79 #error "there's no appropriate type for u_int32_t" 80 #endif 81 #define HAVE_U_INT32_T 1 82 #define HAVE_INT32_T 1 83 84 #endif /* HAVE_U_INT32_T */ 85 86 #ifndef HAVE_U_INT64_T 87 #if SIZEOF_LONG_LONG == 8 88 typedef unsigned long long u_int64_t; 89 #elif defined(_MSC_EXTENSIONS) 90 typedef unsigned _int64 u_int64_t; 91 #elif SIZEOF_INT == 8 92 typedef unsigned int u_int64_t; 93 #elif SIZEOF_LONG == 8 94 typedef unsigned long u_int64_t; 95 #elif SIZEOF_SHORT == 8 96 typedef unsigned short u_int64_t; 97 #else /* XXX */ 98 #error "there's no appropriate type for u_int64_t" 99 #endif 100 101 #endif /* HAVE_U_INT64_T */ 102 103 #ifndef PRId64 104 #ifdef _MSC_EXTENSIONS 105 #define PRId64 "I64d" 106 #else /* _MSC_EXTENSIONS */ 107 #define PRId64 "lld" 108 #endif /* _MSC_EXTENSIONS */ 109 #endif /* PRId64 */ 110 111 #ifndef PRIo64 112 #ifdef _MSC_EXTENSIONS 113 #define PRIo64 "I64o" 114 #else /* _MSC_EXTENSIONS */ 115 #define PRIo64 "llo" 116 #endif /* _MSC_EXTENSIONS */ 117 #endif /* PRIo64 */ 118 119 #ifndef PRIx64 120 #ifdef _MSC_EXTENSIONS 121 #define PRIx64 "I64x" 122 #else /* _MSC_EXTENSIONS */ 123 #define PRIx64 "llx" 124 #endif /* _MSC_EXTENSIONS */ 125 #endif /* PRIx64 */ 126 127 #ifndef PRIu64 128 #ifdef _MSC_EXTENSIONS 129 #define PRIu64 "I64u" 130 #else /* _MSC_EXTENSIONS */ 131 #define PRIu64 "llu" 132 #endif /* _MSC_EXTENSIONS */ 133 #endif /* PRIu64 */ 134 135 #endif /* _BITTYPES_H */ 136