/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos72X src/bos/kernel/sys/inttypes.h 1.24.1.4                          */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* Restricted Materials of IBM                                            */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1997,2021              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)42     1.24.1.4  src/bos/kernel/sys/inttypes.h, incstd, bos72X, x2021_25A9 6/4/21 03:16:13 */ 

/*
 *   COMPONENT_NAME: incstd
 *
 *   FUNCTIONS: none
 *
 *   ORIGINS: 27
 *
 *
 *   (C) COPYRIGHT International Business Machines Corp. 1997
 *   All Rights Reserved
 *   Licensed Materials - Property of IBM
 *   US Government Users Restricted Rights - Use, duplication or
 *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */

#ifndef _H_INTTYPES
#ifndef _STD_TYPES_T /* Just include standard typedefs? */
#define	_H_INTTYPES
#endif /* _STD_TYPES_T */

#ifndef _H_STANDARDS
#include <standards.h>
#endif

#include <comp_macros.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifdef _ANSI_C_SOURCE

#ifndef _H_STDINT
#include <stdint.h>
#endif


#ifdef _ISOC99_SOURCE

#ifndef _STD_TYPES_T
typedef struct {
	intmax_t quot;
	intmax_t rem;
} imaxdiv_t;

#if defined(_LONG_LONG) && !defined(__64BIT__)
extern intmax_t _NOTHROW(__strtollmax, (const char * __restrict__, char ** __restrict__, int));
#ifndef __C_STRTOIMAX
static intmax_t
_NOTHROW(strtoimax, (const char * __restrict__ __nptr, char ** __restrict__ __endptr, int __base)) {
	return __strtollmax (__nptr, __endptr, __base);
}
#endif
#else /* defined(_LONG_LONG) && !defined(__64BIT__) */
#if !defined(_LONG_LONG) && !defined(__64BIT__)
#define strtoumax _strtoumax32
#define wcstoimax _wcstoimax32
#define wcstoumax _wcstoumax32
#define imaxabs _imaxabs32
#define imaxdiv _imaxdiv32
#endif /*!defined(_LONG_LONG) && !defined(__64BIT__) */
extern intmax_t _NOTHROW(strtoimax, (const char * __restrict__, char ** __restrict__, int));
#endif /* defined(_LONG_LONG) && !defined(__64BIT__) */

#ifdef _NO_PROTO
extern intmax_t _NOTHROW(imaxabs, ());
extern imaxdiv_t _NOTHROW(imaxdiv, ());
extern uintmax_t _NOTHROW(strtoumax, ());
extern intmax_t _NOTHROW(wcstoimax, ());
extern uintmax_t _NOTHROW(wcstoumax, ());
#else
extern intmax_t _NOTHROW(imaxabs, (intmax_t));
extern imaxdiv_t _NOTHROW(imaxdiv, (intmax_t, intmax_t)); 
extern uintmax_t _NOTHROW(strtoumax, (const char * __restrict__, char ** __restrict__, int));
/* wchar_t is needed for wcsto(iu)max */
#ifndef _WCHAR_T
#define _WCHAR_T
#ifdef __64BIT__
typedef unsigned int    wchar_t;
#else
typedef unsigned short  wchar_t;
#endif
#endif /* _WCHAR_T */
extern intmax_t _NOTHROW(wcstoimax, (const wchar_t * __restrict__, wchar_t ** __restrict__, int ));
extern uintmax_t _NOTHROW(wcstoumax, (const wchar_t * __restrict__, wchar_t ** __restrict__, int));
#endif /* _NO_PROTO */
#endif /* _STD_TYPES_T */

#ifndef _H_INTTYPES_TYPE_TS
/* Most efficient types on platform */
#ifdef __64BIT__
typedef int64_t         intfast_t;
typedef uint64_t        uintfast_t;
#else /* 32-bit */
typedef int32_t         intfast_t;
typedef uint32_t        uintfast_t;
#endif
#endif /* _H_INTTYPES_TYPE_TS */

#ifndef _STD_TYPES_T

/* printf Macros for format specifiers */

#define PRId8		"hhd"
#define PRId16		"hd"
#define PRId32		"d"
#if defined(__64BIT__)
#define PRId64		"ld"
#else
#if defined(_LONG_LONG)
#define PRId64		"lld"
#endif
#endif

#define PRIdLEAST8	"hhd"
#define PRIdLEAST16	"hd"
#define PRIdLEAST32	"d"
#if defined(__64BIT__)
#define PRIdLEAST64	"ld"
#else
#if defined(_LONG_LONG)
#define PRIdLEAST64	"lld"
#endif
#endif

#define PRIdFAST8	"hhd"
#define PRIdFAST16	"hd"
#define PRIdFAST32	"d"
#if defined(__64BIT__)
#define PRIdFAST64	"ld"
#else
#if defined(_LONG_LONG)
#define PRIdFAST64	"lld"
#endif
#endif

#define PRIi8		"hhi"
#define PRIi16		"hi"
#define PRIi32		"i"
#if defined(__64BIT__)
#define PRIi64		"li"
#else
#if defined(_LONG_LONG)
#define PRIi64		"lli"
#endif
#endif

#define PRIiLEAST8	"hhi"
#define PRIiLEAST16	"hi"
#define PRIiLEAST32	"i"
#if defined(__64BIT__)
#define PRIiLEAST64	"li"
#else
#if defined(_LONG_LONG)
#define PRIiLEAST64	"lli"
#endif
#endif

#define PRIiFAST8	"hhi"
#define PRIiFAST16	"hi"
#define PRIiFAST32	"i"
#if defined(__64BIT__)
#define PRIiFAST64	"li"
#else
#if defined(_LONG_LONG)
#define PRIiFAST64	"lli"
#endif
#endif

#define PRIo8		"hho"
#define PRIo16		"ho"
#define PRIo32		"o"
#if defined(__64BIT__)
#define PRIo64		"lo"
#else
#if defined(_LONG_LONG)
#define PRIo64		"llo"
#endif
#endif

#define PRIoLEAST8	"ho"
#define PRIoLEAST16	"ho"
#define PRIoLEAST32	"o"
#if defined(__64BIT__)
#define PRIoLEAST64	"lo"
#else
#if defined(_LONG_LONG)
#define PRIoLEAST64	"llo"
#endif
#endif

#define PRIoFAST8	"hho"
#define PRIoFAST16	"ho"
#define PRIoFAST32	"o"
#if defined(__64BIT__)
#define PRIoFAST64	"lo"
#else
#if defined(_LONG_LONG)
#define PRIoFAST64	"llo"
#endif
#endif

#define PRIx8		"hhx"
#define PRIx16		"hx"
#define PRIx32		"x"
#if defined(__64BIT__)
#define PRIx64		"lx"
#else
#if defined(_LONG_LONG)
#define PRIx64		"llx"
#endif
#endif

#define PRIxLEAST8	"hhx"
#define PRIxLEAST16	"hx"
#define PRIxLEAST32	"x"
#if defined(__64BIT__)
#define PRIxLEAST64	"lx"
#else
#if defined(_LONG_LONG)
#define PRIxLEAST64	"llx"
#endif
#endif

#define PRIxFAST8	"hhx"
#define PRIxFAST16	"hx"
#define PRIxFAST32	"x"
#if defined(__64BIT__)
#define PRIxFAST64	"lx"
#else
#if defined(_LONG_LONG)
#define PRIxFAST64	"llx"
#endif
#endif

#define PRIX8		"hhX"
#define PRIX16		"hX"
#define PRIX32		"X"
#if defined(__64BIT__)
#define PRIX64		"lX"
#else
#if defined(_LONG_LONG)
#define PRIX64		"llX"
#endif
#endif

#define PRIXLEAST8	"hhX"
#define PRIXLEAST16	"hX"
#define PRIXLEAST32	"X"
#if defined(__64BIT__)
#define PRIXLEAST64	"lX"
#else
#if defined(_LONG_LONG)
#define PRIXLEAST64	"llX"
#endif
#endif

#define PRIXFAST8	"hhX"
#define PRIXFAST16	"hX"
#define PRIXFAST32	"X"
#if defined(__64BIT__)
#define PRIXFAST64	"lX"
#else
#if defined(_LONG_LONG)
#define PRIXFAST64	"llX"
#endif
#endif

#define PRIu8		"hhu"
#define PRIu16		"hu"
#define PRIu32		"u"
#if defined(__64BIT__)
#define PRIu64		"lu"
#else
#if defined(_LONG_LONG)
#define PRIu64		"llu"
#endif
#endif

#define PRIuLEAST8	"hhu"
#define PRIuLEAST16	"hu"
#define PRIuLEAST32	"u"
#if defined(__64BIT__)
#define PRIuLEAST64	"lu"
#else
#if defined(_LONG_LONG)
#define PRIuLEAST64	"llu"
#endif
#endif

#define PRIuFAST8	"hhu"
#define PRIuFAST16	"hu"
#define PRIuFAST32	"u"
#if defined(__64BIT__)
#define PRIuFAST64	"lu"
#else
#if defined(_LONG_LONG)
#define PRIuFAST64	"llu"
#endif
#endif


/* scanf Macros for format specifiers */

#define SCNd8		"hhd"
#define SCNd16		"hd"
#define SCNd32		"d"
#if defined(__64BIT__)
#define SCNd64		"ld"
#else
#if defined(_LONG_LONG)
#define SCNd64		"lld"
#endif
#endif

#define SCNdLEAST8      "hhd"
#define SCNdLEAST16     "hd"
#define SCNdLEAST32     "d"
#if defined(__64BIT__)
#define SCNdLEAST64     "ld"
#else
#if defined(_LONG_LONG)
#define SCNdLEAST64     "lld"
#endif
#endif

#define SCNdFAST8      "hhd"
#define SCNdFAST16     "hd"
#define SCNdFAST32     "d"
#if defined(__64BIT__)
#define SCNdFAST64     "ld"
#else
#if defined(_LONG_LONG)
#define SCNdFAST64     "lld"
#endif
#endif


#define SCNi8		"hhi"
#define SCNi16		"hi"
#define SCNi32		"i"
#if defined(__64BIT__)
#define SCNi64		"li"
#else
#if defined(_LONG_LONG)
#define SCNi64		"lli"
#endif
#endif

#define SCNiFAST8      "hhi"
#define SCNiFAST16     "hi"
#define SCNiFAST32     "i"
#if defined(__64BIT__)
#define SCNiFAST64     "li"
#else
#if defined(_LONG_LONG)
#define SCNiFAST64     "lli"
#endif
#endif

#define SCNiLEAST8      "hhi"
#define SCNiLEAST16     "hi"
#define SCNiLEAST32     "i"
#if defined(__64BIT__)
#define SCNiLEAST64     "li"
#else
#if defined(_LONG_LONG)
#define SCNiLEAST64     "lli"
#endif
#endif


#define SCNo8		"hho"
#define SCNo16		"ho"
#define SCNo32		"o"
#if defined(__64BIT__)
#define SCNo64		"lo"
#else
#if defined(_LONG_LONG)
#define SCNo64		"llo"
#endif
#endif

#define SCNoFAST8      "hho"
#define SCNoFAST16     "ho"
#define SCNoFAST32     "o"
#if defined(__64BIT__)
#define SCNoFAST64     "lo"
#else
#if defined(_LONG_LONG)
#define SCNoFAST64     "llo"
#endif
#endif

#define SCNoLEAST8      "hho"
#define SCNoLEAST16     "ho"
#define SCNoLEAST32     "o"
#if defined(__64BIT__)
#define SCNoLEAST64     "lo"
#else
#if defined(_LONG_LONG)
#define SCNoLEAST64     "llo"
#endif
#endif


#define SCNu8		"hhu"
#define SCNu16		"hu"
#define SCNu32		"u"
#if defined(__64BIT__)
#define SCNu64		"lu"
#else
#if defined(_LONG_LONG)
#define SCNu64		"llu"
#endif
#endif

#define SCNuFAST8      "hhu"
#define SCNuFAST16     "hu"
#define SCNuFAST32     "u"
#if defined(__64BIT__)
#define SCNuFAST64     "lu"
#else
#if defined(_LONG_LONG)
#define SCNuFAST64     "llu"
#endif
#endif

#define SCNuLEAST8      "hhu"
#define SCNuLEAST16     "hu"
#define SCNuLEAST32     "u"
#if defined(__64BIT__)
#define SCNuLEAST64     "lu"
#else
#if defined(_LONG_LONG)
#define SCNuLEAST64     "llu"
#endif
#endif


#define SCNx8		"hhx"
#define SCNx16		"hx"
#define SCNx32		"x"
#if defined(__64BIT__)
#define SCNx64		"lx"
#else
#if defined(_LONG_LONG)
#define SCNx64		"llx"
#endif
#endif

#define SCNxFAST8      "hhx"
#define SCNxFAST16     "hx"
#define SCNxFAST32     "x"
#if defined(__64BIT__)
#define SCNxFAST64     "lx"
#else
#if defined(_LONG_LONG)
#define SCNxFAST64     "llx"
#endif
#endif

#define SCNxLEAST8	"hhx"
#define SCNxLEAST16	"hx"
#define SCNxLEAST32	"x"
#if defined(__64BIT__)
#define SCNxLEAST64	"lx"
#else
#if defined(_LONG_LONG)
#define SCNxLEAST64     "llx"
#endif
#endif



/* printf/scan macros for intmax, intfast, intptr */

#if defined(_LONG_LONG) && !defined(__64BIT__)
#define PRIdMAX		"lld"
#define PRIiMAX		"lld"
#define PRIoMAX		"llo"
#define PRIxMAX		"llx"
#define PRIXMAX		"llX"
#define PRIuMAX		"llu"
#else
#define PRIdMAX		"ld"
#define PRIiMAX		"ld"
#define PRIoMAX		"lo"
#define PRIxMAX		"lx"
#define PRIXMAX		"lX"
#define PRIuMAX		"lu"
#endif

#define PRIdFAST	"d"
#define PRIoFAST	"o"
#define PRIxFAST	"x"
#define PRIuFAST	"u"
#define PRIdPTR		"ld"
#define PRIiPTR		"ld"
#define PRIoPTR		"lo"
#define PRIxPTR		"lx"
#define PRIXPTR		"lX"
#define PRIuPTR		"lu"

#if defined(_LONG_LONG) && !defined(__64BIT__)
#define SCNdMAX		"lld"
#define SCNiMAX		"lld"
#define SCNoMAX		"llo"
#define SCNxMAX		"llx"
#define SCNuMAX		"llu"
#else
#define SCNdMAX		"ld"
#define SCNiMAX		"ld"
#define SCNoMAX		"lo"
#define SCNxMAX		"lx"
#define SCNuMAX		"lu"
#endif

#define SCNdFAST	"d"
#define SCNoFAST	"o"
#define SCNxFAST	"x"
#define SCNuFAST	"u"
#define SCNdPTR		"ld"
#define SCNiPTR		"ld"
#define SCNoPTR		"lo"
#define SCNxPTR		"lx"
#define SCNuPTR		"lu"

#endif /* _STD_TYPES_T  */

#endif /* _ISOC99_SOURCE */
#endif /* _ANSI_C_SOURCE */


#ifndef _H_INTTYPES_TYPE_TS
/* These types provide fixed size types that preserve source compatibility
 * for 32 bit interfaces with long types in structures that shouldn't be
 * 64 bits wide in 64 bit compilation mode.
 */
#ifdef __64BIT__
typedef signed int	__long32_t;
typedef unsigned int	__ulong32_t;
#else
typedef signed long	__long32_t;
typedef unsigned long	__ulong32_t;
#endif /* __64BIT__ */

/* These types provide variable size types that preserve source compatibility
 * for 32 bit interfaces with int types in structures that need to be
 * 64 bits wide in 64 bit compilation mode.
 */
#ifndef __LONG64_T
#define __LONG64_T
#ifdef __64BIT__
typedef signed long	__long64_t;
typedef unsigned long	__ulong64_t;
#else
typedef signed int	__long64_t;
typedef unsigned int	__ulong64_t;
#endif /* __64BIT__ */
#endif /* __LONG64_T */

/* These types provide variable size types that preserve source compatibility
 * for 32 and 64 bit application interfaces with int types in structures 
 * that need to be 64 bits wide in 64 bit kernel and/or kernel extensions.
 */
#ifndef _INT32LONG64_T
#define _INT32LONG64_T
#if defined(__64BIT_KERNEL) && defined(_KERNEL)
typedef signed long	int32long64_t;
typedef unsigned long	uint32long64_t;
#else
typedef signed int	int32long64_t;
typedef unsigned int	uint32long64_t;
#endif /* __64BIT_KERNEL && _KERNEL */
#endif /* _INT32LONG64_T */

/* These types provide variable size types that preserve source compatibility
 * for 32 and 64 bit application interfaces with long types in structures 
 * that need to be variant for 32 and 64 bit applications, but invariant
 * 32-bit for kernel and kernel extensions.
 */
#if defined(__64BIT_KERNEL) && defined(_KERNEL)
typedef signed int	long32int64_t;
typedef unsigned int	ulong32int64_t;
#else
typedef signed long	long32int64_t;
typedef unsigned long	ulong32int64_t;
#endif /* __64BIT_KERNEL && _KERNEL */
#endif /* _H_INTTYPES_TYPE_TS */

#ifdef _ALL_SOURCE

#define INTFAST_MIN	INT32_MIN
#define INTFAST_MAX	INT32_MAX
#define UINTFAST_MAX	UINT32_MAX

/*
 * BSD fixed-size integer type additions to the above ISO-C types.
 *
 */
typedef signed char		int8;
typedef signed short		int16;
typedef signed int		int32;
#ifdef	__64BIT__
typedef long			int64;
#else	/* _ILP32 */
#if defined(_LONG_LONG)
typedef	signed long long	int64;
#endif
#endif

typedef unsigned char		u_int8;
typedef unsigned char		u_int8_t;
typedef unsigned short		u_int16;
typedef unsigned short		u_int16_t;
typedef unsigned int		u_int32;
typedef unsigned int		u_int32_t;
#ifdef	__64BIT__
typedef unsigned long		u_int64;
typedef unsigned long		u_int64_t;
#else	/* _ILP32 */
#if defined(_LONG_LONG)
typedef unsigned long long	u_int64;
typedef unsigned long long	u_int64_t;
#endif
#endif

#endif  /* _ALL_SOURCE */  

#ifdef _STD_TYPES_T
#ifndef _H_INTTYPES_TYPE_TS
#define _H_INTTYPES_TYPE_TS
#endif  /* _H_STDINT_TYPE_TS */
#endif

#ifdef __cplusplus
}
#endif

#endif /* _H_INTTYPES */
