+2005-05-13 Bruno Haible <bruno@clisp.org>
+
+ * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t,
+ int_fast64_t, uint_fast64_t, intmax_t, uintmax_t, INT64_MIN, INT64_MAX,
+ UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX,
+ INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTMAX_MIN,
+ INTMAX_MAX, UINTMAX_MAX, INT64_C, UINT64_C, INTMAX_C, UINTMAX_C):
+ Add support for 64-bit integers in the MSVC compiler.
+
2005-05-13 Paul Eggert <eggert@cs.ucla.edu>
* byteswap_.h, getsubopt.h, iconvme.h, strsep.c, strsep.h:
typedef long long int64_t;
#endif
typedef unsigned long long uint64_t;
+#elif defined(_MSC_VER)
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
#endif
#endif /* !FreeBSD */
typedef uint16_t uint_least16_t;
typedef int32_t int_least32_t;
typedef uint32_t uint_least32_t;
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
typedef int64_t int_least64_t;
typedef uint64_t uint_least64_t;
#endif
typedef uint32_t uint_fast16_t;
typedef int32_t int_fast32_t;
typedef uint32_t uint_fast32_t;
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
typedef int64_t int_fast64_t;
typedef uint64_t uint_fast64_t;
#endif
/* 7.18.1.5. Greatest-width integer types */
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
#else
#define INT64_MIN (~INT64_MIN)
#define INT64_MAX 9223372036854775807LL
#define UINT64_MAX 18446744073709551615ULL
+#elif defined(_MSC_VER)
+#define INT64_MIN (~INT64_MIN)
+#define INT64_MAX 9223372036854775807i64
+#define UINT64_MAX 18446744073709551615ui64
#endif
/* 7.18.2.2. Limits of minimum-width integer types */
#define INT_LEAST32_MIN INT32_MIN
#define INT_LEAST32_MAX INT32_MAX
#define UINT_LEAST32_MAX UINT32_MAX
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
#define INT_LEAST64_MIN INT64_MIN
#define INT_LEAST64_MAX INT64_MAX
#define UINT_LEAST64_MAX UINT64_MAX
#define INT_FAST32_MIN INT32_MIN
#define INT_FAST32_MAX INT32_MAX
#define UINT_FAST32_MAX UINT32_MAX
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
#define INT_FAST64_MIN INT64_MIN
#define INT_FAST64_MAX INT64_MAX
#define UINT_FAST64_MAX UINT64_MAX
/* 7.18.2.5. Limits of greatest-width integer types */
-#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@
+#if @HAVE_LONG_64BIT@ || @HAVE_LONG_LONG_64BIT@ || defined(_MSC_VER)
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
#elif @HAVE_LONG_LONG_64BIT@
#define INT64_C(x) x##LL
#define UINT64_C(x) x##ULL
+#elif defined(_MSC_VER)
+#define INT64_C(x) x##i64
+#define UINT64_C(x) x##ui64
#endif
/* 7.18.4.2. Macros for greatest-width integer constants */
#elif @HAVE_LONG_LONG_64BIT@
#define INTMAX_C(x) x##LL
#define UINTMAX_C(x) x##ULL
+#elif defined(_MSC_VER)
+#define INTMAX_C(x) x##i64
+#define UINTMAX_C(x) x##ui64
#else
#define INTMAX_C(x) x
#define UINTMAX_C(x) x##U