/* * @(#)_inttypes.h: $Revision: 1.5.106.1 $ $Date: 97/07/07 17:33:16 $ * $Locker: CRT $ */ /* @(#) $Revision: 1.5.106.1 $ */ /* * (c) Copyright 1995 Hewlett-Packard Co., All Rights Reserved. */ /*********************** Basic integer types ***************************** ** ** The following defines the basic fixed-size integer types. ** ** intmax_t and uintmax_t are to be the largest signed and unsigned integer ** types supported by the implementation. ** ** intptr_t and uintptr_t are signed and unsigned integer types large enough ** to hold a pointer; that is, pointers can be assigned into or from ** these integer types without losing precision. ** ** intfast_t and uintfast_t are the most efficient signed and unsigned ** integer types of the implementation. ** ** When compiling in ILP32 mode long long will be used for the 64-bit data ** types. This will cause compilation errors if 64-bit data types are ** requested and the compiler in use does not support them. ** */ #ifndef __INTTYPES_INCLUDED #define __INTTYPES_INCLUDED #ifdef __LP64__ # define __L64_MODE__ #else # ifdef __cplusplus # if __cplusplus < 199707L # ifdef _INCLUDE_LONGLONG # define __LL_MODE__ # else /* _INCLUDE_LONGLONG */ # define __STDC_32_MODE__ # endif /* _INCLUDE_LONGLONG */ # else /* __cplusplus < 199707L */ /* * The New cplusplus always has long long support */ # define __LL_MODE__ # endif /* __cplusplus < 199707L */ # else /* __cplusplus */ # if defined(__STDC_EXT__) || !defined(__STDC__) # define __LL_MODE__ # else /* defined(__STDC_EXT__) || !defined(__STDC__) */ # define __STDC_32_MODE__ # endif /* defined(__STDC_EXT__) || !defined(__STDC__) */ # endif /* __cplusplus */ #endif /* __LP64__ */ typedef char int8_t; /* 8-bit signed integer */ typedef unsigned char uint8_t; /* 8-bit unsigned integer */ typedef short int16_t; /* 16-bit signed integer */ typedef unsigned short uint16_t; /* 16-bit unsigned integer */ typedef int int32_t; /* 32-bit signed integer */ typedef unsigned int uint32_t; /* 32-bit unsigned integer */ typedef int intfast_t; /* most efficient signed integer type */ typedef unsigned int uintfast_t; /* most efficient unsigned integer type */ #if !defined(__STDC_32_MODE__) #ifdef __LL_MODE__ typedef long long int64_t; /* 64-bit signed integer */ typedef unsigned long long uint64_t; /* 64-bit unsigned integer */ #else /* __LL_MODE__ */ typedef long int64_t; /* 64-bit signed integer */ typedef unsigned long uint64_t; /* 64-bit unsigned integer */ #endif /* __LL_MODE__ */ typedef int64_t intmax_t; /* largest signed integer supported */ typedef uint64_t uintmax_t; /* largest unsigned integer supported */ #else /* __STDC_32_MODE__ */ typedef int32_t intmax_t; /* largest signed integer supported */ typedef uint32_t uintmax_t; /* largest unsigned integer supported */ #endif /* __STDC_32_MODE__ */ typedef long intptr_t; /* signed integer type capable of holding a void * */ typedef unsigned long uintptr_t; /* unsigned integer type capable of holding a void * */ /*********************** Extended integer types ************************* ** ** The following defines smallest integer types that can hold n bits. ** */ /* smallest signed integer of at least 8 bits */ typedef char int_least8_t; /* smallest unsigned integer of at least 8 bits */ typedef unsigned char uint_least8_t; /* the most efficient integer of at least 8 bits */ typedef int int_fast8_t; /* the most efficient unsigned integer of at least 8 bits */ typedef unsigned int uint_fast8_t; /* smallest signed integer of at least 16 bits */ typedef short int_least16_t; /* smallest unsigned integer of at least 16 bits */ typedef unsigned short uint_least16_t; /* the most efficient integer of at least 16 bits */ typedef int int_fast16_t; /* the most efficient unsigned integer of at least 16 bits */ typedef unsigned int uint_fast16_t; /* smallest signed integer of at least 32 bits */ typedef int int_least32_t; /* smallest unsigned integer of at least 32 bits */ typedef unsigned int uint_least32_t; /* the compiler's most efficient integer of at least 32 bits */ typedef int int_fast32_t; /* the compiler's most efficient unsigned integer of at least 32 bits */ typedef unsigned int uint_fast32_t; #ifndef __STDC_32_MODE__ /* smallest signed integer of at least 64 bits */ typedef int64_t int_least64_t; /* the most efficient integer of at least 64 bits */ typedef int64_t int_fast64_t; /* smallest unsigned integer of at least 64 bits */ typedef uint64_t uint_least64_t; /* the compiler's most efficient unsigned integer of at least 64 bits */ typedef uint64_t uint_fast64_t; #endif /* __STDC_32_MODE__ */ /* ** ** The following data types are Hewlett-Packard data type ** extensions. Currently they are being added to POSIX namespace ** protection since they all end in _t. If at a future point they ** conflict with a data name which is used by a standard a separate ** namespace may be created for the conflicting types. ** ** */ #if defined(_INCLUDE_POSIX_SOURCE) || defined(_KERNEL) typedef uint32_t ptr32_t; #endif /* _INCLUDE_POSIX_SOURCE || _KERNEL */ #endif /* __INTTYPES_INCLUDED */ /* end of _inttypes.h */