mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 00:55:37 +00:00
529eddba7d
--HG-- rename : memory/jemalloc/src/include/msvc_compat/inttypes.h => memory/jemalloc/src/include/msvc_compat/C99/inttypes.h rename : memory/jemalloc/src/include/msvc_compat/stdbool.h => memory/jemalloc/src/include/msvc_compat/C99/stdbool.h rename : memory/jemalloc/src/include/msvc_compat/stdint.h => memory/jemalloc/src/include/msvc_compat/C99/stdint.h
1225 lines
36 KiB
Diff
1225 lines
36 KiB
Diff
diff -r 1da44232e82e -r 73d73a2ae3ad configure
|
|
--- a/configure Wed May 21 14:41:51 2014 -0700
|
|
+++ b/configure Thu May 29 16:35:25 2014 +0900
|
|
@@ -4333,16 +4333,20 @@ fi
|
|
|
|
if test "x${ac_cv_big_endian}" = "x1" ; then
|
|
cat >>confdefs.h <<_ACEOF
|
|
#define JEMALLOC_BIG_ENDIAN
|
|
_ACEOF
|
|
|
|
fi
|
|
|
|
+if test "x${je_cv_msvc}" = "xyes" -a "x${ac_cv_header_inttypes_h}" = "xno"; then
|
|
+ CPPFLAGS="$CPPFLAGS -I${srcroot}/include/msvc_compat/C99"
|
|
+fi
|
|
+
|
|
# The cast to long int works around a bug in the HP C Compiler
|
|
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
|
|
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
|
|
# This bug is HP SR number 8606223364.
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
|
|
$as_echo_n "checking size of void *... " >&6; }
|
|
if ${ac_cv_sizeof_void_p+:} false; then :
|
|
$as_echo_n "(cached) " >&6
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad configure.ac
|
|
--- a/configure.ac Wed May 21 14:41:51 2014 -0700
|
|
+++ b/configure.ac Thu May 29 16:35:25 2014 +0900
|
|
@@ -150,16 +150,20 @@ if test "x$EXTRA_CFLAGS" != "x" ; then
|
|
fi
|
|
AC_PROG_CPP
|
|
|
|
AC_C_BIGENDIAN([ac_cv_big_endian=1], [ac_cv_big_endian=0])
|
|
if test "x${ac_cv_big_endian}" = "x1" ; then
|
|
AC_DEFINE_UNQUOTED([JEMALLOC_BIG_ENDIAN], [ ])
|
|
fi
|
|
|
|
+if test "x${je_cv_msvc}" = "xyes" -a "x${ac_cv_header_inttypes_h}" = "xno"; then
|
|
+ CPPFLAGS="$CPPFLAGS -I${srcroot}/include/msvc_compat/C99"
|
|
+fi
|
|
+
|
|
AC_CHECK_SIZEOF([void *])
|
|
if test "x${ac_cv_sizeof_void_p}" = "x8" ; then
|
|
LG_SIZEOF_PTR=3
|
|
elif test "x${ac_cv_sizeof_void_p}" = "x4" ; then
|
|
LG_SIZEOF_PTR=2
|
|
else
|
|
AC_MSG_ERROR([Unsupported pointer size: ${ac_cv_sizeof_void_p}])
|
|
fi
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/C99/inttypes.h
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ b/include/msvc_compat/C99/inttypes.h Thu May 29 16:35:25 2014 +0900
|
|
@@ -0,0 +1,313 @@
|
|
+// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
|
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
+//
|
|
+// Copyright (c) 2006 Alexander Chemeris
|
|
+//
|
|
+// Redistribution and use in source and binary forms, with or without
|
|
+// modification, are permitted provided that the following conditions are met:
|
|
+//
|
|
+// 1. Redistributions of source code must retain the above copyright notice,
|
|
+// this list of conditions and the following disclaimer.
|
|
+//
|
|
+// 2. Redistributions in binary form must reproduce the above copyright
|
|
+// notice, this list of conditions and the following disclaimer in the
|
|
+// documentation and/or other materials provided with the distribution.
|
|
+//
|
|
+// 3. The name of the author may be used to endorse or promote products
|
|
+// derived from this software without specific prior written permission.
|
|
+//
|
|
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
+//
|
|
+///////////////////////////////////////////////////////////////////////////////
|
|
+
|
|
+#ifndef _MSC_VER // [
|
|
+#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
+#endif // _MSC_VER ]
|
|
+
|
|
+#ifndef _MSC_INTTYPES_H_ // [
|
|
+#define _MSC_INTTYPES_H_
|
|
+
|
|
+#if _MSC_VER > 1000
|
|
+#pragma once
|
|
+#endif
|
|
+
|
|
+#include "stdint.h"
|
|
+
|
|
+// 7.8 Format conversion of integer types
|
|
+
|
|
+typedef struct {
|
|
+ intmax_t quot;
|
|
+ intmax_t rem;
|
|
+} imaxdiv_t;
|
|
+
|
|
+// 7.8.1 Macros for format specifiers
|
|
+
|
|
+#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198
|
|
+
|
|
+#ifdef _WIN64
|
|
+# define __PRI64_PREFIX "l"
|
|
+# define __PRIPTR_PREFIX "l"
|
|
+#else
|
|
+# define __PRI64_PREFIX "ll"
|
|
+# define __PRIPTR_PREFIX
|
|
+#endif
|
|
+
|
|
+// The fprintf macros for signed integers are:
|
|
+#define PRId8 "d"
|
|
+#define PRIi8 "i"
|
|
+#define PRIdLEAST8 "d"
|
|
+#define PRIiLEAST8 "i"
|
|
+#define PRIdFAST8 "d"
|
|
+#define PRIiFAST8 "i"
|
|
+
|
|
+#define PRId16 "hd"
|
|
+#define PRIi16 "hi"
|
|
+#define PRIdLEAST16 "hd"
|
|
+#define PRIiLEAST16 "hi"
|
|
+#define PRIdFAST16 "hd"
|
|
+#define PRIiFAST16 "hi"
|
|
+
|
|
+#define PRId32 "d"
|
|
+#define PRIi32 "i"
|
|
+#define PRIdLEAST32 "d"
|
|
+#define PRIiLEAST32 "i"
|
|
+#define PRIdFAST32 "d"
|
|
+#define PRIiFAST32 "i"
|
|
+
|
|
+#define PRId64 __PRI64_PREFIX "d"
|
|
+#define PRIi64 __PRI64_PREFIX "i"
|
|
+#define PRIdLEAST64 __PRI64_PREFIX "d"
|
|
+#define PRIiLEAST64 __PRI64_PREFIX "i"
|
|
+#define PRIdFAST64 __PRI64_PREFIX "d"
|
|
+#define PRIiFAST64 __PRI64_PREFIX "i"
|
|
+
|
|
+#define PRIdMAX __PRI64_PREFIX "d"
|
|
+#define PRIiMAX __PRI64_PREFIX "i"
|
|
+
|
|
+#define PRIdPTR __PRIPTR_PREFIX "d"
|
|
+#define PRIiPTR __PRIPTR_PREFIX "i"
|
|
+
|
|
+// The fprintf macros for unsigned integers are:
|
|
+#define PRIo8 "o"
|
|
+#define PRIu8 "u"
|
|
+#define PRIx8 "x"
|
|
+#define PRIX8 "X"
|
|
+#define PRIoLEAST8 "o"
|
|
+#define PRIuLEAST8 "u"
|
|
+#define PRIxLEAST8 "x"
|
|
+#define PRIXLEAST8 "X"
|
|
+#define PRIoFAST8 "o"
|
|
+#define PRIuFAST8 "u"
|
|
+#define PRIxFAST8 "x"
|
|
+#define PRIXFAST8 "X"
|
|
+
|
|
+#define PRIo16 "ho"
|
|
+#define PRIu16 "hu"
|
|
+#define PRIx16 "hx"
|
|
+#define PRIX16 "hX"
|
|
+#define PRIoLEAST16 "ho"
|
|
+#define PRIuLEAST16 "hu"
|
|
+#define PRIxLEAST16 "hx"
|
|
+#define PRIXLEAST16 "hX"
|
|
+#define PRIoFAST16 "ho"
|
|
+#define PRIuFAST16 "hu"
|
|
+#define PRIxFAST16 "hx"
|
|
+#define PRIXFAST16 "hX"
|
|
+
|
|
+#define PRIo32 "o"
|
|
+#define PRIu32 "u"
|
|
+#define PRIx32 "x"
|
|
+#define PRIX32 "X"
|
|
+#define PRIoLEAST32 "o"
|
|
+#define PRIuLEAST32 "u"
|
|
+#define PRIxLEAST32 "x"
|
|
+#define PRIXLEAST32 "X"
|
|
+#define PRIoFAST32 "o"
|
|
+#define PRIuFAST32 "u"
|
|
+#define PRIxFAST32 "x"
|
|
+#define PRIXFAST32 "X"
|
|
+
|
|
+#define PRIo64 __PRI64_PREFIX "o"
|
|
+#define PRIu64 __PRI64_PREFIX "u"
|
|
+#define PRIx64 __PRI64_PREFIX "x"
|
|
+#define PRIX64 __PRI64_PREFIX "X"
|
|
+#define PRIoLEAST64 __PRI64_PREFIX "o"
|
|
+#define PRIuLEAST64 __PRI64_PREFIX "u"
|
|
+#define PRIxLEAST64 __PRI64_PREFIX "x"
|
|
+#define PRIXLEAST64 __PRI64_PREFIX "X"
|
|
+#define PRIoFAST64 __PRI64_PREFIX "o"
|
|
+#define PRIuFAST64 __PRI64_PREFIX "u"
|
|
+#define PRIxFAST64 __PRI64_PREFIX "x"
|
|
+#define PRIXFAST64 __PRI64_PREFIX "X"
|
|
+
|
|
+#define PRIoMAX __PRI64_PREFIX "o"
|
|
+#define PRIuMAX __PRI64_PREFIX "u"
|
|
+#define PRIxMAX __PRI64_PREFIX "x"
|
|
+#define PRIXMAX __PRI64_PREFIX "X"
|
|
+
|
|
+#define PRIoPTR __PRIPTR_PREFIX "o"
|
|
+#define PRIuPTR __PRIPTR_PREFIX "u"
|
|
+#define PRIxPTR __PRIPTR_PREFIX "x"
|
|
+#define PRIXPTR __PRIPTR_PREFIX "X"
|
|
+
|
|
+// The fscanf macros for signed integers are:
|
|
+#define SCNd8 "d"
|
|
+#define SCNi8 "i"
|
|
+#define SCNdLEAST8 "d"
|
|
+#define SCNiLEAST8 "i"
|
|
+#define SCNdFAST8 "d"
|
|
+#define SCNiFAST8 "i"
|
|
+
|
|
+#define SCNd16 "hd"
|
|
+#define SCNi16 "hi"
|
|
+#define SCNdLEAST16 "hd"
|
|
+#define SCNiLEAST16 "hi"
|
|
+#define SCNdFAST16 "hd"
|
|
+#define SCNiFAST16 "hi"
|
|
+
|
|
+#define SCNd32 "ld"
|
|
+#define SCNi32 "li"
|
|
+#define SCNdLEAST32 "ld"
|
|
+#define SCNiLEAST32 "li"
|
|
+#define SCNdFAST32 "ld"
|
|
+#define SCNiFAST32 "li"
|
|
+
|
|
+#define SCNd64 "I64d"
|
|
+#define SCNi64 "I64i"
|
|
+#define SCNdLEAST64 "I64d"
|
|
+#define SCNiLEAST64 "I64i"
|
|
+#define SCNdFAST64 "I64d"
|
|
+#define SCNiFAST64 "I64i"
|
|
+
|
|
+#define SCNdMAX "I64d"
|
|
+#define SCNiMAX "I64i"
|
|
+
|
|
+#ifdef _WIN64 // [
|
|
+# define SCNdPTR "I64d"
|
|
+# define SCNiPTR "I64i"
|
|
+#else // _WIN64 ][
|
|
+# define SCNdPTR "ld"
|
|
+# define SCNiPTR "li"
|
|
+#endif // _WIN64 ]
|
|
+
|
|
+// The fscanf macros for unsigned integers are:
|
|
+#define SCNo8 "o"
|
|
+#define SCNu8 "u"
|
|
+#define SCNx8 "x"
|
|
+#define SCNX8 "X"
|
|
+#define SCNoLEAST8 "o"
|
|
+#define SCNuLEAST8 "u"
|
|
+#define SCNxLEAST8 "x"
|
|
+#define SCNXLEAST8 "X"
|
|
+#define SCNoFAST8 "o"
|
|
+#define SCNuFAST8 "u"
|
|
+#define SCNxFAST8 "x"
|
|
+#define SCNXFAST8 "X"
|
|
+
|
|
+#define SCNo16 "ho"
|
|
+#define SCNu16 "hu"
|
|
+#define SCNx16 "hx"
|
|
+#define SCNX16 "hX"
|
|
+#define SCNoLEAST16 "ho"
|
|
+#define SCNuLEAST16 "hu"
|
|
+#define SCNxLEAST16 "hx"
|
|
+#define SCNXLEAST16 "hX"
|
|
+#define SCNoFAST16 "ho"
|
|
+#define SCNuFAST16 "hu"
|
|
+#define SCNxFAST16 "hx"
|
|
+#define SCNXFAST16 "hX"
|
|
+
|
|
+#define SCNo32 "lo"
|
|
+#define SCNu32 "lu"
|
|
+#define SCNx32 "lx"
|
|
+#define SCNX32 "lX"
|
|
+#define SCNoLEAST32 "lo"
|
|
+#define SCNuLEAST32 "lu"
|
|
+#define SCNxLEAST32 "lx"
|
|
+#define SCNXLEAST32 "lX"
|
|
+#define SCNoFAST32 "lo"
|
|
+#define SCNuFAST32 "lu"
|
|
+#define SCNxFAST32 "lx"
|
|
+#define SCNXFAST32 "lX"
|
|
+
|
|
+#define SCNo64 "I64o"
|
|
+#define SCNu64 "I64u"
|
|
+#define SCNx64 "I64x"
|
|
+#define SCNX64 "I64X"
|
|
+#define SCNoLEAST64 "I64o"
|
|
+#define SCNuLEAST64 "I64u"
|
|
+#define SCNxLEAST64 "I64x"
|
|
+#define SCNXLEAST64 "I64X"
|
|
+#define SCNoFAST64 "I64o"
|
|
+#define SCNuFAST64 "I64u"
|
|
+#define SCNxFAST64 "I64x"
|
|
+#define SCNXFAST64 "I64X"
|
|
+
|
|
+#define SCNoMAX "I64o"
|
|
+#define SCNuMAX "I64u"
|
|
+#define SCNxMAX "I64x"
|
|
+#define SCNXMAX "I64X"
|
|
+
|
|
+#ifdef _WIN64 // [
|
|
+# define SCNoPTR "I64o"
|
|
+# define SCNuPTR "I64u"
|
|
+# define SCNxPTR "I64x"
|
|
+# define SCNXPTR "I64X"
|
|
+#else // _WIN64 ][
|
|
+# define SCNoPTR "lo"
|
|
+# define SCNuPTR "lu"
|
|
+# define SCNxPTR "lx"
|
|
+# define SCNXPTR "lX"
|
|
+#endif // _WIN64 ]
|
|
+
|
|
+#endif // __STDC_FORMAT_MACROS ]
|
|
+
|
|
+// 7.8.2 Functions for greatest-width integer types
|
|
+
|
|
+// 7.8.2.1 The imaxabs function
|
|
+#define imaxabs _abs64
|
|
+
|
|
+// 7.8.2.2 The imaxdiv function
|
|
+
|
|
+// This is modified version of div() function from Microsoft's div.c found
|
|
+// in %MSVC.NET%\crt\src\div.c
|
|
+#ifdef STATIC_IMAXDIV // [
|
|
+static
|
|
+#else // STATIC_IMAXDIV ][
|
|
+_inline
|
|
+#endif // STATIC_IMAXDIV ]
|
|
+imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
|
|
+{
|
|
+ imaxdiv_t result;
|
|
+
|
|
+ result.quot = numer / denom;
|
|
+ result.rem = numer % denom;
|
|
+
|
|
+ if (numer < 0 && result.rem > 0) {
|
|
+ // did division wrong; must fix up
|
|
+ ++result.quot;
|
|
+ result.rem -= denom;
|
|
+ }
|
|
+
|
|
+ return result;
|
|
+}
|
|
+
|
|
+// 7.8.2.3 The strtoimax and strtoumax functions
|
|
+#define strtoimax _strtoi64
|
|
+#define strtoumax _strtoui64
|
|
+
|
|
+// 7.8.2.4 The wcstoimax and wcstoumax functions
|
|
+#define wcstoimax _wcstoi64
|
|
+#define wcstoumax _wcstoui64
|
|
+
|
|
+
|
|
+#endif // _MSC_INTTYPES_H_ ]
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/C99/stdbool.h
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ b/include/msvc_compat/C99/stdbool.h Thu May 29 16:35:25 2014 +0900
|
|
@@ -0,0 +1,16 @@
|
|
+#ifndef stdbool_h
|
|
+#define stdbool_h
|
|
+
|
|
+#include <wtypes.h>
|
|
+
|
|
+/* MSVC doesn't define _Bool or bool in C, but does have BOOL */
|
|
+/* Note this doesn't pass autoconf's test because (bool) 0.5 != true */
|
|
+typedef BOOL _Bool;
|
|
+
|
|
+#define bool _Bool
|
|
+#define true 1
|
|
+#define false 0
|
|
+
|
|
+#define __bool_true_false_are_defined 1
|
|
+
|
|
+#endif /* stdbool_h */
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/C99/stdint.h
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ b/include/msvc_compat/C99/stdint.h Thu May 29 16:35:25 2014 +0900
|
|
@@ -0,0 +1,247 @@
|
|
+// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
|
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
+//
|
|
+// Copyright (c) 2006-2008 Alexander Chemeris
|
|
+//
|
|
+// Redistribution and use in source and binary forms, with or without
|
|
+// modification, are permitted provided that the following conditions are met:
|
|
+//
|
|
+// 1. Redistributions of source code must retain the above copyright notice,
|
|
+// this list of conditions and the following disclaimer.
|
|
+//
|
|
+// 2. Redistributions in binary form must reproduce the above copyright
|
|
+// notice, this list of conditions and the following disclaimer in the
|
|
+// documentation and/or other materials provided with the distribution.
|
|
+//
|
|
+// 3. The name of the author may be used to endorse or promote products
|
|
+// derived from this software without specific prior written permission.
|
|
+//
|
|
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
+//
|
|
+///////////////////////////////////////////////////////////////////////////////
|
|
+
|
|
+#ifndef _MSC_VER // [
|
|
+#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
+#endif // _MSC_VER ]
|
|
+
|
|
+#ifndef _MSC_STDINT_H_ // [
|
|
+#define _MSC_STDINT_H_
|
|
+
|
|
+#if _MSC_VER > 1000
|
|
+#pragma once
|
|
+#endif
|
|
+
|
|
+#include <limits.h>
|
|
+
|
|
+// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
|
|
+// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
|
|
+// or compiler give many errors like this:
|
|
+// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+# include <wchar.h>
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+
|
|
+// Define _W64 macros to mark types changing their size, like intptr_t.
|
|
+#ifndef _W64
|
|
+# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
|
|
+# define _W64 __w64
|
|
+# else
|
|
+# define _W64
|
|
+# endif
|
|
+#endif
|
|
+
|
|
+
|
|
+// 7.18.1 Integer types
|
|
+
|
|
+// 7.18.1.1 Exact-width integer types
|
|
+
|
|
+// Visual Studio 6 and Embedded Visual C++ 4 doesn't
|
|
+// realize that, e.g. char has the same size as __int8
|
|
+// so we give up on __intX for them.
|
|
+#if (_MSC_VER < 1300)
|
|
+ typedef signed char int8_t;
|
|
+ typedef signed short int16_t;
|
|
+ typedef signed int int32_t;
|
|
+ typedef unsigned char uint8_t;
|
|
+ typedef unsigned short uint16_t;
|
|
+ typedef unsigned int uint32_t;
|
|
+#else
|
|
+ typedef signed __int8 int8_t;
|
|
+ typedef signed __int16 int16_t;
|
|
+ typedef signed __int32 int32_t;
|
|
+ typedef unsigned __int8 uint8_t;
|
|
+ typedef unsigned __int16 uint16_t;
|
|
+ typedef unsigned __int32 uint32_t;
|
|
+#endif
|
|
+typedef signed __int64 int64_t;
|
|
+typedef unsigned __int64 uint64_t;
|
|
+
|
|
+
|
|
+// 7.18.1.2 Minimum-width integer types
|
|
+typedef int8_t int_least8_t;
|
|
+typedef int16_t int_least16_t;
|
|
+typedef int32_t int_least32_t;
|
|
+typedef int64_t int_least64_t;
|
|
+typedef uint8_t uint_least8_t;
|
|
+typedef uint16_t uint_least16_t;
|
|
+typedef uint32_t uint_least32_t;
|
|
+typedef uint64_t uint_least64_t;
|
|
+
|
|
+// 7.18.1.3 Fastest minimum-width integer types
|
|
+typedef int8_t int_fast8_t;
|
|
+typedef int16_t int_fast16_t;
|
|
+typedef int32_t int_fast32_t;
|
|
+typedef int64_t int_fast64_t;
|
|
+typedef uint8_t uint_fast8_t;
|
|
+typedef uint16_t uint_fast16_t;
|
|
+typedef uint32_t uint_fast32_t;
|
|
+typedef uint64_t uint_fast64_t;
|
|
+
|
|
+// 7.18.1.4 Integer types capable of holding object pointers
|
|
+#ifdef _WIN64 // [
|
|
+ typedef signed __int64 intptr_t;
|
|
+ typedef unsigned __int64 uintptr_t;
|
|
+#else // _WIN64 ][
|
|
+ typedef _W64 signed int intptr_t;
|
|
+ typedef _W64 unsigned int uintptr_t;
|
|
+#endif // _WIN64 ]
|
|
+
|
|
+// 7.18.1.5 Greatest-width integer types
|
|
+typedef int64_t intmax_t;
|
|
+typedef uint64_t uintmax_t;
|
|
+
|
|
+
|
|
+// 7.18.2 Limits of specified-width integer types
|
|
+
|
|
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
|
|
+
|
|
+// 7.18.2.1 Limits of exact-width integer types
|
|
+#define INT8_MIN ((int8_t)_I8_MIN)
|
|
+#define INT8_MAX _I8_MAX
|
|
+#define INT16_MIN ((int16_t)_I16_MIN)
|
|
+#define INT16_MAX _I16_MAX
|
|
+#define INT32_MIN ((int32_t)_I32_MIN)
|
|
+#define INT32_MAX _I32_MAX
|
|
+#define INT64_MIN ((int64_t)_I64_MIN)
|
|
+#define INT64_MAX _I64_MAX
|
|
+#define UINT8_MAX _UI8_MAX
|
|
+#define UINT16_MAX _UI16_MAX
|
|
+#define UINT32_MAX _UI32_MAX
|
|
+#define UINT64_MAX _UI64_MAX
|
|
+
|
|
+// 7.18.2.2 Limits of minimum-width integer types
|
|
+#define INT_LEAST8_MIN INT8_MIN
|
|
+#define INT_LEAST8_MAX INT8_MAX
|
|
+#define INT_LEAST16_MIN INT16_MIN
|
|
+#define INT_LEAST16_MAX INT16_MAX
|
|
+#define INT_LEAST32_MIN INT32_MIN
|
|
+#define INT_LEAST32_MAX INT32_MAX
|
|
+#define INT_LEAST64_MIN INT64_MIN
|
|
+#define INT_LEAST64_MAX INT64_MAX
|
|
+#define UINT_LEAST8_MAX UINT8_MAX
|
|
+#define UINT_LEAST16_MAX UINT16_MAX
|
|
+#define UINT_LEAST32_MAX UINT32_MAX
|
|
+#define UINT_LEAST64_MAX UINT64_MAX
|
|
+
|
|
+// 7.18.2.3 Limits of fastest minimum-width integer types
|
|
+#define INT_FAST8_MIN INT8_MIN
|
|
+#define INT_FAST8_MAX INT8_MAX
|
|
+#define INT_FAST16_MIN INT16_MIN
|
|
+#define INT_FAST16_MAX INT16_MAX
|
|
+#define INT_FAST32_MIN INT32_MIN
|
|
+#define INT_FAST32_MAX INT32_MAX
|
|
+#define INT_FAST64_MIN INT64_MIN
|
|
+#define INT_FAST64_MAX INT64_MAX
|
|
+#define UINT_FAST8_MAX UINT8_MAX
|
|
+#define UINT_FAST16_MAX UINT16_MAX
|
|
+#define UINT_FAST32_MAX UINT32_MAX
|
|
+#define UINT_FAST64_MAX UINT64_MAX
|
|
+
|
|
+// 7.18.2.4 Limits of integer types capable of holding object pointers
|
|
+#ifdef _WIN64 // [
|
|
+# define INTPTR_MIN INT64_MIN
|
|
+# define INTPTR_MAX INT64_MAX
|
|
+# define UINTPTR_MAX UINT64_MAX
|
|
+#else // _WIN64 ][
|
|
+# define INTPTR_MIN INT32_MIN
|
|
+# define INTPTR_MAX INT32_MAX
|
|
+# define UINTPTR_MAX UINT32_MAX
|
|
+#endif // _WIN64 ]
|
|
+
|
|
+// 7.18.2.5 Limits of greatest-width integer types
|
|
+#define INTMAX_MIN INT64_MIN
|
|
+#define INTMAX_MAX INT64_MAX
|
|
+#define UINTMAX_MAX UINT64_MAX
|
|
+
|
|
+// 7.18.3 Limits of other integer types
|
|
+
|
|
+#ifdef _WIN64 // [
|
|
+# define PTRDIFF_MIN _I64_MIN
|
|
+# define PTRDIFF_MAX _I64_MAX
|
|
+#else // _WIN64 ][
|
|
+# define PTRDIFF_MIN _I32_MIN
|
|
+# define PTRDIFF_MAX _I32_MAX
|
|
+#endif // _WIN64 ]
|
|
+
|
|
+#define SIG_ATOMIC_MIN INT_MIN
|
|
+#define SIG_ATOMIC_MAX INT_MAX
|
|
+
|
|
+#ifndef SIZE_MAX // [
|
|
+# ifdef _WIN64 // [
|
|
+# define SIZE_MAX _UI64_MAX
|
|
+# else // _WIN64 ][
|
|
+# define SIZE_MAX _UI32_MAX
|
|
+# endif // _WIN64 ]
|
|
+#endif // SIZE_MAX ]
|
|
+
|
|
+// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
|
|
+#ifndef WCHAR_MIN // [
|
|
+# define WCHAR_MIN 0
|
|
+#endif // WCHAR_MIN ]
|
|
+#ifndef WCHAR_MAX // [
|
|
+# define WCHAR_MAX _UI16_MAX
|
|
+#endif // WCHAR_MAX ]
|
|
+
|
|
+#define WINT_MIN 0
|
|
+#define WINT_MAX _UI16_MAX
|
|
+
|
|
+#endif // __STDC_LIMIT_MACROS ]
|
|
+
|
|
+
|
|
+// 7.18.4 Limits of other integer types
|
|
+
|
|
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
|
|
+
|
|
+// 7.18.4.1 Macros for minimum-width integer constants
|
|
+
|
|
+#define INT8_C(val) val##i8
|
|
+#define INT16_C(val) val##i16
|
|
+#define INT32_C(val) val##i32
|
|
+#define INT64_C(val) val##i64
|
|
+
|
|
+#define UINT8_C(val) val##ui8
|
|
+#define UINT16_C(val) val##ui16
|
|
+#define UINT32_C(val) val##ui32
|
|
+#define UINT64_C(val) val##ui64
|
|
+
|
|
+// 7.18.4.2 Macros for greatest-width integer constants
|
|
+#define INTMAX_C INT64_C
|
|
+#define UINTMAX_C UINT64_C
|
|
+
|
|
+#endif // __STDC_CONSTANT_MACROS ]
|
|
+
|
|
+
|
|
+#endif // _MSC_STDINT_H_ ]
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/inttypes.h
|
|
--- a/include/msvc_compat/inttypes.h Wed May 21 14:41:51 2014 -0700
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,313 +0,0 @@
|
|
-// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
|
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
-//
|
|
-// Copyright (c) 2006 Alexander Chemeris
|
|
-//
|
|
-// Redistribution and use in source and binary forms, with or without
|
|
-// modification, are permitted provided that the following conditions are met:
|
|
-//
|
|
-// 1. Redistributions of source code must retain the above copyright notice,
|
|
-// this list of conditions and the following disclaimer.
|
|
-//
|
|
-// 2. Redistributions in binary form must reproduce the above copyright
|
|
-// notice, this list of conditions and the following disclaimer in the
|
|
-// documentation and/or other materials provided with the distribution.
|
|
-//
|
|
-// 3. The name of the author may be used to endorse or promote products
|
|
-// derived from this software without specific prior written permission.
|
|
-//
|
|
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
-//
|
|
-///////////////////////////////////////////////////////////////////////////////
|
|
-
|
|
-#ifndef _MSC_VER // [
|
|
-#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
-#endif // _MSC_VER ]
|
|
-
|
|
-#ifndef _MSC_INTTYPES_H_ // [
|
|
-#define _MSC_INTTYPES_H_
|
|
-
|
|
-#if _MSC_VER > 1000
|
|
-#pragma once
|
|
-#endif
|
|
-
|
|
-#include "stdint.h"
|
|
-
|
|
-// 7.8 Format conversion of integer types
|
|
-
|
|
-typedef struct {
|
|
- intmax_t quot;
|
|
- intmax_t rem;
|
|
-} imaxdiv_t;
|
|
-
|
|
-// 7.8.1 Macros for format specifiers
|
|
-
|
|
-#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198
|
|
-
|
|
-#ifdef _WIN64
|
|
-# define __PRI64_PREFIX "l"
|
|
-# define __PRIPTR_PREFIX "l"
|
|
-#else
|
|
-# define __PRI64_PREFIX "ll"
|
|
-# define __PRIPTR_PREFIX
|
|
-#endif
|
|
-
|
|
-// The fprintf macros for signed integers are:
|
|
-#define PRId8 "d"
|
|
-#define PRIi8 "i"
|
|
-#define PRIdLEAST8 "d"
|
|
-#define PRIiLEAST8 "i"
|
|
-#define PRIdFAST8 "d"
|
|
-#define PRIiFAST8 "i"
|
|
-
|
|
-#define PRId16 "hd"
|
|
-#define PRIi16 "hi"
|
|
-#define PRIdLEAST16 "hd"
|
|
-#define PRIiLEAST16 "hi"
|
|
-#define PRIdFAST16 "hd"
|
|
-#define PRIiFAST16 "hi"
|
|
-
|
|
-#define PRId32 "d"
|
|
-#define PRIi32 "i"
|
|
-#define PRIdLEAST32 "d"
|
|
-#define PRIiLEAST32 "i"
|
|
-#define PRIdFAST32 "d"
|
|
-#define PRIiFAST32 "i"
|
|
-
|
|
-#define PRId64 __PRI64_PREFIX "d"
|
|
-#define PRIi64 __PRI64_PREFIX "i"
|
|
-#define PRIdLEAST64 __PRI64_PREFIX "d"
|
|
-#define PRIiLEAST64 __PRI64_PREFIX "i"
|
|
-#define PRIdFAST64 __PRI64_PREFIX "d"
|
|
-#define PRIiFAST64 __PRI64_PREFIX "i"
|
|
-
|
|
-#define PRIdMAX __PRI64_PREFIX "d"
|
|
-#define PRIiMAX __PRI64_PREFIX "i"
|
|
-
|
|
-#define PRIdPTR __PRIPTR_PREFIX "d"
|
|
-#define PRIiPTR __PRIPTR_PREFIX "i"
|
|
-
|
|
-// The fprintf macros for unsigned integers are:
|
|
-#define PRIo8 "o"
|
|
-#define PRIu8 "u"
|
|
-#define PRIx8 "x"
|
|
-#define PRIX8 "X"
|
|
-#define PRIoLEAST8 "o"
|
|
-#define PRIuLEAST8 "u"
|
|
-#define PRIxLEAST8 "x"
|
|
-#define PRIXLEAST8 "X"
|
|
-#define PRIoFAST8 "o"
|
|
-#define PRIuFAST8 "u"
|
|
-#define PRIxFAST8 "x"
|
|
-#define PRIXFAST8 "X"
|
|
-
|
|
-#define PRIo16 "ho"
|
|
-#define PRIu16 "hu"
|
|
-#define PRIx16 "hx"
|
|
-#define PRIX16 "hX"
|
|
-#define PRIoLEAST16 "ho"
|
|
-#define PRIuLEAST16 "hu"
|
|
-#define PRIxLEAST16 "hx"
|
|
-#define PRIXLEAST16 "hX"
|
|
-#define PRIoFAST16 "ho"
|
|
-#define PRIuFAST16 "hu"
|
|
-#define PRIxFAST16 "hx"
|
|
-#define PRIXFAST16 "hX"
|
|
-
|
|
-#define PRIo32 "o"
|
|
-#define PRIu32 "u"
|
|
-#define PRIx32 "x"
|
|
-#define PRIX32 "X"
|
|
-#define PRIoLEAST32 "o"
|
|
-#define PRIuLEAST32 "u"
|
|
-#define PRIxLEAST32 "x"
|
|
-#define PRIXLEAST32 "X"
|
|
-#define PRIoFAST32 "o"
|
|
-#define PRIuFAST32 "u"
|
|
-#define PRIxFAST32 "x"
|
|
-#define PRIXFAST32 "X"
|
|
-
|
|
-#define PRIo64 __PRI64_PREFIX "o"
|
|
-#define PRIu64 __PRI64_PREFIX "u"
|
|
-#define PRIx64 __PRI64_PREFIX "x"
|
|
-#define PRIX64 __PRI64_PREFIX "X"
|
|
-#define PRIoLEAST64 __PRI64_PREFIX "o"
|
|
-#define PRIuLEAST64 __PRI64_PREFIX "u"
|
|
-#define PRIxLEAST64 __PRI64_PREFIX "x"
|
|
-#define PRIXLEAST64 __PRI64_PREFIX "X"
|
|
-#define PRIoFAST64 __PRI64_PREFIX "o"
|
|
-#define PRIuFAST64 __PRI64_PREFIX "u"
|
|
-#define PRIxFAST64 __PRI64_PREFIX "x"
|
|
-#define PRIXFAST64 __PRI64_PREFIX "X"
|
|
-
|
|
-#define PRIoMAX __PRI64_PREFIX "o"
|
|
-#define PRIuMAX __PRI64_PREFIX "u"
|
|
-#define PRIxMAX __PRI64_PREFIX "x"
|
|
-#define PRIXMAX __PRI64_PREFIX "X"
|
|
-
|
|
-#define PRIoPTR __PRIPTR_PREFIX "o"
|
|
-#define PRIuPTR __PRIPTR_PREFIX "u"
|
|
-#define PRIxPTR __PRIPTR_PREFIX "x"
|
|
-#define PRIXPTR __PRIPTR_PREFIX "X"
|
|
-
|
|
-// The fscanf macros for signed integers are:
|
|
-#define SCNd8 "d"
|
|
-#define SCNi8 "i"
|
|
-#define SCNdLEAST8 "d"
|
|
-#define SCNiLEAST8 "i"
|
|
-#define SCNdFAST8 "d"
|
|
-#define SCNiFAST8 "i"
|
|
-
|
|
-#define SCNd16 "hd"
|
|
-#define SCNi16 "hi"
|
|
-#define SCNdLEAST16 "hd"
|
|
-#define SCNiLEAST16 "hi"
|
|
-#define SCNdFAST16 "hd"
|
|
-#define SCNiFAST16 "hi"
|
|
-
|
|
-#define SCNd32 "ld"
|
|
-#define SCNi32 "li"
|
|
-#define SCNdLEAST32 "ld"
|
|
-#define SCNiLEAST32 "li"
|
|
-#define SCNdFAST32 "ld"
|
|
-#define SCNiFAST32 "li"
|
|
-
|
|
-#define SCNd64 "I64d"
|
|
-#define SCNi64 "I64i"
|
|
-#define SCNdLEAST64 "I64d"
|
|
-#define SCNiLEAST64 "I64i"
|
|
-#define SCNdFAST64 "I64d"
|
|
-#define SCNiFAST64 "I64i"
|
|
-
|
|
-#define SCNdMAX "I64d"
|
|
-#define SCNiMAX "I64i"
|
|
-
|
|
-#ifdef _WIN64 // [
|
|
-# define SCNdPTR "I64d"
|
|
-# define SCNiPTR "I64i"
|
|
-#else // _WIN64 ][
|
|
-# define SCNdPTR "ld"
|
|
-# define SCNiPTR "li"
|
|
-#endif // _WIN64 ]
|
|
-
|
|
-// The fscanf macros for unsigned integers are:
|
|
-#define SCNo8 "o"
|
|
-#define SCNu8 "u"
|
|
-#define SCNx8 "x"
|
|
-#define SCNX8 "X"
|
|
-#define SCNoLEAST8 "o"
|
|
-#define SCNuLEAST8 "u"
|
|
-#define SCNxLEAST8 "x"
|
|
-#define SCNXLEAST8 "X"
|
|
-#define SCNoFAST8 "o"
|
|
-#define SCNuFAST8 "u"
|
|
-#define SCNxFAST8 "x"
|
|
-#define SCNXFAST8 "X"
|
|
-
|
|
-#define SCNo16 "ho"
|
|
-#define SCNu16 "hu"
|
|
-#define SCNx16 "hx"
|
|
-#define SCNX16 "hX"
|
|
-#define SCNoLEAST16 "ho"
|
|
-#define SCNuLEAST16 "hu"
|
|
-#define SCNxLEAST16 "hx"
|
|
-#define SCNXLEAST16 "hX"
|
|
-#define SCNoFAST16 "ho"
|
|
-#define SCNuFAST16 "hu"
|
|
-#define SCNxFAST16 "hx"
|
|
-#define SCNXFAST16 "hX"
|
|
-
|
|
-#define SCNo32 "lo"
|
|
-#define SCNu32 "lu"
|
|
-#define SCNx32 "lx"
|
|
-#define SCNX32 "lX"
|
|
-#define SCNoLEAST32 "lo"
|
|
-#define SCNuLEAST32 "lu"
|
|
-#define SCNxLEAST32 "lx"
|
|
-#define SCNXLEAST32 "lX"
|
|
-#define SCNoFAST32 "lo"
|
|
-#define SCNuFAST32 "lu"
|
|
-#define SCNxFAST32 "lx"
|
|
-#define SCNXFAST32 "lX"
|
|
-
|
|
-#define SCNo64 "I64o"
|
|
-#define SCNu64 "I64u"
|
|
-#define SCNx64 "I64x"
|
|
-#define SCNX64 "I64X"
|
|
-#define SCNoLEAST64 "I64o"
|
|
-#define SCNuLEAST64 "I64u"
|
|
-#define SCNxLEAST64 "I64x"
|
|
-#define SCNXLEAST64 "I64X"
|
|
-#define SCNoFAST64 "I64o"
|
|
-#define SCNuFAST64 "I64u"
|
|
-#define SCNxFAST64 "I64x"
|
|
-#define SCNXFAST64 "I64X"
|
|
-
|
|
-#define SCNoMAX "I64o"
|
|
-#define SCNuMAX "I64u"
|
|
-#define SCNxMAX "I64x"
|
|
-#define SCNXMAX "I64X"
|
|
-
|
|
-#ifdef _WIN64 // [
|
|
-# define SCNoPTR "I64o"
|
|
-# define SCNuPTR "I64u"
|
|
-# define SCNxPTR "I64x"
|
|
-# define SCNXPTR "I64X"
|
|
-#else // _WIN64 ][
|
|
-# define SCNoPTR "lo"
|
|
-# define SCNuPTR "lu"
|
|
-# define SCNxPTR "lx"
|
|
-# define SCNXPTR "lX"
|
|
-#endif // _WIN64 ]
|
|
-
|
|
-#endif // __STDC_FORMAT_MACROS ]
|
|
-
|
|
-// 7.8.2 Functions for greatest-width integer types
|
|
-
|
|
-// 7.8.2.1 The imaxabs function
|
|
-#define imaxabs _abs64
|
|
-
|
|
-// 7.8.2.2 The imaxdiv function
|
|
-
|
|
-// This is modified version of div() function from Microsoft's div.c found
|
|
-// in %MSVC.NET%\crt\src\div.c
|
|
-#ifdef STATIC_IMAXDIV // [
|
|
-static
|
|
-#else // STATIC_IMAXDIV ][
|
|
-_inline
|
|
-#endif // STATIC_IMAXDIV ]
|
|
-imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
|
|
-{
|
|
- imaxdiv_t result;
|
|
-
|
|
- result.quot = numer / denom;
|
|
- result.rem = numer % denom;
|
|
-
|
|
- if (numer < 0 && result.rem > 0) {
|
|
- // did division wrong; must fix up
|
|
- ++result.quot;
|
|
- result.rem -= denom;
|
|
- }
|
|
-
|
|
- return result;
|
|
-}
|
|
-
|
|
-// 7.8.2.3 The strtoimax and strtoumax functions
|
|
-#define strtoimax _strtoi64
|
|
-#define strtoumax _strtoui64
|
|
-
|
|
-// 7.8.2.4 The wcstoimax and wcstoumax functions
|
|
-#define wcstoimax _wcstoi64
|
|
-#define wcstoumax _wcstoui64
|
|
-
|
|
-
|
|
-#endif // _MSC_INTTYPES_H_ ]
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/stdbool.h
|
|
--- a/include/msvc_compat/stdbool.h Wed May 21 14:41:51 2014 -0700
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,16 +0,0 @@
|
|
-#ifndef stdbool_h
|
|
-#define stdbool_h
|
|
-
|
|
-#include <wtypes.h>
|
|
-
|
|
-/* MSVC doesn't define _Bool or bool in C, but does have BOOL */
|
|
-/* Note this doesn't pass autoconf's test because (bool) 0.5 != true */
|
|
-typedef BOOL _Bool;
|
|
-
|
|
-#define bool _Bool
|
|
-#define true 1
|
|
-#define false 0
|
|
-
|
|
-#define __bool_true_false_are_defined 1
|
|
-
|
|
-#endif /* stdbool_h */
|
|
diff -r 1da44232e82e -r 73d73a2ae3ad include/msvc_compat/stdint.h
|
|
--- a/include/msvc_compat/stdint.h Wed May 21 14:41:51 2014 -0700
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,247 +0,0 @@
|
|
-// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
|
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
-//
|
|
-// Copyright (c) 2006-2008 Alexander Chemeris
|
|
-//
|
|
-// Redistribution and use in source and binary forms, with or without
|
|
-// modification, are permitted provided that the following conditions are met:
|
|
-//
|
|
-// 1. Redistributions of source code must retain the above copyright notice,
|
|
-// this list of conditions and the following disclaimer.
|
|
-//
|
|
-// 2. Redistributions in binary form must reproduce the above copyright
|
|
-// notice, this list of conditions and the following disclaimer in the
|
|
-// documentation and/or other materials provided with the distribution.
|
|
-//
|
|
-// 3. The name of the author may be used to endorse or promote products
|
|
-// derived from this software without specific prior written permission.
|
|
-//
|
|
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
|
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
-//
|
|
-///////////////////////////////////////////////////////////////////////////////
|
|
-
|
|
-#ifndef _MSC_VER // [
|
|
-#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
-#endif // _MSC_VER ]
|
|
-
|
|
-#ifndef _MSC_STDINT_H_ // [
|
|
-#define _MSC_STDINT_H_
|
|
-
|
|
-#if _MSC_VER > 1000
|
|
-#pragma once
|
|
-#endif
|
|
-
|
|
-#include <limits.h>
|
|
-
|
|
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
|
|
-// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
|
|
-// or compiler give many errors like this:
|
|
-// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
|
-#ifdef __cplusplus
|
|
-extern "C" {
|
|
-#endif
|
|
-# include <wchar.h>
|
|
-#ifdef __cplusplus
|
|
-}
|
|
-#endif
|
|
-
|
|
-// Define _W64 macros to mark types changing their size, like intptr_t.
|
|
-#ifndef _W64
|
|
-# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
|
|
-# define _W64 __w64
|
|
-# else
|
|
-# define _W64
|
|
-# endif
|
|
-#endif
|
|
-
|
|
-
|
|
-// 7.18.1 Integer types
|
|
-
|
|
-// 7.18.1.1 Exact-width integer types
|
|
-
|
|
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
|
|
-// realize that, e.g. char has the same size as __int8
|
|
-// so we give up on __intX for them.
|
|
-#if (_MSC_VER < 1300)
|
|
- typedef signed char int8_t;
|
|
- typedef signed short int16_t;
|
|
- typedef signed int int32_t;
|
|
- typedef unsigned char uint8_t;
|
|
- typedef unsigned short uint16_t;
|
|
- typedef unsigned int uint32_t;
|
|
-#else
|
|
- typedef signed __int8 int8_t;
|
|
- typedef signed __int16 int16_t;
|
|
- typedef signed __int32 int32_t;
|
|
- typedef unsigned __int8 uint8_t;
|
|
- typedef unsigned __int16 uint16_t;
|
|
- typedef unsigned __int32 uint32_t;
|
|
-#endif
|
|
-typedef signed __int64 int64_t;
|
|
-typedef unsigned __int64 uint64_t;
|
|
-
|
|
-
|
|
-// 7.18.1.2 Minimum-width integer types
|
|
-typedef int8_t int_least8_t;
|
|
-typedef int16_t int_least16_t;
|
|
-typedef int32_t int_least32_t;
|
|
-typedef int64_t int_least64_t;
|
|
-typedef uint8_t uint_least8_t;
|
|
-typedef uint16_t uint_least16_t;
|
|
-typedef uint32_t uint_least32_t;
|
|
-typedef uint64_t uint_least64_t;
|
|
-
|
|
-// 7.18.1.3 Fastest minimum-width integer types
|
|
-typedef int8_t int_fast8_t;
|
|
-typedef int16_t int_fast16_t;
|
|
-typedef int32_t int_fast32_t;
|
|
-typedef int64_t int_fast64_t;
|
|
-typedef uint8_t uint_fast8_t;
|
|
-typedef uint16_t uint_fast16_t;
|
|
-typedef uint32_t uint_fast32_t;
|
|
-typedef uint64_t uint_fast64_t;
|
|
-
|
|
-// 7.18.1.4 Integer types capable of holding object pointers
|
|
-#ifdef _WIN64 // [
|
|
- typedef signed __int64 intptr_t;
|
|
- typedef unsigned __int64 uintptr_t;
|
|
-#else // _WIN64 ][
|
|
- typedef _W64 signed int intptr_t;
|
|
- typedef _W64 unsigned int uintptr_t;
|
|
-#endif // _WIN64 ]
|
|
-
|
|
-// 7.18.1.5 Greatest-width integer types
|
|
-typedef int64_t intmax_t;
|
|
-typedef uint64_t uintmax_t;
|
|
-
|
|
-
|
|
-// 7.18.2 Limits of specified-width integer types
|
|
-
|
|
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
|
|
-
|
|
-// 7.18.2.1 Limits of exact-width integer types
|
|
-#define INT8_MIN ((int8_t)_I8_MIN)
|
|
-#define INT8_MAX _I8_MAX
|
|
-#define INT16_MIN ((int16_t)_I16_MIN)
|
|
-#define INT16_MAX _I16_MAX
|
|
-#define INT32_MIN ((int32_t)_I32_MIN)
|
|
-#define INT32_MAX _I32_MAX
|
|
-#define INT64_MIN ((int64_t)_I64_MIN)
|
|
-#define INT64_MAX _I64_MAX
|
|
-#define UINT8_MAX _UI8_MAX
|
|
-#define UINT16_MAX _UI16_MAX
|
|
-#define UINT32_MAX _UI32_MAX
|
|
-#define UINT64_MAX _UI64_MAX
|
|
-
|
|
-// 7.18.2.2 Limits of minimum-width integer types
|
|
-#define INT_LEAST8_MIN INT8_MIN
|
|
-#define INT_LEAST8_MAX INT8_MAX
|
|
-#define INT_LEAST16_MIN INT16_MIN
|
|
-#define INT_LEAST16_MAX INT16_MAX
|
|
-#define INT_LEAST32_MIN INT32_MIN
|
|
-#define INT_LEAST32_MAX INT32_MAX
|
|
-#define INT_LEAST64_MIN INT64_MIN
|
|
-#define INT_LEAST64_MAX INT64_MAX
|
|
-#define UINT_LEAST8_MAX UINT8_MAX
|
|
-#define UINT_LEAST16_MAX UINT16_MAX
|
|
-#define UINT_LEAST32_MAX UINT32_MAX
|
|
-#define UINT_LEAST64_MAX UINT64_MAX
|
|
-
|
|
-// 7.18.2.3 Limits of fastest minimum-width integer types
|
|
-#define INT_FAST8_MIN INT8_MIN
|
|
-#define INT_FAST8_MAX INT8_MAX
|
|
-#define INT_FAST16_MIN INT16_MIN
|
|
-#define INT_FAST16_MAX INT16_MAX
|
|
-#define INT_FAST32_MIN INT32_MIN
|
|
-#define INT_FAST32_MAX INT32_MAX
|
|
-#define INT_FAST64_MIN INT64_MIN
|
|
-#define INT_FAST64_MAX INT64_MAX
|
|
-#define UINT_FAST8_MAX UINT8_MAX
|
|
-#define UINT_FAST16_MAX UINT16_MAX
|
|
-#define UINT_FAST32_MAX UINT32_MAX
|
|
-#define UINT_FAST64_MAX UINT64_MAX
|
|
-
|
|
-// 7.18.2.4 Limits of integer types capable of holding object pointers
|
|
-#ifdef _WIN64 // [
|
|
-# define INTPTR_MIN INT64_MIN
|
|
-# define INTPTR_MAX INT64_MAX
|
|
-# define UINTPTR_MAX UINT64_MAX
|
|
-#else // _WIN64 ][
|
|
-# define INTPTR_MIN INT32_MIN
|
|
-# define INTPTR_MAX INT32_MAX
|
|
-# define UINTPTR_MAX UINT32_MAX
|
|
-#endif // _WIN64 ]
|
|
-
|
|
-// 7.18.2.5 Limits of greatest-width integer types
|
|
-#define INTMAX_MIN INT64_MIN
|
|
-#define INTMAX_MAX INT64_MAX
|
|
-#define UINTMAX_MAX UINT64_MAX
|
|
-
|
|
-// 7.18.3 Limits of other integer types
|
|
-
|
|
-#ifdef _WIN64 // [
|
|
-# define PTRDIFF_MIN _I64_MIN
|
|
-# define PTRDIFF_MAX _I64_MAX
|
|
-#else // _WIN64 ][
|
|
-# define PTRDIFF_MIN _I32_MIN
|
|
-# define PTRDIFF_MAX _I32_MAX
|
|
-#endif // _WIN64 ]
|
|
-
|
|
-#define SIG_ATOMIC_MIN INT_MIN
|
|
-#define SIG_ATOMIC_MAX INT_MAX
|
|
-
|
|
-#ifndef SIZE_MAX // [
|
|
-# ifdef _WIN64 // [
|
|
-# define SIZE_MAX _UI64_MAX
|
|
-# else // _WIN64 ][
|
|
-# define SIZE_MAX _UI32_MAX
|
|
-# endif // _WIN64 ]
|
|
-#endif // SIZE_MAX ]
|
|
-
|
|
-// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
|
|
-#ifndef WCHAR_MIN // [
|
|
-# define WCHAR_MIN 0
|
|
-#endif // WCHAR_MIN ]
|
|
-#ifndef WCHAR_MAX // [
|
|
-# define WCHAR_MAX _UI16_MAX
|
|
-#endif // WCHAR_MAX ]
|
|
-
|
|
-#define WINT_MIN 0
|
|
-#define WINT_MAX _UI16_MAX
|
|
-
|
|
-#endif // __STDC_LIMIT_MACROS ]
|
|
-
|
|
-
|
|
-// 7.18.4 Limits of other integer types
|
|
-
|
|
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
|
|
-
|
|
-// 7.18.4.1 Macros for minimum-width integer constants
|
|
-
|
|
-#define INT8_C(val) val##i8
|
|
-#define INT16_C(val) val##i16
|
|
-#define INT32_C(val) val##i32
|
|
-#define INT64_C(val) val##i64
|
|
-
|
|
-#define UINT8_C(val) val##ui8
|
|
-#define UINT16_C(val) val##ui16
|
|
-#define UINT32_C(val) val##ui32
|
|
-#define UINT64_C(val) val##ui64
|
|
-
|
|
-// 7.18.4.2 Macros for greatest-width integer constants
|
|
-#define INTMAX_C INT64_C
|
|
-#define UINTMAX_C UINT64_C
|
|
-
|
|
-#endif // __STDC_CONSTANT_MACROS ]
|
|
-
|
|
-
|
|
-#endif // _MSC_STDINT_H_ ]
|