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
00353
00354
00355 # if defined (ACE_HAS_WINCE) && (_WIN32_WCE < 400)
00356 typedef unsigned long ptrdiff_t;
00357 # endif
00358
00359 ACE_END_VERSIONED_NAMESPACE_DECL
00360
00361
00362 # if defined (BYTE_ORDER)
00363 # if (BYTE_ORDER == LITTLE_ENDIAN)
00364 # define ACE_LITTLE_ENDIAN 0x0123
00365 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00366 # elif (BYTE_ORDER == BIG_ENDIAN)
00367 # define ACE_BIG_ENDIAN 0x3210
00368 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00369 # else
00370 # error: unknown BYTE_ORDER!
00371 # endif
00372 # elif defined (_BYTE_ORDER)
00373 # if (_BYTE_ORDER == _LITTLE_ENDIAN)
00374 # define ACE_LITTLE_ENDIAN 0x0123
00375 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00376 # elif (_BYTE_ORDER == _BIG_ENDIAN)
00377 # define ACE_BIG_ENDIAN 0x3210
00378 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00379 # else
00380 # error: unknown _BYTE_ORDER!
00381 # endif
00382 # elif defined (__BYTE_ORDER)
00383 # if (__BYTE_ORDER == __LITTLE_ENDIAN)
00384 # define ACE_LITTLE_ENDIAN 0x0123
00385 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00386 # elif (__BYTE_ORDER == __BIG_ENDIAN)
00387 # define ACE_BIG_ENDIAN 0x3210
00388 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00389 # else
00390 # error: unknown __BYTE_ORDER!
00391 # endif
00392 # else
00393
00394 # if defined (i386) || defined (__i386__) || defined (_M_IX86) || \
00395 defined (vax) || defined (__alpha) || defined (__LITTLE_ENDIAN__) || \
00396 defined (ARM) || defined (_M_IA64) || defined (__ia64__) || \
00397 defined (_M_AMD64) || defined (__amd64)
00398
00399 # define ACE_LITTLE_ENDIAN 0x0123
00400 # define ACE_BYTE_ORDER ACE_LITTLE_ENDIAN
00401 # else
00402
00403 # define ACE_BIG_ENDIAN 0x3210
00404 # define ACE_BYTE_ORDER ACE_BIG_ENDIAN
00405 # endif
00406 # endif
00407
00408
00409
00410
00411 # define ACE_SWAP_LONG(L) ((ACE_SWAP_WORD ((L) & 0xFFFF) << 16) \
00412 | ACE_SWAP_WORD(((L) >> 16) & 0xFFFF))
00413 # define ACE_SWAP_WORD(L) ((((L) & 0x00FF) << 8) | (((L) & 0xFF00) >> 8))
00414
00415 # if defined (ACE_LITTLE_ENDIAN)
00416 # define ACE_HTONL(X) ACE_SWAP_LONG (X)
00417 # define ACE_NTOHL(X) ACE_SWAP_LONG (X)
00418 # define ACE_IDL_NCTOHL(X) (X)
00419 # define ACE_IDL_NSTOHL(X) (X)
00420 # else
00421 # define ACE_HTONL(X) X
00422 # define ACE_NTOHL(X) X
00423 # define ACE_IDL_NCTOHL(X) (X << 24)
00424 # define ACE_IDL_NSTOHL(X) ((X) << 16)
00425 # endif
00426
00427 # if defined (ACE_LITTLE_ENDIAN)
00428 # define ACE_HTONS(x) ACE_SWAP_WORD(x)
00429 # define ACE_NTOHS(x) ACE_SWAP_WORD(x)
00430 # else
00431 # define ACE_HTONS(x) x
00432 # define ACE_NTOHS(x) x
00433 # endif
00434
00435 #if defined (ACE_LACKS_LONGLONG_T)
00436
00437
00438
00439 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00440 reinterpret_cast<PTR_TYPE> (L.lo ())
00441 #elif defined (ACE_OPENVMS) && (!defined (__INITIAL_POINTER_SIZE) || (__INITIAL_POINTER_SIZE < 64))
00442 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00443 reinterpret_cast<PTR_TYPE> (static_cast<int> (L))
00444 #else
00445 # define ACE_LONGLONG_TO_PTR(PTR_TYPE, L) \
00446 reinterpret_cast<PTR_TYPE> (static_cast<intptr_t> (L))
00447 #endif
00448
00449
00450 #if defined (ACE_LACKS_LONGLONG_T) || defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00451
00452 # include "ace/iosfwd.h"
00453
00454 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470 class ACE_Export ACE_U_LongLong
00471 {
00472 public:
00473
00474 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00475 ACE_U_LongLong (const long long value = 0x0);
00476 #else
00477 ACE_U_LongLong (const ACE_UINT32 lo = 0x0, const ACE_UINT32 hi = 0x0);
00478 #endif
00479 ACE_U_LongLong (const ACE_U_LongLong &);
00480 ACE_U_LongLong &operator= (const ACE_U_LongLong &);
00481 ACE_U_LongLong &operator= (const ACE_INT32 &);
00482 ACE_U_LongLong &operator= (const ACE_UINT32 &);
00483 ~ACE_U_LongLong (void);
00484
00485
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 bool operator> (const ACE_U_LongLong &) const;
00495 bool operator> (const ACE_UINT32) const;
00496 bool operator>= (const ACE_U_LongLong &) const;
00497 bool operator>= (const ACE_UINT32) const;
00498
00499 ACE_U_LongLong operator+ (const ACE_U_LongLong &) const;
00500 ACE_U_LongLong operator+ (const ACE_UINT32) const;
00501 ACE_U_LongLong operator- (const ACE_U_LongLong &) const;
00502 ACE_U_LongLong operator- (const ACE_UINT32) const;
00503 ACE_U_LongLong operator* (const ACE_UINT32) const;
00504 ACE_U_LongLong &operator*= (const ACE_UINT32);
00505
00506 ACE_U_LongLong operator<< (const unsigned int) const;
00507 ACE_U_LongLong &operator<<= (const unsigned int);
00508 ACE_U_LongLong operator>> (const unsigned int) const;
00509 ACE_U_LongLong &operator>>= (const unsigned int);
00510
00511 double operator/ (const double) const;
00512
00513 ACE_U_LongLong &operator+= (const ACE_U_LongLong &);
00514 ACE_U_LongLong &operator+= (const ACE_UINT32);
00515 ACE_U_LongLong &operator-= (const ACE_U_LongLong &);
00516 ACE_U_LongLong &operator-= (const ACE_UINT32);
00517 ACE_U_LongLong &operator++ ();
00518 ACE_U_LongLong &operator-- ();
00519 const ACE_U_LongLong operator++ (int);
00520 const ACE_U_LongLong operator-- (int);
00521 ACE_U_LongLong &operator|= (const ACE_U_LongLong);
00522 ACE_U_LongLong &operator|= (const ACE_UINT32);
00523 ACE_U_LongLong &operator&= (const ACE_U_LongLong);
00524 ACE_U_LongLong &operator&= (const ACE_UINT32);
00525
00526
00527
00528
00529
00530 ACE_UINT32 operator/ (const ACE_UINT32) const;
00531 ACE_UINT32 operator% (const ACE_UINT32) const;
00532
00533
00534
00535 ACE_UINT32 operator| (const ACE_INT32) const;
00536 ACE_UINT32 operator& (const ACE_INT32) const;
00537
00538
00539
00540
00541 ACE_U_LongLong operator* (const ACE_INT32) const;
00542 ACE_U_LongLong &operator*= (const ACE_INT32);
00543 ACE_UINT32 operator/ (const ACE_INT32) const;
00544 # if ACE_SIZEOF_INT == 4
00545 ACE_UINT32 operator/ (const unsigned long) const;
00546 ACE_UINT32 operator/ (const long) const;
00547 # else
00548 ACE_UINT32 operator/ (const unsigned int) const;
00549 ACE_UINT32 operator/ (const int) const;
00550 # endif
00551
00552
00553
00554 void output (FILE * = stdout) const;
00555
00556 ACE_TCHAR *as_string (ACE_TCHAR *string,
00557 unsigned int base = 10,
00558 unsigned int uppercase = 0) const;
00559
00560 ACE_UINT32 hi (void) const;
00561 ACE_UINT32 lo (void) const;
00562
00563 void hi (const ACE_UINT32 hi);
00564 void lo (const ACE_UINT32 lo);
00565
00566 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00567 long long to_int64 (void) const;
00568 # endif
00569
00570 private:
00571
00572 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00573 long long data_;
00574 #else
00575 public:
00576 struct ace_hi_lo_correct_endian
00577 {
00578 # if defined (ACE_BIG_ENDIAN)
00579
00580 ACE_UINT32 hi_;
00581
00582 ACE_UINT32 lo_;
00583
00584 # else
00585
00586
00587 ACE_UINT32 lo_;
00588
00589 ACE_UINT32 hi_;
00590 # endif
00591 };
00592 private:
00593 union
00594 {
00595 struct ace_hi_lo_correct_endian data_;
00596
00597
00598 double for_alignment_;
00599 };
00600
00601
00602
00603
00604
00605
00606 const ACE_UINT32 &h_ () const { return data_.hi_; }
00607
00608
00609 ACE_UINT32 &h_ () { return data_.hi_; }
00610
00611
00612 const ACE_UINT32 &l_ () const { return data_.lo_; }
00613
00614
00615 ACE_UINT32 &l_ () { return data_.lo_; }
00616
00617
00618
00619
00620
00621
00622 ACE_UINT32 ul_shift (ACE_UINT32 a,
00623 ACE_UINT32 c_in,
00624 ACE_UINT32 *c_out) const;
00625 ACE_U_LongLong ull_shift (ACE_U_LongLong a,
00626 ACE_UINT32 c_in,
00627 ACE_UINT32 *c_out) const;
00628 ACE_U_LongLong ull_add (ACE_U_LongLong a,
00629 ACE_U_LongLong b,
00630 ACE_UINT32 *carry) const;
00631 ACE_U_LongLong ull_mult (ACE_U_LongLong a,
00632 ACE_UINT32 b,
00633 ACE_UINT32 *carry) const;
00634 #endif // ACE_LACKS_UNSIGNEDLONGLONG_T
00635 };
00636
00637 typedef ACE_U_LongLong ACE_UINT64;
00638
00639 #if !defined (ACE_LACKS_IOSTREAM_TOTALLY)
00640 ostream &operator<< (ostream &, const ACE_U_LongLong &);
00641 #endif
00642
00643 ACE_END_VERSIONED_NAMESPACE_DECL
00644
00645 # endif
00646
00647 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00648
00649
00650
00651 # if defined (ACE_LACKS_LONGLONG_T) || defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00652 inline ACE_UINT32
00653 ACE_U64_TO_U32 (ACE_U_LongLong const & n)
00654 {
00655
00656
00657
00658
00659
00660 return n.lo ();
00661 }
00662
00663 inline ACE_UINT32
00664 ACE_CU64_TO_CU32 (ACE_U_LongLong const & n)
00665 {
00666 return ACE_U64_TO_U32 (n);
00667 }
00668 # else
00669 inline ACE_UINT32
00670 ACE_U64_TO_U32 (ACE_UINT64 n)
00671 {
00672 return static_cast<ACE_UINT32> (n);
00673 }
00674
00675 inline ACE_UINT32
00676 ACE_CU64_TO_CU32 (ACE_UINT64 n)
00677 {
00678 return static_cast<ACE_UINT32> (n);
00679 }
00680 # endif
00681
00682 ACE_END_VERSIONED_NAMESPACE_DECL
00683
00684
00685 # if defined (ACE_LACKS_LONGLONG_T)
00686
00687 # define ACE_UINT64_LITERAL(n) n ## UL
00688
00689
00690 # define ACE_INT64_LITERAL(n) n ## L
00691 # elif defined (ACE_WIN32)
00692 # if defined (__MINGW32__)
00693 # define ACE_UINT64_LITERAL(n) n ## ull
00694 # define ACE_INT64_LITERAL(n) n ## ll
00695 # else
00696 # define ACE_UINT64_LITERAL(n) n ## ui64
00697 # define ACE_INT64_LITERAL(n) n ## i64
00698 # endif
00699 # elif defined (__TANDEM)
00700 # define ACE_UINT64_LITERAL(n) n ## LL
00701 # define ACE_INT64_LITERAL(n) n ## LL
00702 # else
00703 # define ACE_UINT64_LITERAL(n) n ## ull
00704 # define ACE_INT64_LITERAL(n) n ## ll
00705 # endif
00706
00707 #if !defined (ACE_INT8_FORMAT_SPECIFIER)
00708 # if defined (PRId8)
00709 # define ACE_INT8_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId8)
00710 # else
00711 # define ACE_INT8_FORMAT_SPECIFIER ACE_TEXT ("%d")
00712 # endif
00713 #endif
00714
00715 #if !defined (ACE_UINT8_FORMAT_SPECIFIER)
00716 # if defined (PRIu8)
00717 # define ACE_UINT8_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu8)
00718 # else
00719 # define ACE_UINT8_FORMAT_SPECIFIER ACE_TEXT ("%u")
00720 # endif
00721 #endif
00722
00723 #if !defined (ACE_INT16_FORMAT_SPECIFIER)
00724 # if defined (PRId16)
00725 # define ACE_INT16_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId16)
00726 # else
00727 # define ACE_INT16_FORMAT_SPECIFIER ACE_TEXT ("%d")
00728 # endif
00729 #endif
00730
00731 #if !defined (ACE_UINT16_FORMAT_SPECIFIER)
00732 # if defined (PRIu16)
00733 # define ACE_UINT16_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu16)
00734 # else
00735 # define ACE_UINT16_FORMAT_SPECIFIER ACE_TEXT ("%u")
00736 # endif
00737 #endif
00738
00739 #if !defined (ACE_INT32_FORMAT_SPECIFIER)
00740 # if defined (PRId32)
00741 # define ACE_INT32_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId32)
00742 # elif ACE_SIZEOF_INT == 4
00743 # define ACE_INT32_FORMAT_SPECIFIER ACE_TEXT ("%d")
00744 # else
00745 # define ACE_INT32_FORMAT_SPECIFIER ACE_TEXT ("%ld")
00746 # endif
00747 #endif
00748
00749 #if !defined (ACE_UINT32_FORMAT_SPECIFIER)
00750 # if defined (PRIu32)
00751 # define ACE_UINT32_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu32)
00752 # elif ACE_SIZEOF_INT == 4
00753 # define ACE_UINT32_FORMAT_SPECIFIER ACE_TEXT ("%u")
00754 # else
00755 # define ACE_UINT32_FORMAT_SPECIFIER ACE_TEXT ("%lu")
00756 # endif
00757 #endif
00758
00759 #if !defined (ACE_INT64_FORMAT_SPECIFIER)
00760 # if defined (PRId64)
00761 # define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRId64)
00762 # elif ACE_SIZEOF_LONG == 8
00763 # define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT ("%ld")
00764 # else
00765 # define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT ("%lld")
00766 # endif
00767 #endif
00768
00769 #if !defined (ACE_UINT64_FORMAT_SPECIFIER)
00770 # if defined (PRIu64)
00771 # define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT ("%") ACE_TEXT (PRIu64)
00772 # elif ACE_SIZEOF_LONG == 8
00773 # define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT ("%lu")
00774 # else
00775 # define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT ("%llu")
00776 # endif
00777 #endif
00778
00779 #if !defined (ACE_SSIZE_T_FORMAT_SPECIFIER)
00780 # if defined (ACE_WIN64)
00781 # define ACE_SSIZE_T_FORMAT_SPECIFIER ACE_TEXT ("%I64d")
00782 # else
00783 # define ACE_SSIZE_T_FORMAT_SPECIFIER ACE_TEXT ("%d")
00784 # endif
00785 #endif
00786
00787 #if !defined (ACE_SIZE_T_FORMAT_SPECIFIER)
00788 # if defined (ACE_WIN64)
00789 # define ACE_SIZE_T_FORMAT_SPECIFIER ACE_TEXT ("%I64u")
00790 # else
00791 # define ACE_SIZE_T_FORMAT_SPECIFIER ACE_TEXT ("%u")
00792 # endif
00793 #endif
00794
00795
00796
00797 # if defined (ACE_LACKS_LONGLONG_T)
00798
00799 # define ACE_UINT64_DBLCAST_ADAPTER(n) ACE_U64_TO_U32 (n)
00800 # elif defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00801 # define ACE_UINT64_DBLCAST_ADAPTER(n) ((n).to_int64 ())
00802 # elif defined (ACE_WIN32)
00803 # define ACE_UINT64_DBLCAST_ADAPTER(n) static_cast<__int64> (n)
00804 # else
00805 # define ACE_UINT64_DBLCAST_ADAPTER(n) (n)
00806 # endif
00807
00808
00809
00810 # ifndef ACE_SIZEOF_FLOAT
00811 # if FLT_MAX_EXP == 128
00812 # define ACE_SIZEOF_FLOAT 4
00813 # elif FLT_MAX_EXP == 1024
00814 # define ACE_SIZEOF_FLOAT 8
00815 # else
00816 # error: unsupported float size, must be updated for this platform!
00817 # endif
00818 # endif
00819
00820
00821 # ifndef ACE_SIZEOF_DOUBLE
00822 # if DBL_MAX_EXP == 128
00823 # define ACE_SIZEOF_DOUBLE 4
00824 # elif DBL_MAX_EXP == 1024
00825 # define ACE_SIZEOF_DOUBLE 8
00826 # else
00827 # error: unsupported double size, must be updated for this platform!
00828 # endif
00829 # endif
00830
00831
00832 # ifndef ACE_SIZEOF_LONG_DOUBLE
00833 # if LDBL_MAX_EXP == 128
00834 # define ACE_SIZEOF_LONG_DOUBLE 4
00835 # elif LDBL_MAX_EXP == 1024
00836 # define ACE_SIZEOF_LONG_DOUBLE 8
00837 # elif LDBL_MAX_EXP == 16384
00838 # if defined (LDBL_DIG) && LDBL_DIG == 18
00839 # if defined (__ia64) || defined (__x86_64)
00840 # define ACE_SIZEOF_LONG_DOUBLE 16
00841 # else
00842 # define ACE_SIZEOF_LONG_DOUBLE 12
00843 # endif
00844 # else
00845 # define ACE_SIZEOF_LONG_DOUBLE 16
00846 # endif
00847 # else
00848 # error: unsupported double size, must be updated for this platform!
00849 # endif
00850 # endif
00851
00852
00853 #define ACE_CHAR_MAX 0x7F
00854 #define ACE_CHAR_MIN -(ACE_CHAR_MAX)-1
00855 #define ACE_OCTET_MAX 0xFF
00856 #define ACE_INT16_MAX 0x7FFF
00857 #define ACE_INT16_MIN -(ACE_INT16_MAX)-1
00858 #define ACE_UINT16_MAX 0xFFFF
00859 #define ACE_WCHAR_MAX ACE_UINT16_MAX
00860 #define ACE_INT32_MAX 0x7FFFFFFF
00861 #define ACE_INT32_MIN -(ACE_INT32_MAX)-1
00862 #define ACE_UINT32_MAX 0xFFFFFFFF
00863 #define ACE_INT64_MAX ACE_INT64_LITERAL(0x7FFFFFFFFFFFFFFF)
00864 #define ACE_INT64_MIN -(ACE_INT64_MAX)-1
00865
00866 #if defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
00867
00868
00869
00870 # define ACE_UINT64_MAX ACE_U_LongLong (ACE_INT64_LITERAL (0xFFFFFFFFFFFFFFFF))
00871 #elif defined (ACE_LACKS_LONGLONG_T)
00872
00873
00874 # define ACE_UINT64_MAX ACE_U_LongLong (0xFFFFFFFFu, 0xFFFFFFFFu)
00875 #else
00876 # define ACE_UINT64_MAX ACE_UINT64_LITERAL (0xFFFFFFFFFFFFFFFF)
00877 #endif
00878
00879
00880 #define ACE_FLT_MAX 3.402823466e+38F
00881 #define ACE_FLT_MIN 1.175494351e-38F
00882 #define ACE_DBL_MAX 1.7976931348623158e+308
00883 #define ACE_DBL_MIN 2.2250738585072014e-308
00884
00885 # if defined (__ACE_INLINE__)
00886 # include "ace/Basic_Types.inl"
00887 # endif
00888
00889 # include "ace/post.h"
00890 #endif