stdint.h revision e6dddefe0a0a7b4be93b2692b2e956852fa8cb9c
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync/** @file
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * IPRT - stdint.h wrapper (for backlevel compilers like MSC).
6c6531128b39093daeac902a8705c0bdf15b31ccvboxsync */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
6c6531128b39093daeac902a8705c0bdf15b31ccvboxsync/*
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Copyright (C) 2009 Sun Microsystems, Inc.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync *
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * available from http://www.virtualbox.org. This file is free software;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * you can redistribute it and/or modify it under the terms of the GNU
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * General Public License (GPL) as published by the Free Software
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync *
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * The contents of this file may alternatively be used under the terms
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * of the Common Development and Distribution License Version 1.0
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * VirtualBox OSE distribution, in which case the provisions of the
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * CDDL are applicable instead of those of the GPL.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync *
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * You may elect to license modified versions of this file under the
d5bf937d132098565e18a0d1fc408fb777c5e5b6vboxsync * terms and conditions of either the GPL or the CDDL or both.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync *
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync * additional information or have any questions.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#ifndef __iprt_stdint_h
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync#define __iprt_stdint_h
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync#include <iprt/cdefs.h>
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync/*
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync * Use the stdint.h on systems that have one.
6c6531128b39093daeac902a8705c0bdf15b31ccvboxsync */
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync#if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !(defined(RT_OS_FREEBSD) && defined(_KERNEL)) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(_MSC_VER) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(__IBMC__) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(__IBMCPP__) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(IPRT_NO_CRT) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync && !defined(DOXYGEN_RUNNING)
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync# ifndef __STDC_CONSTANT_MACROS
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# define __STDC_CONSTANT_MACROS
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# endif
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# ifndef __STDC_LIMIT_MACROS
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# define __STDC_LIMIT_MACROS
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# endif
6c6531128b39093daeac902a8705c0bdf15b31ccvboxsync# include <stdint.h>
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if defined(RT_OS_DARWIN) && defined(KERNEL) && defined(RT_ARCH_AMD64)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync /*
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Kludge to fix the incorrect 32-bit constant macros in
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync * Kernel.framework/Headers/stdin.h. uint32_t and int32_t are
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync * int not long as these macros use, which is significant when
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync * targeting AMD64. (10a222)
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# undef INT32_C
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync# define INT32_C(Value) (Value)
9986f9bfdcb0055fdb79bbd158f4912ccc3a5751vboxsync# undef UINT32_C
f7c0f913c4c22ee18059ff97055442566d0f14a1vboxsync# define UINT32_C(Value) (Value ## U)
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# endif /* 64-bit darwin kludge. */
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync#elif defined(RT_OS_FREEBSD) && defined(_KERNEL) \
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# ifndef __STDC_CONSTANT_MACROS
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define __STDC_CONSTANT_MACROS
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# ifndef __STDC_LIMIT_MACROS
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# define __STDC_LIMIT_MACROS
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# endif
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# include <sys/stdint.h>
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync#else /* No system stdint.h */
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync/*
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync * Define the types we use.
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync * The linux kernel defines all these in linux/types.h, so skip it.
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync */
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync || defined(IPRT_NO_CRT) \
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync || defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync || defined(DOXGEN_RUNNING)
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync /* Simplify the [u]int64_t type detection mess. */
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# undef IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES
da0cd3ee12f6b9c0e86f2aea3213cba6869b6647vboxsync# ifdef __IBMCPP__
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# if __IBMCPP__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__))
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# defined IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# endif
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# endif
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# ifdef __IBMC__
62c8fef246519d59ee7ad41dd71de75b96b3552bvboxsync# if __IBMC__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__))
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# defined IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync /* x-bit types */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INT8_T_DECLARED) && !defined(_INT8_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef signed char int8_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT8_T_DECLARED) && !defined(_UINT8_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned char uint8_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INT16_T_DECLARED) && !defined(_INT16_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef signed short int16_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT16_T_DECLARED) && !defined(_UINT16_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned short uint16_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INT32_T_DECLARED) && !defined(_INT32_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef signed int int32_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT32_T_DECLARED) && !defined(_UINT32_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned int uint32_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if defined(_MSC_VER)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef signed _int64 int64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned _int64 uint64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# elif defined(IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef struct { uint32_t lo; int32_t hi; } int64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef struct { uint32_t lo; uint32_t hi; } uint64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
32c16cab49ef1ab1aea3b3340fbc133b99ee8b20vboxsync# else /* Use long long for 64-bit types */
32c16cab49ef1ab1aea3b3340fbc133b99ee8b20vboxsync# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T)
32c16cab49ef1ab1aea3b3340fbc133b99ee8b20vboxsynctypedef signed long long int64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned long long uint64_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync /* max integer types */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INTMAX_T_DECLARED) && !defined(_INTMAX_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef int64_t intmax_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
32c16cab49ef1ab1aea3b3340fbc133b99ee8b20vboxsync# if !defined(_UINTMAX_T_DECLARED) && !defined(_UINTMAX_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef uint64_t uintmax_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# else
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# error "PORTME: Add architecture. Don't forget to check the [U]INTx_C() and [U]INTMAX_MIN/MAX macros."
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif /* !linux kernel or stuff */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync /* pointer <-> integer types */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_MSC_VER) || defined(DOXYGEN_RUNNING)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if ARCH_BITS == 32 \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || defined(RT_OS_LINUX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || defined(RT_OS_FREEBSD)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef signed long intptr_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef unsigned long uintptr_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# else
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef int64_t intptr_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsynctypedef uint64_t uintptr_t;
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# endif /* !_MSC_VER */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#endif /* no system stdint.h */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync/*
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Make sure the [U]INTx_C(c) macros are present.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * For In C++ source the system stdint.h may have skipped these if it was
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * included before we managed to define __STDC_CONSTANT_MACROS. (Kludge alert!)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#if !defined(INT8_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT16_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT32_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT64_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INTMAX_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT8_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT16_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT32_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT64_C) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINTMAX_C)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT8_C(Value) (Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT16_C(Value) (Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT32_C(Value) (Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT64_C(Value) (Value ## LL)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT8_C(Value) (Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT16_C(Value) (Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT32_C(Value) (Value ## U)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT64_C(Value) (Value ## ULL)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INTMAX_C(Value) INT64_C(Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINTMAX_C(Value) UINT64_C(Value)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync/*
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * Make sure the INTx_MIN and [U]INTx_MAX macros are present.
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * For In C++ source the system stdint.h may have skipped these if it was
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync * included before we managed to define __STDC_LIMIT_MACROS. (Kludge alert!)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync */
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#if !defined(INT8_MIN) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT16_MIN) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT32_MIN) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT64_MIN) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT8_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT16_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT32_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(INT64_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT8_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT16_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT32_MAX) \
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync || !defined(UINT64_MAX)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT8_MIN (INT8_C(-0x7f) - 1)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT16_MIN (INT16_C(-0x7fff) - 1)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT32_MIN (INT32_C(-0x7fffffff) - 1)
2c1d8cd8efdd4c486ff681135035d24111b03af8vboxsync# define INT64_MIN (INT64_C(-0x7fffffffffffffff) - 1)
2c1d8cd8efdd4c486ff681135035d24111b03af8vboxsync# define INT8_MAX INT8_C(0x7f)
2c1d8cd8efdd4c486ff681135035d24111b03af8vboxsync# define INT16_MAX INT16_C(0x7fff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT32_MAX INT32_C(0x7fffffff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INT64_MAX INT64_C(0x7fffffffffffffff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT8_MAX UINT8_C(0xff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT16_MAX UINT16_C(0xffff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT32_MAX UINT32_C(0xffffffff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define UINT64_MAX UINT64_C(0xffffffffffffffff)
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INTMAX_MIN INT64_MIN
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync# define INTMAX_MAX INT64_MAX
37e4655312fa6433c756cfa05a4db6b72e0c4344vboxsync# define UINTMAX_MAX UINT64_MAX
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync#endif
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync
d84b6107a8e797f41ac2d55bed97b02c91c742e8vboxsync