brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 4eb0ac9 Raw
81 lines · c
1/*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\2|*                                                                            *|3|* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|4|* Exceptions.                                                                *|5|* See https://llvm.org/LICENSE.txt for license information.                  *|6|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|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_H25#define LLVM_C_DATATYPES_H26 27#include <inttypes.h>28#include <stdint.h>29 30#ifndef _MSC_VER31 32#if !defined(UINT32_MAX)33# error "The standard header <cstdint> is not C++11 compliant. Must #define "\34        "__STDC_LIMIT_MACROS before #including llvm-c/DataTypes.h"35#endif36 37#if !defined(UINT32_C)38# error "The standard header <cstdint> is not C++11 compliant. Must #define "\39        "__STDC_CONSTANT_MACROS before #including llvm-c/DataTypes.h"40#endif41 42/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */43#include <sys/types.h>44 45#ifdef _AIX46// GCC is strict about defining large constants: they must have LL modifier.47#undef INT64_MAX48#undef INT64_MIN49#endif50 51#else /* _MSC_VER */52#ifdef __cplusplus53#include <cstddef>54#include <cstdlib>55#else56#include <stddef.h>57#include <stdlib.h>58#endif59#include <sys/types.h>60 61#if defined(_WIN64)62typedef signed __int64 ssize_t;63#else64typedef signed int ssize_t;65#endif /* _WIN64 */66 67#endif /* _MSC_VER */68 69/* Set defaults for constants which we cannot find. */70#if !defined(INT64_MAX)71# define INT64_MAX 9223372036854775807LL72#endif73#if !defined(INT64_MIN)74# define INT64_MIN ((-INT64_MAX)-1)75#endif76#if !defined(UINT64_MAX)77# define UINT64_MAX 0xffffffffffffffffULL78#endif79 80#endif /* LLVM_C_DATATYPES_H */81