summaryrefslogtreecommitdiff
path: root/ace/Basic_Types.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Basic_Types.h')
-rw-r--r--ace/Basic_Types.h286
1 files changed, 179 insertions, 107 deletions
diff --git a/ace/Basic_Types.h b/ace/Basic_Types.h
index 22ee72eacdb..a256c585f10 100644
--- a/ace/Basic_Types.h
+++ b/ace/Basic_Types.h
@@ -26,6 +26,8 @@
*
* Wrappers for built-in types of specific sizes:
* - ACE_USHORT16 (For backward compatibility. Use ACE_UINT16 instead.)
+ * - ACE_INT8
+ * - ACE_UINT8
* - ACE_INT16
* - ACE_UINT16
* - ACE_INT32
@@ -71,6 +73,13 @@
# include "ace/ACE_export.h"
+# if !defined (ACE_LACKS_STDINT_H)
+# include <stdint.h>
+# endif
+# if !defined (ACE_LACKS_INTTYPES_H)
+# include <inttypes.h>
+# endif
+
// A char always has 1 byte, by definition.
# define ACE_SIZEOF_CHAR 1
@@ -120,9 +129,6 @@
# endif /* !defined (ACE_SIZEOF_INT) */
// The number of bytes in a long.
-// NOTE - since preprocessors only need to do integer math, this is a likely
-// place for a preprocessor to not properly support being able to figure out
-// the proper size. HP aC++ and GNU gcc have this difficulty so watch out.
# if !defined (ACE_SIZEOF_LONG)
# if (ULONG_MAX) == 65535UL
# define ACE_SIZEOF_LONG 2
@@ -137,83 +143,117 @@
// The number of bytes in a long long.
# if !defined (ACE_SIZEOF_LONG_LONG)
-# if defined(__TANDEM)
-# define ACE_SIZEOF_LONG_LONG 8
-# elif defined (ACE_LACKS_LONGLONG_T)
-# define ACE_SIZEOF_LONG_LONG 8
-# else /* ! ACE_WIN32 && ! ACE_LACKS_LONGLONG_T */
-# if ACE_SIZEOF_LONG == 8
+# if defined (ACE_LACKS_LONGLONG_T)
+# define ACE_SIZEOF_LONG_LONG
+# elif defined (ULLONG_MAX)
+# if ((ULLONG_MAX) == 4294967295ULL)
+# define ACE_SIZEOF_LONG_LONG 4
+# elif ((ULLONG_MAX) == 18446744073709551615ULL)
# define ACE_SIZEOF_LONG_LONG 8
- typedef unsigned long ACE_UINT64;
- typedef signed long ACE_INT64;
-# elif defined (ULLONG_MAX) && !defined (__GNUG__)
- // Some compilers use ULLONG_MAX and others, e.g. Irix, use
- // ULONGLONG_MAX.
-# if (ULLONG_MAX) == 18446744073709551615ULL
-# define ACE_SIZEOF_LONG_LONG 8
-# elif (ULLONG_MAX) == 4294967295ULL
-# define ACE_SIZEOF_LONG_LONG 4
-# else
-# error Unsupported long long size needs to be updated for this platform
-# endif
- typedef unsigned long long ACE_UINT64;
- typedef signed long long ACE_INT64;
-# elif defined (ULONGLONG_MAX) && !defined (__GNUG__)
- // Irix 6.x, for example.
-# if (ULONGLONG_MAX) == 18446744073709551615ULL
-# define ACE_SIZEOF_LONG_LONG 8
-# elif (ULONGLONG_MAX) == 4294967295ULL
-# define ACE_SIZEOF_LONG_LONG 4
-# else
-# error Unsupported long long size needs to be updated for this platform
-# endif
- typedef unsigned long long ACE_UINT64;
- typedef signed long long ACE_INT64;
-# else
- // ACE_SIZEOF_LONG_LONG is not yet known, but the platform doesn't
- // claim ACE_LACKS_LONGLONG_T, so assume it has 8-byte long longs.
+# endif
+# elif defined (ULONGLONG_MAX)
+# if ((ULONGLONG_MAX) == 4294967295ULL)
+# define ACE_SIZEOF_LONG_LONG 4
+# elif ((ULONGLONG_MAX) == 18446744073709551615ULL)
# define ACE_SIZEOF_LONG_LONG 8
-# if defined (sun) && !defined (ACE_LACKS_U_LONGLONG_T)
- // sun #defines u_longlong_t, maybe other platforms do also.
- // Use it, at least with g++, so that its -pedantic doesn't
- // complain about no ANSI C++ long long.
- typedef u_longlong_t ACE_UINT64;
- typedef longlong_t ACE_INT64;
-# else
- // LynxOS 2.5.0 and Linux don't have u_longlong_t.
- typedef unsigned long long ACE_UINT64;
- typedef signed long long ACE_INT64;
-# endif /* sun */
-# endif /* ULLONG_MAX && !__GNUG__ */
-# endif /* ! ACE_WIN32 && ! ACE_LACKS_LONGLONG_T */
+# endif
+# endif
+# if !defined (ACE_SIZEOF_LONG_LONG)
+# error: unsupported long size, must be updated for this platform!
+# endif
# endif /* !defined (ACE_SIZEOF_LONG_LONG) */
+
// The sizes of the commonly implemented types are now known. Set up
-// typedefs for whatever we can. Some of these are needed for certain cases
-// of ACE_UINT64, so do them before the 64-bit stuff.
-
-# if ACE_SIZEOF_SHORT == 2
- typedef short ACE_INT16;
- typedef unsigned short ACE_UINT16;
-# elif ACE_SIZEOF_INT == 2
- typedef int ACE_INT16;
- typedef unsigned int ACE_UINT16;
-# elif (ACE_SIZEOF_SHORT) == 4 && defined(_CRAYMPP)
- // mpp cray - uses Alpha processors
- // Use the real 32-bit quantity for ACE_INT32's, and use a "long"
- // for ACE_INT16's. This gets around conflicts with size_t in some ACE
- // method signatures, among other things.
- typedef long ACE_INT16;
- typedef unsigned long ACE_UINT16;
- typedef short ACE_INT32;
- typedef unsigned short ACE_UINT32;
-# elif (ACE_SIZEOF_SHORT) == 8 && defined(_UNICOS)
- // vector cray - hard 64-bit, all 64 bit types
- typedef short ACE_INT16;
- typedef unsigned short ACE_UINT16;
-# else
-# error Have to add to the ACE_UINT16 type setting
-# endif
+// typedefs for whatever we can. Some of these are needed for certain
+// cases of ACE_UINT64, so do them before the 64-bit stuff.
+
+#if defined (ACE_INT8_TYPE)
+ typedef ACE_INT8_TYPE ACE_INT8;
+#elif defined (ACE_HAS_INT8_T)
+ typedef int8_t ACE_INT8;
+#elif !defined (ACE_LACKS_SIGNED_CHAR)
+ typedef signed char ACE_INT8;
+#else
+ typedef char ACE_INT8;
+#endif /* defined (ACE_INT8_TYPE) */
+
+#if defined (ACE_UINT8_TYPE)
+ typedef ACE_UINT8_TYPE ACE_UINT8;
+#elif defined (ACE_HAS_UINT8_T)
+ typedef uint8_t ACE_UINT8;
+#else
+ typedef unsigned char ACE_UINT8;
+#endif /* defined (ACE_UINT8_TYPE) */
+
+#if defined (ACE_INT16_TYPE)
+ typedef ACE_INT16_TYPE ACE_INT16;
+#elif defined (ACE_HAS_INT16_T)
+ typedef int16_t ACE_INT16;
+#elif ACE_SIZEOF_SHORT == 2
+ typedef short ACE_INT16;
+#elif ACE_SIZEOF_INT == 2
+ typedef int ACE_INT16;
+#else
+# error Have to add to the ACE_INT16 type setting
+#endif /* defined (ACE_INT16_TYPE) */
+
+#if defined (ACE_UINT16_TYPE)
+ typedef ACE_UINT16_TYPE ACE_UINT16;
+#elif defined (ACE_HAS_UINT16_T)
+ typedef uint16_t ACE_UINT16;
+#elif ACE_SIZEOF_SHORT == 2
+ typedef unsigned short ACE_UINT16;
+#elif ACE_SIZEOF_INT == 2
+ typedef unsigned int ACE_UINT16;
+#else
+# error Have to add to the ACE_UINT16 type setting
+#endif /* defined (ACE_UINT16_TYPE) */
+
+#if defined (ACE_INT32_TYPE)
+ typedef ACE_INT32_TYPE ACE_INT32;
+#elif defined (ACE_HAS_INT32_T)
+ typedef int32_t ACE_INT32;
+#elif ACE_SIZEOF_INT == 4
+ typedef int ACE_INT32;
+#elif ACE_SIZEOF_LONG == 4
+ typedef long ACE_INT32;
+#else
+# error Have to add to the ACE_INT32 type setting
+#endif /* defined (ACE_INT32_TYPE) */
+
+#if defined (ACE_UINT32_TYPE)
+ typedef ACE_UINT32_TYPE ACE_UINT32;
+#elif defined (ACE_HAS_UINT32_T)
+ typedef uint32_t ACE_UINT32;
+#elif ACE_SIZEOF_INT == 4
+ typedef unsigned int ACE_UINT32;
+#elif ACE_SIZEOF_LONG == 4
+ typedef unsigned long ACE_UINT32;
+#else
+# error Have to add to the ACE_UINT32 type setting
+#endif /* defined (ACE_UINT32_TYPE) */
+
+#if defined (ACE_INT64_TYPE)
+ typedef ACE_INT64_TYPE ACE_INT64
+#elif defined (ACE_HAS_INT64_T)
+ typedef int64_t ACE_INT64;
+#elif ACE_SIZEOF_LONG == 8
+ typedef long ACE_INT64;
+#elif !defined (ACE_LACKS_LONGLONG_T) && ACE_SIZEOF_LONG_LONG == 8
+ typedef long long ACE_INT64;
+#endif /* defined (ACE_INT64_TYPE) */
+
+#if defined (ACE_UINT64_TYPE)
+ typedef ACE_UINT64_TYPE ACE_UINT64
+#eif defined (ACE_HAS_UINT64_T)
+ typedef uint64_t ACE_UINT64;
+#elif ACE_SIZEOF_LONG == 8
+ typedef unsigned long ACE_UINT64;
+#elif !defined (ACE_LACKS_LONGLONG_T) && ACE_SIZEOF_LONG_LONG == 8
+ typedef unsigned long long ACE_UINT64;
+#endif /* defined (ACE_UINT64_TYPE) */
+
typedef ACE_UINT16 ACE_USHORT16; // @@ Backward compatibility.
@@ -231,28 +271,6 @@ typedef unsigned char ACE_Byte;
# define ACE_WCHAR_T ACE_UINT16
# endif /* ACE_HAS_WCHAR */
-# if ACE_SIZEOF_INT == 4
- typedef int ACE_INT32;
- typedef unsigned int ACE_UINT32;
-# if defined (__KCC) && !defined (ACE_LACKS_LONGLONG_T)
- typedef unsigned long long ACE_UINT64;
- typedef signed long long ACE_INT64;
-# endif /* __KCC */
-# elif ACE_SIZEOF_LONG == 4
- typedef long ACE_INT32;
- typedef unsigned long ACE_UINT32;
-# elif (ACE_SIZEOF_INT) == 8 && defined(_UNICOS)
- // vector cray - hard 64-bit, all 64 bit types
-# if !defined(_CRAYMPP)
- typedef int ACE_INT32;
- typedef unsigned int ACE_UINT32;
-# endif
- typedef unsigned long long ACE_UINT64;
- typedef signed long long ACE_INT64;
-# else
-# error Have to add to the ACE_UINT32 type setting
-# endif
-
// The number of bytes in a void *.
# ifndef ACE_SIZEOF_VOID_P
# define ACE_SIZEOF_VOID_P ACE_SIZEOF_LONG
@@ -587,24 +605,78 @@ typedef ptrdiff_t ptr_arith_t;
# define ACE_INT64_LITERAL(n) n ## ll
# endif /* ! ACE_WIN32 && ! ACE_LACKS_LONGLONG_T */
-#if !defined (ACE_UINT64_FORMAT_SPECIFIER)
-# if ACE_SIZEOF_LONG == 8
-# define ACE_UINT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%lu")
+#if !defined (ACE_INT8_FORMAT_SPECIFIER)
+# if defined (PRId8)
+# define ACE_INT8_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRId8)
# else
-# define ACE_UINT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%llu")
-# endif /* ACE_SIZEOF_LONG == 8*/
-#endif /* ACE_UINT64_FORMAT_SPECIFIER */
+# define ACE_INT8_FORMAT_SPECIFIER ACE_LIB_TEXT ("%d")
+# endif /* defined (PRId8) */
+#endif /* ACE_INT8_FORMAT_SPECIFIER */
+
+#if !defined (ACE_UINT8_FORMAT_SPECIFIER)
+# if defined (PRIu8)
+# define ACE_UINT8_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRIu8)
+# else
+# define ACE_UINT8_FORMAT_SPECIFIER ACE_LIB_TEXT ("%u")
+# endif /* defined (PRIu8) */
+#endif /* ACE_UINT8_FORMAT_SPECIFIER */
+
+#if !defined (ACE_INT16_FORMAT_SPECIFIER)
+# if defined (PRId16)
+# define ACE_INT16_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRId16)
+# else
+# define ACE_INT16_FORMAT_SPECIFIER ACE_LIB_TEXT ("%d")
+# endif /* defined (PRId16) */
+#endif /* ACE_INT16_FORMAT_SPECIFIER */
+
+#if !defined (ACE_UINT16_FORMAT_SPECIFIER)
+# if defined (PRIu16)
+# define ACE_UINT16_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRIu16)
+# else
+# define ACE_UINT16_FORMAT_SPECIFIER ACE_LIB_TEXT ("%u")
+# endif /* defined (PRIu16) */
+#endif /* ACE_UINT16_FORMAT_SPECIFIER */
+
+#if !defined (ACE_INT32_FORMAT_SPECIFIER)
+# if defined (PRId32)
+# define ACE_INT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRId32)
+# elif ACE_SIZEOF_INT == 4
+# define ACE_INT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%d")
+# else
+# define ACE_INT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%ld")
+# endif /* defined (PRId32) */
+#endif /* ACE_INT32_FORMAT_SPECIFIER */
+
+#if !defined (ACE_UINT32_FORMAT_SPECIFIER)
+# if defined (PRIu32)
+# define ACE_UINT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRIu32)
+# elif ACE_SIZEOF_INT == 4
+# define ACE_UINT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%u")
+# else
+# define ACE_UINT32_FORMAT_SPECIFIER ACE_LIB_TEXT ("%lu")
+# endif /* defined (PRIu32) */
+#endif /* ACE_UINT32_FORMAT_SPECIFIER */
#if !defined (ACE_INT64_FORMAT_SPECIFIER)
-# if ACE_SIZEOF_LONG == 8
+# if defined (PRId64)
+# define ACE_INT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRId64)
+# elif ACE_SIZEOF_LONG == 8
# define ACE_INT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%ld")
-# elif defined(__TANDEM) && defined(_TNS_R_TARGET)
-# define ACE_INT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%Ld")
# else
# define ACE_INT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%lld")
-# endif /* ACE_SIZEOF_LONG == 8 */
+# endif /* defined (PRId64) */
#endif /* ACE_INT64_FORMAT_SPECIFIER */
+#if !defined (ACE_UINT64_FORMAT_SPECIFIER)
+# if defined (PRIu64)
+# define ACE_UINT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%") ACE_LIB_TEXT (PRIu64)
+# elif ACE_SIZEOF_LONG == 8
+# define ACE_UINT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%lu")
+# else
+# define ACE_UINT64_FORMAT_SPECIFIER ACE_LIB_TEXT ("%llu")
+# endif /* defined (PRIu64) */
+#endif /* ACE_UINT64_FORMAT_SPECIFIER */
+
#if !defined (ACE_SSIZE_T_FORMAT_SPECIFIER)
# if defined (ACE_WIN64)
# define ACE_SSIZE_T_FORMAT_SPECIFIER ACE_LIB_TEXT ("%I64d")