Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #include "ace/config-lite.h"
00047
00048 #ifndef ACE_BASIC_TYPES_H
00049 # define ACE_BASIC_TYPES_H
00050
00051 # include "ace/pre.h"
00052
00053 # if !defined (ACE_LACKS_PRAGMA_ONCE)
00054 # pragma once
00055 # endif
00056
00057
00058 # include "ace/os_include/os_limits.h"
00059 # include "ace/os_include/os_float.h"
00060 # include "ace/os_include/os_stdlib.h"
00061 # include "ace/os_include/os_stddef.h"
00062
00063 # if defined(ACE_LACKS_LONGLONG_T)
00064 # include "ace/os_include/os_stdio.h"
00065 # endif
00066
00067 # include "ace/os_include/sys/os_types.h"
00068
00069 # if !defined (ACE_LACKS_SYS_PARAM_H)
00070 # include <sys/param.h>
00071 # endif
00072
00073 # include "ace/ACE_export.h"
00074
00075 # if !defined (ACE_LACKS_STDINT_H)
00076 # include <stdint.h>
00077 # endif
00078 # if !defined (ACE_LACKS_INTTYPES_H)
00079 # include <inttypes.h>
00080 # endif
00081
00082 #ifdef ACE_LACKS_INTPTR_T
00083 # include "ace/If_Then_Else.h"
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 typedef ACE::If_Then_Else<
00098 (sizeof (void*) == sizeof (signed int)),
00099 signed int,
00100 ACE::If_Then_Else<
00101 (sizeof (void*) == sizeof (signed long)),
00102 signed long,
00103 #ifdef ACE_LACKS_LONGLONG_T
00104 void
00105 #else
00106 ACE::If_Then_Else<
00107 (sizeof (void*) == sizeof (signed long long)),
00108 signed long long,
00109 void
00110 >::result_type
00111 #endif
00112 >::result_type
00113 >::result_type intptr_t;
00114
00115 typedef ACE::If_Then_Else<
00116 (sizeof (void*) == sizeof (unsigned int)),
00117 unsigned int,
00118 ACE::If_Then_Else<
00119 (sizeof (void*) == sizeof (unsigned long)),
00120 unsigned long,
00121 #ifdef ACE_LACKS_UNSIGNEDLONGLONG_T
00122 void
00123 #else
00124 ACE::If_Then_Else<
00125 (sizeof (void*) == sizeof (unsigned long long)),
00126 unsigned long long,
00127 void
00128 >::result_type
00129 #endif
00130 >::result_type
00131 >::result_type uintptr_t;
00132
00133 #endif
00134
00135
00136 # define ACE_SIZEOF_CHAR 1
00137
00138
00139
00140
00141
00142
00143
00144 # if defined (ACE_HAS_WCHAR)
00145 # if !defined (ACE_SIZEOF_WCHAR)
00146 # if defined (ACE_HAS_XPG4_MULTIBYTE_CHAR)
00147 # define ACE_SIZEOF_WCHAR 4
00148 # else
00149
00150 # define ACE_SIZEOF_WCHAR 0
00151 # endif
00152 # endif
00153 # endif
00154
00155
00156 # if !defined (ACE_SIZEOF_SHORT)
00157 # if (USHRT_MAX) == 255U
00158 # define ACE_SIZEOF_SHORT 1
00159 # elif (USHRT_MAX) == 65535U
00160 # define ACE_SIZEOF_SHORT 2
00161 # elif (USHRT_MAX) == 4294967295U
00162 # define ACE_SIZEOF_SHORT 4
00163 # elif (USHRT_MAX) == 18446744073709551615U
00164 # define ACE_SIZEOF_SHORT 8
00165 # else
00166 # error: unsupported short size, must be updated for this platform!
00167 # endif
00168 # endif
00169
00170
00171 # if !defined (ACE_SIZEOF_INT)
00172 # if (UINT_MAX) == 65535U
00173 # define ACE_SIZEOF_INT 2
00174 # elif (UINT_MAX) == 4294967295U
00175 # define ACE_SIZEOF_INT 4
00176 # elif (UINT_MAX) == 18446744073709551615U
00177 # define ACE_SIZEOF_INT 8
00178 # else
00179 # error: unsupported int size, must be updated for this platform!
00180 # endif
00181 # endif
00182
00183
00184 # if !defined (ACE_SIZEOF_LONG)
00185 # if (ULONG_MAX) == 65535UL
00186 # define ACE_SIZEOF_LONG 2
00187 # elif ((ULONG_MAX) == 4294967295UL)
00188 # define ACE_SIZEOF_LONG 4
00189 # elif ((ULONG_MAX) == 18446744073709551615UL)
00190 # define ACE_SIZEOF_LONG 8
00191 # else
00192 # error: unsupported long size, must be updated for this platform!
00193 # endif
00194 # endif
00195
00196
00197 # if !defined (ACE_SIZEOF_LONG_LONG)
00198 # if defined (ACE_LACKS_LONGLONG_T)
00199 # define ACE_SIZEOF_LONG_LONG 8
00200 # elif defined (ULLONG_MAX)
00201 # if ((ULLONG_MAX) == 4294967295ULL)
00202 # define ACE_SIZEOF_LONG_LONG 4
00203 # elif ((ULLONG_MAX) == 18446744073709551615ULL)
00204 # define ACE_SIZEOF_LONG_LONG 8
00205 # endif
00206 # elif defined (ULONGLONG_MAX)
00207 # if ((ULONGLONG_MAX) == 4294967295ULL)
00208 # define ACE_SIZEOF_LONG_LONG 4
00209 # elif ((ULONGLONG_MAX) == 18446744073709551615ULL)
00210 # define ACE_SIZEOF_LONG_LONG 8
00211 # endif
00212 # endif
00213 # // If we can't determine the size of long long, assume it is 8
00214 # // instead of erroring out. (Either ULLONG_MAX and ULONGLONG_MAX
00215 # // may not be supported; or an extended C/C++ dialect may need to
00216 # // be selected. If this assumption is wrong, it can be addressed
00217 # // in the platform-specific config header.
00218 # if !defined (ACE_SIZEOF_LONG_LONG)
00219 # define ACE_SIZEOF_LONG_LONG 8
00220 # endif
00221 # endif
00222
00223
00224 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00225
00226
00227
00228
00229
00230 #if defined (ACE_INT8_TYPE)
00231 typedef ACE_INT8_TYPE ACE_INT8;
00232 #elif defined (ACE_HAS_INT8_T)
00233 typedef int8_t ACE_INT8;
00234 #elif !defined (ACE_LACKS_SIGNED_CHAR)
00235 typedef signed char ACE_INT8;
00236 #else
00237 typedef char ACE_INT8;
00238 #endif
00239
00240 #if defined (ACE_UINT8_TYPE)
00241 typedef ACE_UINT8_TYPE ACE_UINT8;
00242 #elif defined (ACE_HAS_UINT8_T)
00243 typedef uint8_t ACE_UINT8;
00244 #else
00245 typedef unsigned char ACE_UINT8;
00246 #endif
00247
00248 #if defined (ACE_INT16_TYPE)
00249 typedef ACE_INT16_TYPE ACE_INT16;
00250 #elif defined (ACE_HAS_INT16_T)
00251 typedef int16_t ACE_INT16;
00252 #elif ACE_SIZEOF_SHORT == 2
00253 typedef short ACE_INT16;
00254 #elif ACE_SIZEOF_INT == 2
00255 typedef int ACE_INT16;
00256 #else
00257 # error Have to add to the ACE_INT16 type setting
00258 #endif
00259
00260 #if defined (ACE_UINT16_TYPE)
00261 typedef ACE_UINT16_TYPE ACE_UINT16;
00262 #elif defined (ACE_HAS_UINT16_T)
00263 typedef uint16_t ACE_UINT16;
00264 #elif ACE_SIZEOF_SHORT == 2
00265 typedef unsigned short ACE_UINT16;
00266 #elif ACE_SIZEOF_INT == 2
00267 typedef unsigned int ACE_UINT16;
00268 #else
00269 # error Have to add to the ACE_UINT16 type setting
00270 #endif
00271
00272 #if defined (ACE_INT32_TYPE)
00273 typedef ACE_INT32_TYPE ACE_INT32;
00274 #elif defined (ACE_HAS_INT32_T)
00275 typedef int32_t ACE_INT32;
00276 #elif ACE_SIZEOF_INT == 4
00277 typedef int ACE_INT32;
00278 #elif ACE_SIZEOF_LONG == 4
00279 typedef long ACE_INT32;
00280 #else
00281 # error Have to add to the ACE_INT32 type setting
00282 #endif
00283
00284 #if defined (ACE_UINT32_TYPE)
00285 typedef ACE_UINT32_TYPE ACE_UINT32;
00286 #elif defined (ACE_HAS_UINT32_T)
00287 typedef uint32_t ACE_UINT32;
00288 #elif ACE_SIZEOF_INT == 4
00289 typedef unsigned int ACE_UINT32;
00290 #elif ACE_SIZEOF_LONG == 4
00291 typedef unsigned long ACE_UINT32;
00292 #else
00293 # error Have to add to the ACE_UINT32 type setting
00294 #endif
00295
00296 #if defined (ACE_INT64_TYPE)
00297 typedef ACE_INT64_TYPE ACE_INT64;
00298 #elif defined (ACE_HAS_INT64_T)
00299 typedef int64_t ACE_INT64;
00300 #elif ACE_SIZEOF_LONG == 8
00301 typedef long ACE_INT64;
00302 #elif !defined (ACE_LACKS_LONGLONG_T) && ACE_SIZEOF_LONG_LONG == 8
00303 # ifdef __GNUC__
00304
00305
00306 __extension__
00307 # endif
00308 typedef long long ACE_INT64;
00309 #endif
00310
00311 #if !(defined (ACE_LACKS_LONGLONG_T) || defined (ACE_LACKS_UNSIGNEDLONGLONG_T))
00312
00313
00314 # if defined (ACE_UINT64_TYPE)
00315 typedef ACE_UINT64_TYPE ACE_UINT64;
00316 # elif defined (ACE_HAS_UINT64_T)
00317 typedef uint64_t ACE_UINT64;
00318 # elif ACE_SIZEOF_LONG == 8
00319 typedef unsigned long ACE_UINT64;
00320 # elif ACE_SIZEOF_LONG_LONG == 8
00321 # ifdef __GNUC__
00322
00323
00324 __extension__
00325 # endif
00326 typedef unsigned long long ACE_UINT64;
00327 # endif
00328 #endif
00329
00330
00331 typedef ACE_UINT16 ACE_USHORT16;
00332
00333
00334 typedef unsigned char ACE_Byte;
00335
00336
00337
00338
00339 # if defined (ACE_HAS_WCHAR) || defined (ACE_HAS_XPG4_MULTIBYTE_CHAR)
00340 # define ACE_WINT_T wint_t
00341 # define ACE_WCHAR_T wchar_t
00342 # else
00343 # define ACE_WINT_T ACE_UINT16
00344 # define ACE_WCHAR_T ACE_UINT16
00345 # endif
00346
00347
00348 # ifndef ACE_SIZEOF_VOID_P
00349 # define ACE_SIZEOF_VOID_P ACE_SIZEOF_LONG
00350 # endif
00351
00352 ACE_END_VERSIONED_NAMESPACE_DECL
00353
00354
00355 # if defined (BYTE_ORDER)
00356 # if (BYTE_ORDER == LITTLE_ENDIAN)
00357 # define ACE_LITTLE_ENDIAN 0x0123
00358 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00359 # elif (BYTE_ORDER == BIG_ENDIAN)
00360 # define ACE_BIG_ENDIAN 0x3210
00361 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00362 # else
00363 # error: unknown BYTE_ORDER!
00364 # endif
00365 # elif defined (_BYTE_ORDER)
00366 # if (_BYTE_ORDER == _LITTLE_ENDIAN)
00367 # define ACE_LITTLE_ENDIAN 0x0123
00368 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00369 # elif (_BYTE_ORDER == _BIG_ENDIAN)
00370 # define ACE_BIG_ENDIAN 0x3210
00371 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00372 # else
00373 # error: unknown _BYTE_ORDER!
00374 # endif
00375 # elif defined (__BYTE_ORDER)
00376 # if (__BYTE_ORDER == __LITTLE_ENDIAN)
00377 # define ACE_LITTLE_ENDIAN 0x0123
00378 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00379 # elif (__BYTE_ORDER == __BIG_ENDIAN)
00380 # define ACE_BIG_ENDIAN 0x3210
00381 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00382 # else
00383 # error: unknown __BYTE_ORDER!
00384 # endif
00385 # else
00386
00387
00388
00389 # if defined (i386) || defined (__i386__) || defined (_M_IX86) || \
00390 defined (vax) || defined (__alpha) || defined (__LITTLE_ENDIAN__) || \
00391 defined (ARM) || defined (_M_IA64) || defined (_M_AMD64) || \
00392 defined (__amd64) || \
00393 ((defined (__ia64__) || defined (__ia64)) && !defined (__hpux))
00394
00395 # define ACE_LITTLE_ENDIAN 0x0123
00396 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00397 # else
00398
00399 # define ACE_BIG_ENDIAN 0x3210
00400 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00401 # endif
00402 # endif
00403
00404
00405
00406
00407 # define ACE_SWAP_LONG(L) ((ACE_SWAP_WORD ((L) & 0xFFFF) << 16) \
00408 | ACE_SWAP_WORD(((L) >> 16) & 0xFFFF))
00409 # define ACE_SWAP_WORD(L) ((((L) & 0x00FF) << 8) | (((L) & 0xFF00) >> 8))
00410
00411 # if defined (ACE_LITTLE_ENDIAN)
00412 # define ACE_HTONL(X) ACE_SWAP_LONG (X)
00413 # define ACE_NTOHL(X) ACE_SWAP_LONG (X)
00414 # define ACE_IDL_NCTOHL(X) (X)
00415 # define ACE_IDL_NSTOHL(X) (X)
00416 # else
00417 # define ACE_HTONL(X) X
00418 # define ACE_NTOHL(X) X
00419 # define ACE_IDL_NCTOHL(X) (X << 24)
00420 # define ACE_IDL_NSTOHL(X) ((X) << 16)
00421 # endif
00422
00423 # if defined (ACE_LITTLE_ENDIAN)
00424 # define ACE_HTONS(x) ACE_SWAP_WORD(x)
00425 # define ACE_NTOHS(x) ACE_SWAP_WORD(x)
00426 # else
00427 # define ACE_HTONS(x) x
00428 # define ACE_NTOHS(x) x
00429 # endif
00430
00431 #if defined (ACE_LACKS_LONGLONG_T)
00432
00433
00434
00435 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00436 reinterpret_cast<PTR_TYPE> (L.lo ())
00437 #elif defined (ACE_OPENVMS) && (!defined (__INITIAL_POINTER_SIZE) || (__INITIAL_POINTER_SIZE < 64))
00438 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00439 reinterpret_cast<PTR_TYPE> (static_cast<int> (L))
00440 #else
00441 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00442 reinterpret_cast<PTR_TYPE> (static_cast<intptr_t> (L))
00443 #endif
00444
00445
00446 #if defined (ACE_LACKS_LONGLONG_T) || defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00447
00448 # include "ace/iosfwd.h"
00449
00450 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466 class ACE_Export ACE_U_LongLong
00467 {
00468 public:
00469
00470 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00471 ACE_U_LongLong (const long long value = 0x0);
00472 #else
00473 ACE_U_LongLong (const ACE_UINT32 lo = 0x0, const ACE_UINT32 hi = 0x0);
00474 #endif
00475 ACE_U_LongLong (const ACE_U_LongLong &);
00476 ACE_U_LongLong &operator= (const ACE_U_LongLong &);
00477 ACE_U_LongLong &operator= (const ACE_INT32 &);
00478 ACE_U_LongLong &operator= (const ACE_UINT32 &);
00479 ~ACE_U_LongLong (void);
00480
00481
00482 bool operator== (const ACE_U_LongLong &) const;
00483 bool operator== (const ACE_UINT32) const;
00484 bool operator!= (const ACE_U_LongLong &) const;
00485 bool operator!= (const ACE_UINT32) const;
00486 bool operator< (const ACE_U_LongLong &) const;
00487 bool operator< (const ACE_UINT32) const;
00488 bool operator<= (const ACE_U_LongLong &) const;
00489 bool operator<= (const ACE_UINT32) const;
00490 bool operator> (const ACE_U_LongLong &) const;
00491 bool operator> (const ACE_UINT32) const;
00492 bool operator>= (const ACE_U_LongLong &) const;
00493 bool operator>= (const ACE_UINT32) const;
00494
00495 ACE_U_LongLong operator+ (const ACE_U_LongLong &) const;
00496 ACE_U_LongLong operator+ (const ACE_UINT32) const;
00497 ACE_U_LongLong operator- (const ACE_U_LongLong &) const;
00498 ACE_U_LongLong operator- (const ACE_UINT32) const;
00499 ACE_U_LongLong operator* (const ACE_UINT32) const;
00500 ACE_U_LongLong &operator*= (const ACE_UINT32);
00501
00502 ACE_U_LongLong operator<< (const unsigned int) const;
00503 ACE_U_LongLong &operator<<= (const unsigned int);
00504 ACE_U_LongLong operator>> (const unsigned int) const;
00505 ACE_U_LongLong &operator>>= (const unsigned int);
00506
00507 double operator/ (const double) const;
00508
00509 ACE_U_LongLong &operator+= (const ACE_U_LongLong &);
00510 ACE_U_LongLong &operator+= (const ACE_UINT32);
00511 ACE_U_LongLong &operator-= (const ACE_U_LongLong &);
00512 ACE_U_LongLong &operator-= (const ACE_UINT32);
00513 ACE_U_LongLong &operator++ ();
00514 ACE_U_LongLong &operator-- ();
00515 const ACE_U_LongLong operator++ (int);
00516 const ACE_U_LongLong operator-- (int);
00517 ACE_U_LongLong &operator|= (const ACE_U_LongLong);
00518 ACE_U_LongLong &operator|= (const ACE_UINT32);
00519 ACE_U_LongLong &operator&= (const ACE_U_LongLong);
00520 ACE_U_LongLong &operator&= (const ACE_UINT32);
00521
00522
00523
00524
00525
00526 ACE_UINT32 operator/ (const ACE_UINT32) const;
00527 ACE_UINT32 operator% (const ACE_UINT32) const;
00528
00529
00530
00531 ACE_UINT32 operator| (const ACE_INT32) const;
00532 ACE_UINT32 operator& (const ACE_INT32) const;
00533
00534
00535
00536
00537 ACE_U_LongLong operator* (const ACE_INT32) const;
00538 ACE_U_LongLong &operator*= (const ACE_INT32);
00539 ACE_UINT32 operator/ (const ACE_INT32) const;
00540 # if ACE_SIZEOF_INT == 4
00541 ACE_UINT32 operator/ (const unsigned long) const;
00542 ACE_UINT32 operator/ (const long) const;
00543 # else
00544 ACE_UINT32 operator/ (const unsigned int) const;
00545 ACE_UINT32 operator/ (const int) const;
00546 # endif
00547
00548
00549
00550 void output (FILE * = stdout) const;
00551
00552 ACE_TCHAR *as_string (ACE_TCHAR *string,
00553 unsigned int base = 10,
00554 unsigned int uppercase = 0) const;
00555
00556 ACE_UINT32 hi (void) const;
00557 ACE_UINT32 lo (void) const;
00558
00559 void hi (const ACE_UINT32 hi);
00560 void lo (const ACE_UINT32 lo);
00561
00562 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00563 long long to_int64 (void) const;
00564 # endif
00565
00566 private:
00567
00568 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00569 long long data_;
00570 #else
00571 public:
00572 struct ace_hi_lo_correct_endian
00573 {
00574 # if defined (ACE_BIG_ENDIAN)
00575
00576 ACE_UINT32 hi_;
00577
00578 ACE_UINT32 lo_;
00579
00580 # else
00581
00582
00583 ACE_UINT32 lo_;
00584
00585 ACE_UINT32 hi_;
00586 # endif
00587 };
00588 private:
00589 union
00590 {
00591 struct ace_hi_lo_correct_endian data_;
00592
00593
00594 double for_alignment_;
00595 };
00596
00597
00598
00599
00600
00601
00602 const ACE_UINT32 &h_ () const { return data_.hi_; }
00603
00604
00605 ACE_UINT32 &h_ () { return data_.hi_; }
00606
00607
00608 const ACE_UINT32 &l_ () const { return data_.lo_; }
00609
00610
00611 ACE_UINT32 &l_ () { return data_.lo_; }
00612
00613
00614
00615
00616
00617
00618 ACE_UINT32 ul_shift (ACE_UINT32 a,
00619 ACE_UINT32 c_in,
00620 ACE_UINT32 *c_out) const;
00621 ACE_U_LongLong ull_shift (ACE_U_LongLong a,
00622 ACE_UINT32 c_in,
00623 ACE_UINT32 *c_out) const;
00624 ACE_U_LongLong ull_add (ACE_U_LongLong a,
00625 ACE_U_LongLong b,
00626 ACE_UINT32 *carry) const;
00627 ACE_U_LongLong ull_mult (ACE_U_LongLong a,
00628 ACE_UINT32 b,
00629 ACE_UINT32 *carry) const;
00630 #endif // ACE_LACKS_UNSIGNEDLONGLONG_T
00631 };
00632
00633 typedef ACE_U_LongLong ACE_UINT64;
00634
00635 #if !defined (ACE_LACKS_IOSTREAM_TOTALLY)
00636 ostream &operator<< (ostream &, const ACE_U_LongLong &);
00637 #endif
00638
00639 ACE_END_VERSIONED_NAMESPACE_DECL
00640
00641 # endif
00642
00643 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00644
00645
00646
00647 # if defined (ACE_LACKS_LONGLONG_T) || defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00648 inline ACE_UINT32
00649 ACE_U64_TO_U32 (ACE_U_LongLong const & n)
00650 {
00651
00652
00653
00654
00655
00656 return n.lo ();
00657 }
00658
00659 inline ACE_UINT32
00660 ACE_CU64_TO_CU32 (ACE_U_LongLong const & n)
00661 {
00662 return ACE_U64_TO_U32 (n);
00663 }
00664 # else
00665 inline ACE_UINT32
00666 ACE_U64_TO_U32 (ACE_UINT64 n)
00667 {
00668 return static_cast<ACE_UINT32> (n);
00669 }
00670
00671 inline ACE_UINT32
00672 ACE_CU64_TO_CU32 (ACE_UINT64 n)
00673 {
00674 return static_cast<ACE_UINT32> (n);
00675 }
00676 # endif
00677
00678 ACE_END_VERSIONED_NAMESPACE_DECL
00679
00680
00681 # if defined (ACE_LACKS_LONGLONG_T)
00682
00683 # define ACE_UINT64_LITERAL(n) n ## UL
00684
00685
00686 # define ACE_INT64_LITERAL(n) n ## L
00687 # elif defined (ACE_WIN32)
00688 # if defined (__MINGW32__)
00689 # define ACE_UINT64_LITERAL(n) n ## ull
00690 # define ACE_INT64_LITERAL(n) n ## ll
00691 # else
00692 # define ACE_UINT64_LITERAL(n) n ## ui64
00693 # define ACE_INT64_LITERAL(n) n ## i64
00694 # endif
00695 # elif defined (__TANDEM)
00696 # define ACE_UINT64_LITERAL(n) n ## LL
00697 # define ACE_INT64_LITERAL(n) n ## LL
00698 # else
00699 # define ACE_UINT64_LITERAL(n) n ## ull
00700 # define ACE_INT64_LITERAL(n) n ## ll
00701 # endif
00702
00703 #if !defined (ACE_INT8_FORMAT_SPECIFIER_ASCII)
00704 # if defined (PRId8)
00705 # define ACE_INT8_FORMAT_SPECIFIER_ASCII "%" PRId8
00706 # else
00707 # define ACE_INT8_FORMAT_SPECIFIER_ASCII "%d"
00708 # endif
00709 #endif
00710
00711 #if !defined (ACE_INT8_FORMAT_SPECIFIER)
00712 # if defined (PRId8)
00713 # define ACE_INT8_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId8)
00714 # else
00715 # define ACE_INT8_FORMAT_SPECIFIER ACE_TEXT (ACE_INT8_FORMAT_SPECIFIER_ASCII)
00716 # endif
00717 #endif
00718
00719 #if !defined (ACE_UINT8_FORMAT_SPECIFIER_ASCII)
00720 # if defined (PRIu8)
00721 # define ACE_UINT8_FORMAT_SPECIFIER_ASCII "%" PRIu8
00722 # else
00723 # define ACE_UINT8_FORMAT_SPECIFIER_ASCII "%u"
00724 # endif
00725 #endif
00726
00727 #if !defined (ACE_UINT8_FORMAT_SPECIFIER)
00728 # if defined (PRIu8)
00729 # define ACE_UINT8_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu8)
00730 # else
00731 # define ACE_UINT8_FORMAT_SPECIFIER ACE_TEXT (ACE_UINT8_FORMAT_SPECIFIER_ASCII)
00732 # endif
00733 #endif
00734
00735 #if !defined (ACE_INT16_FORMAT_SPECIFIER_ASCII)
00736 # if defined (PRId16)
00737 # define ACE_INT16_FORMAT_SPECIFIER_ASCII "%" PRId16
00738 # else
00739 # define ACE_INT16_FORMAT_SPECIFIER_ASCII "%d"
00740 # endif
00741 #endif
00742
00743 #if !defined (ACE_INT16_FORMAT_SPECIFIER)
00744 # if defined (PRId16)
00745 # define ACE_INT16_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId16)
00746 # else
00747 # define ACE_INT16_FORMAT_SPECIFIER ACE_TEXT (ACE_INT16_FORMAT_SPECIFIER_ASCII)
00748 # endif
00749 #endif
00750
00751 #if !defined (ACE_UINT16_FORMAT_SPECIFIER_ASCII)
00752 # if defined (PRIu16)
00753 # define ACE_UINT16_FORMAT_SPECIFIER_ASCII "%" PRIu16
00754 # else
00755 # define ACE_UINT16_FORMAT_SPECIFIER_ASCII "%u"
00756 # endif
00757 #endif
00758
00759 #if !defined (ACE_UINT16_FORMAT_SPECIFIER)
00760 # if defined (PRIu16)
00761 # define ACE_UINT16_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu16)
00762 # else
00763 # define ACE_UINT16_FORMAT_SPECIFIER ACE_TEXT (ACE_UINT16_FORMAT_SPECIFIER_ASCII)
00764 # endif
00765 #endif
00766
00767 #if !defined (ACE_INT32_FORMAT_SPECIFIER_ASCII)
00768 # if defined (PRId32)
00769 # define ACE_INT32_FORMAT_SPECIFIER_ASCII "%" PRId32
00770 # elif ACE_SIZEOF_INT == 4
00771 # define ACE_INT32_FORMAT_SPECIFIER_ASCII "%d"
00772 # else
00773 # define ACE_INT32_FORMAT_SPECIFIER_ASCII "%ld"
00774 # endif
00775 #endif
00776
00777 #if !defined (ACE_INT32_FORMAT_SPECIFIER)
00778 # if defined (PRId32)
00779 # define ACE_INT32_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId32)
00780 # else
00781 # define ACE_INT32_FORMAT_SPECIFIER ACE_TEXT (ACE_INT32_FORMAT_SPECIFIER_ASCII)
00782 # endif
00783 #endif
00784
00785 #if !defined (ACE_UINT32_FORMAT_SPECIFIER_ASCII)
00786 # if defined (PRIu32)
00787 # define ACE_UINT32_FORMAT_SPECIFIER_ASCII "%" PRIu32
00788 # elif ACE_SIZEOF_INT == 4
00789 # define ACE_UINT32_FORMAT_SPECIFIER_ASCII "%u"
00790 # else
00791 # define ACE_UINT32_FORMAT_SPECIFIER_ASCII "%lu"
00792 # endif
00793 #endif
00794
00795 #if !defined (ACE_UINT32_FORMAT_SPECIFIER)
00796 # if defined (PRIu32)
00797 # define ACE_UINT32_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu32)
00798 # else
00799 # define ACE_UINT32_FORMAT_SPECIFIER ACE_TEXT (ACE_UINT32_FORMAT_SPECIFIER_ASCII)
00800 # endif
00801 #endif
00802
00803 #if !defined (ACE_INT64_FORMAT_SPECIFIER_ASCII)
00804 # if defined (PRId64)
00805 # define ACE_INT64_FORMAT_SPECIFIER_ASCII "%" PRId64
00806 # elif ACE_SIZEOF_LONG == 8
00807 # define ACE_INT64_FORMAT_SPECIFIER_ASCII "%ld"
00808 # else
00809 # define ACE_INT64_FORMAT_SPECIFIER_ASCII "%lld"
00810 # endif
00811 #endif
00812
00813 #if !defined (ACE_INT64_FORMAT_SPECIFIER)
00814 # if defined (PRId64)
00815 # define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId64)
00816 # else
00817 # define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT (ACE_INT64_FORMAT_SPECIFIER_ASCII)
00818 # endif
00819 #endif
00820
00821 #if !defined (ACE_UINT64_FORMAT_SPECIFIER_ASCII)
00822 # if defined (PRIu64)
00823 # define ACE_UINT64_FORMAT_SPECIFIER_ASCII "%" PRIu64
00824 # elif ACE_SIZEOF_LONG == 8
00825 # define ACE_UINT64_FORMAT_SPECIFIER_ASCII "%lu"
00826 # else
00827 # define ACE_UINT64_FORMAT_SPECIFIER_ASCII "%llu"
00828 # endif
00829 #endif
00830
00831 #if !defined (ACE_UINT64_FORMAT_SPECIFIER)
00832 # if defined (PRIu64)
00833 # define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu64)
00834 # else
00835 # define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT (ACE_UINT64_FORMAT_SPECIFIER_ASCII)
00836 # endif
00837 #endif
00838
00839 #if !defined (ACE_SSIZE_T_FORMAT_SPECIFIER_ASCII)
00840 # if defined (ACE_WIN64)
00841 # define ACE_SSIZE_T_FORMAT_SPECIFIER_ASCII "%I64d"
00842 # else
00843 # define ACE_SSIZE_T_FORMAT_SPECIFIER_ASCII "%d"
00844 # endif
00845 #endif
00846
00847 #if !defined (ACE_SSIZE_T_FORMAT_SPECIFIER)
00848 #define ACE_SSIZE_T_FORMAT_SPECIFIER ACE_TEXT (ACE_SSIZE_T_FORMAT_SPECIFIER_ASCII)
00849 #endif
00850
00851 #if !defined (ACE_SIZE_T_FORMAT_SPECIFIER_ASCII)
00852 # if defined (ACE_WIN64)
00853 # define ACE_SIZE_T_FORMAT_SPECIFIER_ASCII "%I64u"
00854 # else
00855 # define ACE_SIZE_T_FORMAT_SPECIFIER_ASCII "%u"
00856 # endif
00857 #endif
00858
00859 #if !defined (ACE_SIZE_T_FORMAT_SPECIFIER)
00860 #define ACE_SIZE_T_FORMAT_SPECIFIER ACE_TEXT (ACE_SIZE_T_FORMAT_SPECIFIER_ASCII)
00861 #endif
00862
00863
00864
00865 # if defined (ACE_LACKS_LONGLONG_T)
00866
00867 # define ACE_UINT64_DBLCAST_ADAPTER(n) ACE_U64_TO_U32 (n)
00868 # elif defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00869 # define ACE_UINT64_DBLCAST_ADAPTER(n) ((n).to_int64 ())
00870 # elif defined (ACE_WIN32)
00871 # define ACE_UINT64_DBLCAST_ADAPTER(n) static_cast<__int64> (n)
00872 # else
00873 # define ACE_UINT64_DBLCAST_ADAPTER(n) (n)
00874 # endif
00875
00876
00877
00878 # ifndef ACE_SIZEOF_FLOAT
00879 # if FLT_MAX_EXP == 128
00880 # define ACE_SIZEOF_FLOAT 4
00881 # elif FLT_MAX_EXP == 1024
00882 # define ACE_SIZEOF_FLOAT 8
00883 # else
00884 # error: unsupported float size, must be updated for this platform!
00885 # endif
00886 # endif
00887
00888
00889 # ifndef ACE_SIZEOF_DOUBLE
00890 # if DBL_MAX_EXP == 128
00891 # define ACE_SIZEOF_DOUBLE 4
00892 # elif DBL_MAX_EXP == 1024
00893 # define ACE_SIZEOF_DOUBLE 8
00894 # else
00895 # error: unsupported double size, must be updated for this platform!
00896 # endif
00897 # endif
00898
00899
00900 # ifndef ACE_SIZEOF_LONG_DOUBLE
00901 # if LDBL_MAX_EXP == 128
00902 # define ACE_SIZEOF_LONG_DOUBLE 4
00903 # elif LDBL_MAX_EXP == 1024
00904 # if defined (__powerpc64__)
00905 # define ACE_SIZEOF_LONG_DOUBLE 16
00906 # else
00907 # define ACE_SIZEOF_LONG_DOUBLE 8
00908 # endif
00909 # elif LDBL_MAX_EXP == 16384
00910 # if defined (LDBL_DIG) && LDBL_DIG == 18
00911 # if defined (__ia64) || defined (__x86_64)
00912 # define ACE_SIZEOF_LONG_DOUBLE 16
00913 # else
00914 # define ACE_SIZEOF_LONG_DOUBLE 12
00915 # endif
00916 # else
00917 # define ACE_SIZEOF_LONG_DOUBLE 16
00918 # endif
00919 # else
00920 # error: unsupported double size, must be updated for this platform!
00921 # endif
00922 # endif
00923
00924
00925 #define ACE_CHAR_MAX 0x7F
00926 #define ACE_CHAR_MIN -(ACE_CHAR_MAX)-1
00927 #define ACE_OCTET_MAX 0xFF
00928 #define ACE_INT16_MAX 0x7FFF
00929 #define ACE_INT16_MIN -(ACE_INT16_MAX)-1
00930 #define ACE_UINT16_MAX 0xFFFF
00931 #define ACE_WCHAR_MAX ACE_UINT16_MAX
00932 #define ACE_INT32_MAX 0x7FFFFFFF
00933 #define ACE_INT32_MIN -(ACE_INT32_MAX)-1
00934 #define ACE_UINT32_MAX 0xFFFFFFFF
00935 #define ACE_INT64_MAX ACE_INT64_LITERAL(0x7FFFFFFFFFFFFFFF)
00936 #define ACE_INT64_MIN -(ACE_INT64_MAX)-1
00937
00938 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00939
00940
00941
00942 # define ACE_UINT64_MAX ACE_U_LongLong (ACE_INT64_LITERAL (0xFFFFFFFFFFFFFFFF))
00943 #elif defined (ACE_LACKS_LONGLONG_T)
00944
00945
00946 # define ACE_UINT64_MAX ACE_U_LongLong (0xFFFFFFFFu, 0xFFFFFFFFu)
00947 #else
00948 # define ACE_UINT64_MAX ACE_UINT64_LITERAL (0xFFFFFFFFFFFFFFFF)
00949 #endif
00950
00951
00952 #define ACE_FLT_MAX 3.402823466e+38F
00953 #define ACE_FLT_MIN 1.175494351e-38F
00954 #define ACE_DBL_MAX 1.7976931348623158e+308
00955 #define ACE_DBL_MIN 2.2250738585072014e-308
00956
00957 # if defined (__ACE_INLINE__)
00958 # include "ace/Basic_Types.inl"
00959 # endif
00960
00961 # include "ace/post.h"
00962 #endif