diff options
Diffstat (limited to 'ace/Basic_Types.h')
-rw-r--r-- | ace/Basic_Types.h | 311 |
1 files changed, 0 insertions, 311 deletions
diff --git a/ace/Basic_Types.h b/ace/Basic_Types.h deleted file mode 100644 index 822705ff3ac..00000000000 --- a/ace/Basic_Types.h +++ /dev/null @@ -1,311 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// ace -// -// = FILENAME -// Basic_Types.h -// -// = AUTHORS -// David L. Levine -// -// = DESCRIPTION -// #defines the following preprocessor macros: -// -// Sizes of built-in types: -// ACE_SIZEOF_CHAR -// ACE_SIZEOF_WCHAR -// ACE_SIZEOF_SHORT -// ACE_SIZEOF_INT -// ACE_SIZEOF_LONG -// ACE_SIZEOF_LONG_LONG -// ACE_SIZEOF_VOID_P -// ACE_SIZEOF_FLOAT -// ACE_SIZEOF_DOUBLE -// ACE_SIZEOF_LONG_DOUBLE -// -// Wrappers for built-in types of specific sizes: -// ACE_INT16 -// ACE_UINT16 -// ACE_INT32 -// ACE_UINT32 -// ACE_UINT64 -// (Note: ACE_INT64 is not defined, because there is no ACE_LongLong for -// platforms that don't have a native 8-byte integer type.) -// -// Byte-order (endian-ness) determination: -// ACE_BYTE_ORDER, to either ACE_BIG_ENDIAN or ACE_LITTLE_ENDIAN -// -// ============================================================================ - -#if !defined (ACE_BASIC_TYPES_H) -#define ACE_BASIC_TYPES_H - -// A char always has 1 byte, by definition. -#define ACE_SIZEOF_CHAR 1 - -// Unfortunately, there isn't a portable way to determine the size of a wchar. -#if defined (VXWORKS) && defined (ghs) -# define ACE_SIZEOF_WCHAR 1 -#else -# define ACE_SIZEOF_WCHAR sizeof (wchar_t) -#endif /* VXWORKS && ghs */ - -// The number of bytes in a short. -#if (USHRT_MAX) == 255U -# define ACE_SIZEOF_SHORT 1 -#elif (USHRT_MAX) == 65535U -# define ACE_SIZEOF_SHORT 2 - typedef short ACE_INT16; - typedef unsigned short ACE_UINT16; -#elif (USHRT_MAX) == 4294967295U -# define ACE_SIZEOF_SHORT 4 - typedef short ACE_INT32; - typedef unsigned short ACE_UINT32; -#elif (USHRT_MAX) == 18446744073709551615U -# define ACE_SIZEOF_SHORT 8 -#else -# error: unsupported short size, must be updated for this platform! -#endif /* USHRT_MAX */ - -// The number of bytes in an int. -#if (UINT_MAX) == 65535U -# define ACE_SIZEOF_INT 2 -# if ACE_SIZEOF_SHORT != 2 - typedef int ACE_INT16; - typedef unsigned int ACE_UINT16; -# endif /* ACE_SIZEOF_SHORT != 2 */ -#elif (UINT_MAX) == 4294967295U -# define ACE_SIZEOF_INT 4 -# if ACE_SIZEOF_SHORT != 4 - typedef int ACE_INT32; - typedef unsigned int ACE_UINT32; -# endif /* ACE_SIZEOF_SHORT != 4 */ -#elif (UINT_MAX) == 18446744073709551615U -# define ACE_SIZEOF_INT 8 - typedef unsigned int ACE_UINT64; -#else -# error: unsupported int size, must be updated for this platform! -#endif /* UINT_MAX */ - -// The number of bytes in a long. -#if (ULONG_MAX) == 65535UL -# define ACE_SIZEOF_LONG 2 -#elif (ULONG_MAX) == 4294967295UL -# define ACE_SIZEOF_LONG 4 -# if ACE_SIZEOF_SHORT != 4 && ACE_SIZEOF_INT != 4 - typedef long ACE_INT32; - typedef unsigned long ACE_UINT32; -# endif /* ACE_SIZEOF_SHORT != 4 && ACE_SIZEOF_INT != 4 */ -#elif (ULONG_MAX) == 18446744073709551615UL -# define ACE_SIZEOF_LONG 8 -# if ACE_SIZEOF_INT != 8 - typedef unsigned long ACE_UINT64; -# endif /* ACE_SIZEOF_INT != 8 */ -#else -# error: unsupported long size, must be updated for this platform! -#endif /* ULONG_MAX */ - -// The number of bytes in a long long. -#if defined (ACE_WIN32) -# define ACE_SIZEOF_LONG_LONG 8 - typedef unsigned __int64 ACE_UINT64; -#elif defined (ULLONG_MAX) && !defined (__GNUG__) && \ - !defined (ACE_LACKS_LONGLONG_T) -# if (ULLONG_MAX) == 18446744073709551615ULL -# define ACE_SIZEOF_LONG_LONG 8 -# if ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 - typedef unsigned long long ACE_UINT64; -# endif /* ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 */ -# elif (ULLONG_MAX) == 4294967295ULL - // For some reason, this branch is taken if it appears first. - // g++ can't deal with the ULL's at all. What's going on here? -# define ACE_SIZEOF_LONG_LONG 4 -# if ACE_SIZEOF_SHORT != 4 && ACE_SIZEOF_INT != 4 && ACE_SIZEOF_LONG != 4 - typedef long long ACE_INT32; - typedef unsigned long long ACE_UINT32; -# endif /* ACE_SIZEOF_{SHORT,INT,LONG} != 4 */ -# else -# error: unsupported long long size, must be updated for this platform! -# endif /* ULLONG_MAX */ -#elif defined (ULONGLONG_MAX) && !defined (ACE_LACKS_LONGLONG_T) - // Irix 6.x, for example. -# if (ULONGLONG_MAX) == 18446744073709551615ULL -# define ACE_SIZEOF_LONG_LONG 8 -# if ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 - typedef unsigned long long ACE_UINT64; -# endif /* ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 */ -# else -# error: unsupported long long size, must be updated for this platform! -# endif /* ULLONG_MAX */ -#else /* ! ACE_WIN32 || (! ULLONG_MAX || __GNUG__) || ! ULONGLONG_MAX || - ACE_LACKS_LONGLONG_T */ -# if defined (ACE_LACKS_LONGLONG_T) - class ACE_Export ACE_U_LongLong - // = TITLE - // Unsigned long long for platforms that don't have one. - // - // = DESCRIPTION - // Provide our own unsigned long long. This is intended to be - // use with ACE_High_Res_Timer, so the division operator assumes - // that the quotient fits into a u_long. - // Please note that the constructor takes (optionally) two values. - // The high one contributes 0x100000000 times its value. So, - // for example, (0, 2) is _not_ 20000000000, but instead - // 0x200000000. To emphasize this, the default values are expressed - // in hex, and dump () outputs the value in hex. - { - public: - // = Initialization and termination methods. - ACE_U_LongLong (const ACE_UINT32 lo = 0x0, const ACE_UINT32 hi = 0x0); - ACE_U_LongLong (const ACE_U_LongLong &); - ACE_U_LongLong &operator= (const ACE_U_LongLong &); - ~ACE_U_LongLong (void); - - // = Overloaded relation operators. - int operator== (const ACE_U_LongLong &) const; - int operator!= (const ACE_U_LongLong &) const; - int operator< (const ACE_U_LongLong &) const; - int operator<= (const ACE_U_LongLong &) const; - int operator> (const ACE_U_LongLong &) const; - int operator>= (const ACE_U_LongLong &) const; - - ACE_U_LongLong operator+ (const ACE_U_LongLong &) const; - ACE_U_LongLong operator- (const ACE_U_LongLong &) const; - - // Note that the following take ACE_UINT32 arguments. These are - // typical use cases, and easy to implement. But, they limit - // the return values to 32 bits as well. There are no checks - // for overflow. - ACE_UINT32 operator/ (const ACE_UINT32) const; - ACE_UINT32 operator% (const ACE_UINT32) const; - - double operator/ (const double) const; - - ACE_U_LongLong &operator+= (const ACE_U_LongLong &); - ACE_U_LongLong &operator-= (const ACE_U_LongLong &); - ACE_U_LongLong &operator++ (); - ACE_U_LongLong &operator-- (); - - // = Helper methods. - void output (FILE * = stdout) const; - // Outputs the value to the FILE, in hex. - - ACE_UINT32 hi (void) const; - ACE_UINT32 lo (void) const; - - void hi (const ACE_UINT32 hi); - void lo (const ACE_UINT32 lo); - - ACE_ALLOC_HOOK_DECLARE; - - private: - ACE_UINT32 hi_; - ACE_UINT32 lo_; - }; - -# define ACE_USES_ACE_U_LONGLONG -# define ACE_SIZEOF_LONG_LONG 8 -# if ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 - typedef ACE_U_LongLong ACE_UINT64; -# endif /* ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 */ -# else /* ! ACE_LACKS_LONGLONG_T */ - // Assume that the platform has 8-byte long longs. -# define ACE_SIZEOF_LONG_LONG 8 -# if ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 -# if defined (sun) - // 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; -# else - // LynxOS 2.5.0 and Linux don't have u_longlong_t. - typedef unsigned long long ACE_UINT64; -# endif /* sun */ -# endif /* ACE_SIZEOF_INT != 8 && ACE_SIZEOF_LONG != 8 */ -# endif /* ! ACE_LACKS_LONGLONG_T */ -#endif /* ! ACE_WIN32 || (! ULLONG_MAX || __GNUG__) || ! ULONGLONG_MAX || - ACE_LACKS_LONGLONG_T */ - -// The number of bytes in a void *. -#define ACE_SIZEOF_VOID_P ACE_SIZEOF_LONG - -// The number of bytes in a float. -#if FLT_MAX_EXP == 128 -# define ACE_SIZEOF_FLOAT 4 -#elif FLT_MAX_EXP == 1024 -# define ACE_SIZEOF_FLOAT 8 -#else -# error: unsupported float size, must be updated for this platform! -#endif /* FLT_MAX */ - -// The number of bytes in a double. -#if DBL_MAX_EXP == 128 -# define ACE_SIZEOF_DOUBLE 4 -#elif DBL_MAX_EXP == 1024 -# define ACE_SIZEOF_DOUBLE 8 -#else -# error: unsupported double size, must be updated for this platform! -#endif /* DBL_MAX */ - -// The number of bytes in a long double. -#if defined (__sgi) - // The Irix 6.x float.h doesn't allow us to distinguish between a - // double and a long double. Gotta hard code this . . . -# define ACE_SIZEOF_LONG_DOUBLE 16 -#elif LDBL_MAX_EXP == 128 -# define ACE_SIZEOF_LONG_DOUBLE 4 -#elif defined (i386) || defined (__i386__) || defined (_M_IX386) || \ - defined (ACE_NETBSD) || defined (__FreeBSD__) -# define ACE_SIZEOF_LONG_DOUBLE 12 -#elif LDBL_MAX_EXP == 1024 -# define ACE_SIZEOF_LONG_DOUBLE 8 -#elif LDBL_MAX_EXP == 16384 -# define ACE_SIZEOF_LONG_DOUBLE 16 -#else -# error: unsupported double size, must be updated for this platform! -#endif /* LDBL_MAX_EXP */ - -// Byte-order (endian-ness) determination. -#if defined (BYTE_ORDER) -# if (BYTE_ORDER == LITTLE_ENDIAN) -# define ACE_LITTLE_ENDIAN 0123X -# define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN -# elif (BYTE_ORDER == BIG_ENDIAN) -# define ACE_BIG_ENDIAN 3210X -# define ACE_BYTE_ORDER ACE_BIG_ENDIAN -# else -# error: unknown BYTE_ORDER! -# endif /* BYTE_ORDER */ -#elif defined (__BYTE_ORDER) -# if (__BYTE_ORDER == __LITTLE_ENDIAN) -# define ACE_LITTLE_ENDIAN 0123X -# define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN -# elif (__BYTE_ORDER == __BIG_ENDIAN) -# define ACE_BIG_ENDIAN 3210X -# define ACE_BYTE_ORDER ACE_BIG_ENDIAN -# else -# error: unknown __BYTE_ORDER! -# endif /* __BYTE_ORDER */ -#else /* ! BYTE_ORDER && ! __BYTE_ORDER */ - // We weren't explicitly told, so we have to figure it out . . . -# if defined (i386) || defined (__i386__) || defined (_M_IX86) || \ - defined (vax) || defined (__alpha) - // We know these are little endian. -# define ACE_LITTLE_ENDIAN 0123X -# define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN -# else - // Otherwise, we'll assume big endian. -# define ACE_BIG_ENDIAN 3210X -# define ACE_BYTE_ORDER ACE_BIG_ENDIAN -# endif -#endif /* ! BYTE_ORDER && ! __BYTE_ORDER */ - -#if defined (__ACE_INLINE__) -# include "ace/Basic_Types.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_BASIC_TYPES_H */ |