Avoid compilation errors with some C++ compilers.
[gnulib.git] / lib / inttypes_.h
index c6e40dd..2379540 100644 (file)
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#ifndef INTTYPES_H
+/* Include the original <inttypes.h> if it exists, and if this file
+   has not been included yet or if this file includes gnulib stdint.h
+   which in turn includes this file.  */
+#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+# if @HAVE_INTTYPES_H@
+#  include @ABSOLUTE_INTTYPES_H@
+# endif
+#endif
+
+#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
 #define INTTYPES_H
 
 /*
  * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
  */
 
-/* Include the original <inttypes.h> if it exists.  */
-#if @HAVE_INTTYPES_H@
-# include @ABSOLUTE_INTTYPES_H@
-#endif
 /* Include <stdint.h> or the gnulib replacement.  */
 #include <stdint.h>
 /* Get CHAR_BIT.  */
 
 #if ! defined __cplusplus || defined __STDC_FORMAT_MACROS
 
+# if defined _TNS_R_TARGET
+   /* Tandem NonStop R series and compatible platforms released before
+      July 2005 support %Ld but not %lld.  */
+#  define _LONG_LONG_FORMAT_PREFIX "L"
+# else
+#  define _LONG_LONG_FORMAT_PREFIX "ll"
+# endif
+
 # if !defined PRId8 || @PRI_MACROS_BROKEN@
 #  undef PRId8
 #  ifdef INT8_MAX
 #  elif defined _MSC_VER || defined __MINGW32__
 #   define _PRI64_PREFIX "I64"
 #  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#   define _PRI64_PREFIX "ll"
+#   define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
 #  endif
 #  if !defined PRId64 || @PRI_MACROS_BROKEN@
 #   undef PRId64
 #  endif
 # endif
 # ifdef UINT64_MAX
-#  if INT64_MAX == LONG_MAX
+#  if UINT64_MAX == ULONG_MAX
 #   define _PRIu64_PREFIX "l"
 #  elif defined _MSC_VER || defined __MINGW32__
 #   define _PRIu64_PREFIX "I64"
-#  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#   define _PRIu64_PREFIX "ll"
+#  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#   define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
 #  endif
 #  if !defined PRIo64 || @PRI_MACROS_BROKEN@
 #   undef PRIo64
 #   define SCNx8 "hhx"
 #  endif
 # endif
-# if !defined SCNX8 || @PRI_MACROS_BROKEN@
-#  undef SCNX8
-#  ifdef UINT8_MAX
-#   define SCNX8 "hhX"
-#  endif
-# endif
 # if !defined SCNd16 || @PRI_MACROS_BROKEN@
 #  undef SCNd16
 #  ifdef INT16_MAX
 #   define SCNx16 "hx"
 #  endif
 # endif
-# if !defined SCNX16 || @PRI_MACROS_BROKEN@
-#  undef SCNX16
-#  ifdef UINT16_MAX
-#   define SCNX16 "hX"
-#  endif
-# endif
 # if !defined SCNd32 || @PRI_MACROS_BROKEN@
 #  undef SCNd32
 #  ifdef INT32_MAX
 #   define SCNx32 "x"
 #  endif
 # endif
-# if !defined SCNX32 || @PRI_MACROS_BROKEN@
-#  undef SCNX32
-#  ifdef UINT32_MAX
-#   define SCNX32 "X"
-#  endif
-# endif
 # ifdef INT64_MAX
 #  if INT64_MAX == LONG_MAX
 #   define _SCN64_PREFIX "l"
 #  elif defined _MSC_VER || defined __MINGW32__
 #   define _SCN64_PREFIX "I64"
 #  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#   define _SCN64_PREFIX "ll"
+#   define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
 #  endif
 #  if !defined SCNd64 || @PRI_MACROS_BROKEN@
 #   undef SCNd64
 #  endif
 # endif
 # ifdef UINT64_MAX
-#  if INT64_MAX == LONG_MAX
+#  if UINT64_MAX == ULONG_MAX
 #   define _SCNu64_PREFIX "l"
 #  elif defined _MSC_VER || defined __MINGW32__
 #   define _SCNu64_PREFIX "I64"
-#  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-#   define _SCNu64_PREFIX "ll"
+#  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#   define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
 #  endif
 #  if !defined SCNo64 || @PRI_MACROS_BROKEN@
 #   undef SCNo64
 #   undef SCNx64
 #   define SCNx64 _SCNu64_PREFIX "x"
 #  endif
-#  if !defined SCNX64 || @PRI_MACROS_BROKEN@
-#   undef SCNX64
-#   define SCNX64 _SCNu64_PREFIX "X"
-#  endif
 # endif
 
 # if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
 #  undef SCNxLEAST8
 #  define SCNxLEAST8 "hhx"
 # endif
-# if !defined SCNXLEAST8 || @PRI_MACROS_BROKEN@
-#  undef SCNXLEAST8
-#  define SCNXLEAST8 "hhX"
-# endif
 # if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
 #  undef SCNdLEAST16
 #  define SCNdLEAST16 "hd"
 #  undef SCNxLEAST16
 #  define SCNxLEAST16 "hx"
 # endif
-# if !defined SCNXLEAST16 || @PRI_MACROS_BROKEN@
-#  undef SCNXLEAST16
-#  define SCNXLEAST16 "hX"
-# endif
 # if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
 #  undef SCNdLEAST32
 #  define SCNdLEAST32 "d"
 #  undef SCNxLEAST32
 #  define SCNxLEAST32 "x"
 # endif
-# if !defined SCNXLEAST32 || @PRI_MACROS_BROKEN@
-#  undef SCNXLEAST32
-#  define SCNXLEAST32 "X"
-# endif
 # ifdef INT64_MAX
 #  if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
 #   undef SCNdLEAST64
 #   undef SCNxLEAST64
 #   define SCNxLEAST64 SCNx64
 #  endif
-#  if !defined SCNXLEAST64 || @PRI_MACROS_BROKEN@
-#   undef SCNXLEAST64
-#   define SCNXLEAST64 SCNX64
-#  endif
 # endif
 
 # if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
 #   define SCNxFAST8 "x"
 #  endif
 # endif
-# if !defined SCNXFAST8 || @PRI_MACROS_BROKEN@
-#  undef SCNXFAST8
-#  if UINT_FAST8_MAX > UINT32_MAX
-#   define SCNXFAST8 SCNX64
-#  elif UINT_FAST8_MAX == 0xffff
-#   define SCNXFAST8 "hX"
-#  elif UINT_FAST8_MAX == 0xff
-#   define SCNXFAST8 "hhX"
-#  else
-#   define SCNXFAST8 "X"
-#  endif
-# endif
 # if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
 #  undef SCNdFAST16
 #  if INT_FAST16_MAX > INT32_MAX
 #   define SCNxFAST16 "x"
 #  endif
 # endif
-# if !defined SCNXFAST16 || @PRI_MACROS_BROKEN@
-#  undef SCNXFAST16
-#  if UINT_FAST16_MAX > UINT32_MAX
-#   define SCNXFAST16 SCNX64
-#  elif UINT_FAST16_MAX == 0xffff
-#   define SCNXFAST16 "hX"
-#  else
-#   define SCNXFAST16 "X"
-#  endif
-# endif
 # if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
 #  undef SCNdFAST32
 #  if INT_FAST32_MAX > INT32_MAX
 #   define SCNxFAST32 "x"
 #  endif
 # endif
-# if !defined SCNXFAST32 || @PRI_MACROS_BROKEN@
-#  undef SCNXFAST32
-#  if UINT_FAST32_MAX > UINT32_MAX
-#   define SCNXFAST32 SCNX64
-#  else
-#   define SCNXFAST32 "X"
-#  endif
-# endif
 # ifdef INT64_MAX
 #  if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
 #   undef SCNdFAST64
 #   undef SCNxFAST64
 #   define SCNxFAST64 SCNx64
 #  endif
-#  if !defined SCNXFAST64 || @PRI_MACROS_BROKEN@
-#   undef SCNXFAST64
-#   define SCNXFAST64 SCNX64
-#  endif
 # endif
 
 # if !defined SCNdMAX || @PRI_MACROS_BROKEN@
 #   define SCNxMAX "lx"
 #  endif
 # endif
-# if !defined SCNXMAX || @PRI_MACROS_BROKEN@
-#  undef SCNXMAX
-#  if UINTMAX_MAX > UINT32_MAX
-#   define SCNXMAX SCNX64
-#  else
-#   define SCNXMAX "lX"
-#  endif
-# endif
 
 # if !defined SCNdPTR || @PRI_MACROS_BROKEN@
 #  undef SCNdPTR
 #   define SCNxPTR @PRIPTR_PREFIX@ "x"
 #  endif
 # endif
-# if !defined SCNXPTR || @PRI_MACROS_BROKEN@
-#  undef SCNXPTR
-#  ifdef UINTPTR_MAX
-#   define SCNXPTR @PRIPTR_PREFIX@ "X"
-#  endif
-# endif
 
 #endif