1 /*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\ 2 |* *| 3 |* The LLVM Compiler Infrastructure *| 4 |* *| 5 |* This file is distributed under the University of Illinois Open Source *| 6 |* License. See LICENSE.TXT for details. *| 7 |* *| 8 |*===----------------------------------------------------------------------===*| 9 |* *| 10 |* This file contains definitions to figure out the size of _HOST_ data types.*| 11 |* This file is important because different host OS's define different macros,*| 12 |* which makes portability tough. This file exports the following *| 13 |* definitions: *| 14 |* *| 15 |* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*| 16 |* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *| 17 |* *| 18 |* No library is required when using these functions. *| 19 |* *| 20 |*===----------------------------------------------------------------------===*/ 21 22 /* Please leave this file C-compatible. */ 23 24 #ifndef LLVM_C_DATATYPES_H 25 #define LLVM_C_DATATYPES_H 26 27 #ifdef __cplusplus 28 #include <cmath> 29 #else 30 #include <math.h> 31 #endif 32 33 #include <inttypes.h> 34 #include <stdint.h> 35 36 #ifndef _MSC_VER 37 38 #if !defined(UINT32_MAX) 39 # error "The standard header <cstdint> is not C++11 compliant. Must #define "\ 40 "__STDC_LIMIT_MACROS before #including llvm-c/DataTypes.h" 41 #endif 42 43 #if !defined(UINT32_C) 44 # error "The standard header <cstdint> is not C++11 compliant. Must #define "\ 45 "__STDC_CONSTANT_MACROS before #including llvm-c/DataTypes.h" 46 #endif 47 48 /* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */ 49 #include <sys/types.h> 50 51 #ifdef _AIX 52 // GCC is strict about defining large constants: they must have LL modifier. 53 #undef INT64_MAX 54 #undef INT64_MIN 55 #endif 56 57 #else /* _MSC_VER */ 58 #ifdef __cplusplus 59 #include <cstddef> 60 #include <cstdlib> 61 #else 62 #include <stddef.h> 63 #include <stdlib.h> 64 #endif 65 #include <sys/types.h> 66 67 #if defined(_WIN64) 68 typedef signed __int64 ssize_t; 69 #else 70 typedef signed int ssize_t; 71 #endif /* _WIN64 */ 72 73 #endif /* _MSC_VER */ 74 75 /* Set defaults for constants which we cannot find. */ 76 #if !defined(INT64_MAX) 77 # define INT64_MAX 9223372036854775807LL 78 #endif 79 #if !defined(INT64_MIN) 80 # define INT64_MIN ((-INT64_MAX)-1) 81 #endif 82 #if !defined(UINT64_MAX) 83 # define UINT64_MAX 0xffffffffffffffffULL 84 #endif 85 86 #ifndef HUGE_VALF 87 #define HUGE_VALF (float)HUGE_VAL 88 #endif 89 90 #endif /* LLVM_C_DATATYPES_H */ 91