8#ifndef INCLUDED_BSLS_ATOMIC
9#define INCLUDED_BSLS_ATOMIC
725#include <bsls_atomicoperations.h>
746 AtomicOperations::AtomicTypes::Int d_value;
813 void store(
int value);
839 int swap(
int swapValue);
866 operator int()
const;
895 AtomicOperations::AtomicTypes::Int64 d_value;
1046 AtomicOperations::AtomicTypes::Uint d_value;
1101 unsigned int add(
unsigned int value);
1106 unsigned int addAcqRel(
unsigned int value);
1114 void store(
unsigned int value);
1126 unsigned int subtract(
unsigned int value);
1140 unsigned int swap(
unsigned int swapValue);
1145 unsigned int swapAcqRel(
unsigned int swapValue);
1153 unsigned int testAndSwap(
unsigned int compareValue,
1154 unsigned int swapValue);
1164 unsigned int swapValue);
1169 operator unsigned int()
const;
1172 unsigned int load()
const;
1198 AtomicOperations::AtomicTypes::Uint64 d_value;
1348template <
class TYPE>
1360 typedef char AtomicPointer_PointerSizeCheck[
1361 sizeof(TYPE *) ==
sizeof(
void *) ? 1 : -1];
1363 template <
class TYPE1>
1364 struct RemoveConst {
typedef TYPE1 Type; };
1365 template <
class TYPE1>
1366 struct RemoveConst<TYPE1 const> {
typedef TYPE1 Type; };
1368 typedef typename RemoveConst<TYPE>::Type NcType;
1371 AtomicOperations::AtomicTypes::Pointer d_value;
1447 operator TYPE*()
const;
1479 AtomicOperations::AtomicTypes::Int d_value;
1509 void store(
bool value);
1521 bool swap(
bool swapValue);
1534 bool testAndSwap(
bool compareValue,
bool swapValue);
1548 operator bool()
const;
1578 AtomicOperations_Imp::initInt(&d_value, 0);
1584 AtomicOperations_Imp::initInt(&d_value, value);
1591 AtomicOperations_Imp::setInt(&d_value, value);
1598 return AtomicOperations_Imp::addIntNv(&d_value, value);
1604 return AtomicOperations_Imp::subtractIntNv(&d_value, value);
1610 return AtomicOperations_Imp::incrementIntNv(&d_value);
1616 return static_cast<int>(
1617 static_cast<unsigned int>(
1618 AtomicOperations_Imp::incrementIntNv(&d_value)) - 1);
1624 return AtomicOperations_Imp::decrementIntNv(&d_value);
1630 return static_cast<int>(
1631 static_cast<unsigned int>(
1632 AtomicOperations_Imp::decrementIntNv(&d_value)) + 1);
1638 return AtomicOperations_Imp::addIntNv(&d_value, value);
1644 return AtomicOperations_Imp::addIntNvAcqRel(&d_value, value);
1650 return AtomicOperations_Imp::addIntNvRelaxed(&d_value, value);
1656 AtomicOperations_Imp::setInt(&d_value, value);
1662 AtomicOperations_Imp::setIntRelaxed(&d_value, value);
1668 AtomicOperations_Imp::setIntRelease(&d_value, value);
1674 return AtomicOperations_Imp::subtractIntNv(&d_value, value);
1680 return AtomicOperations_Imp::subtractIntNvAcqRel(&d_value, value);
1686 return AtomicOperations_Imp::subtractIntNvRelaxed(&d_value, value);
1692 return AtomicOperations_Imp::swapInt(&d_value, swapValue);
1698 return AtomicOperations_Imp::swapIntAcqRel(&d_value, swapValue);
1704 return AtomicOperations_Imp::testAndSwapInt(&d_value,
1712 return AtomicOperations_Imp::testAndSwapIntAcqRel(&d_value,
1720AtomicInt::operator int()
const
1722 return AtomicOperations_Imp::getInt(&d_value);
1728 return this->
operator int();
1734 return AtomicOperations_Imp::getIntAcquire(&d_value);
1740 return AtomicOperations_Imp::getIntRelaxed(&d_value);
1751 AtomicOperations_Imp::initInt64(&d_value, 0);
1757 AtomicOperations_Imp::initInt64(&d_value, value);
1764 AtomicOperations_Imp::setInt64(&d_value, value);
1771 return AtomicOperations_Imp::addInt64Nv(&d_value, value);
1777 return AtomicOperations_Imp::subtractInt64Nv(&d_value, value);
1783 return AtomicOperations_Imp::incrementInt64Nv(&d_value);
1791 AtomicOperations_Imp::incrementInt64Nv(&d_value)) - 1);
1797 return AtomicOperations_Imp::decrementInt64Nv(&d_value);
1805 AtomicOperations_Imp::decrementInt64Nv(&d_value)) + 1);
1811 return AtomicOperations_Imp::addInt64Nv(&d_value, value);
1817 return AtomicOperations_Imp::addInt64NvAcqRel(&d_value, value);
1823 return AtomicOperations_Imp::addInt64NvRelaxed(&d_value, value);
1829 AtomicOperations_Imp::setInt64(&d_value, value);
1835 AtomicOperations_Imp::setInt64Relaxed(&d_value, value);
1841 AtomicOperations_Imp::setInt64Release(&d_value, value);
1847 return AtomicOperations_Imp::subtractInt64Nv(&d_value, value);
1853 return AtomicOperations_Imp::subtractInt64NvAcqRel(&d_value, value);
1859 return AtomicOperations_Imp::subtractInt64NvRelaxed(&d_value, value);
1865 return AtomicOperations_Imp::swapInt64(&d_value, swapValue);
1871 return AtomicOperations_Imp::swapInt64AcqRel(&d_value, swapValue);
1879 return AtomicOperations_Imp::testAndSwapInt64(&d_value,
1889 return AtomicOperations_Imp::testAndSwapInt64AcqRel(&d_value,
1898 return AtomicOperations_Imp::getInt64(&d_value);
1910 return AtomicOperations_Imp::getInt64Acquire(&d_value);
1916 return AtomicOperations_Imp::getInt64Relaxed(&d_value);
1927 AtomicOperations_Imp::initUint(&d_value, 0);
1933 AtomicOperations_Imp::initUint(&d_value, value);
1940 AtomicOperations_Imp::setUint(&d_value, value);
1947 return AtomicOperations_Imp::addUintNv(&d_value, value);
1953 return AtomicOperations_Imp::subtractUintNv(&d_value, value);
1959 return AtomicOperations_Imp::incrementUintNv(&d_value);
1965 return AtomicOperations_Imp::incrementUintNv(&d_value) - 1;
1971 return AtomicOperations_Imp::decrementUintNv(&d_value);
1977 return AtomicOperations_Imp::decrementUintNv(&d_value) + 1;
1983 return AtomicOperations_Imp::addUintNv(&d_value, value);
1989 return AtomicOperations_Imp::addUintNvAcqRel(&d_value, value);
1995 return AtomicOperations_Imp::addUintNvRelaxed(&d_value, value);
2001 AtomicOperations_Imp::setUint(&d_value, value);
2007 AtomicOperations_Imp::setUintRelaxed(&d_value, value);
2013 AtomicOperations_Imp::setUintRelease(&d_value, value);
2019 return AtomicOperations_Imp::subtractUintNv(&d_value, value);
2025 return AtomicOperations_Imp::subtractUintNvAcqRel(&d_value, value);
2031 return AtomicOperations_Imp::subtractUintNvRelaxed(&d_value, value);
2037 return AtomicOperations_Imp::swapUint(&d_value, swapValue);
2043 return AtomicOperations_Imp::swapUintAcqRel(&d_value, swapValue);
2048 unsigned int swapValue)
2050 return AtomicOperations_Imp::testAndSwapUint(&d_value,
2057 unsigned int swapValue)
2059 return AtomicOperations_Imp::testAndSwapUintAcqRel(&d_value,
2067AtomicUint::operator
unsigned int()
const
2069 return AtomicOperations_Imp::getUint(&d_value);
2075 return this->
operator unsigned int();
2081 return AtomicOperations_Imp::getUintAcquire(&d_value);
2087 return AtomicOperations_Imp::getUintRelaxed(&d_value);
2098 AtomicOperations_Imp::initUint64(&d_value, 0);
2104 AtomicOperations_Imp::initUint64(&d_value, value);
2111 AtomicOperations_Imp::setUint64(&d_value, value);
2118 return AtomicOperations_Imp::addUint64Nv(&d_value, value);
2124 return AtomicOperations_Imp::subtractUint64Nv(&d_value, value);
2130 return AtomicOperations_Imp::incrementUint64Nv(&d_value);
2136 return AtomicOperations_Imp::incrementUint64Nv(&d_value) - 1;
2142 return AtomicOperations_Imp::decrementUint64Nv(&d_value);
2148 return AtomicOperations_Imp::decrementUint64Nv(&d_value) + 1;
2154 return AtomicOperations_Imp::addUint64Nv(&d_value, value);
2160 return AtomicOperations_Imp::addUint64NvAcqRel(&d_value, value);
2166 return AtomicOperations_Imp::addUint64NvRelaxed(&d_value, value);
2172 AtomicOperations_Imp::setUint64(&d_value, value);
2178 AtomicOperations_Imp::setUint64Relaxed(&d_value, value);
2184 AtomicOperations_Imp::setUint64Release(&d_value, value);
2190 return AtomicOperations_Imp::subtractUint64Nv(&d_value, value);
2196 return AtomicOperations_Imp::subtractUint64NvAcqRel(&d_value, value);
2202 return AtomicOperations_Imp::subtractUint64NvRelaxed(&d_value, value);
2208 return AtomicOperations_Imp::swapUint64(&d_value, swapValue);
2214 return AtomicOperations_Imp::swapUint64AcqRel(&d_value, swapValue);
2221 return AtomicOperations_Imp::testAndSwapUint64(&d_value,
2230 return AtomicOperations_Imp::testAndSwapUint64AcqRel(&d_value,
2239 return AtomicOperations_Imp::getUint64(&d_value);
2251 return AtomicOperations_Imp::getUint64Acquire(&d_value);
2257 return AtomicOperations_Imp::getUint64Relaxed(&d_value);
2265template <
class TYPE>
2269 AtomicOperations_Imp::initPointer(&d_value, 0);
2272template <
class TYPE>
2276 AtomicOperations_Imp::initPointer(
2278 reinterpret_cast<void *
>(
const_cast<NcType *
>(value)));
2282template <
class TYPE>
2287 AtomicOperations_Imp::setPtr(
2289 reinterpret_cast<void *
>(
const_cast<NcType *
>(value)));
2293template <
class TYPE>
2297 AtomicOperations_Imp::setPtr(
2299 reinterpret_cast<void *
>(
const_cast<NcType *
>(value)));
2302template <
class TYPE>
2306 AtomicOperations_Imp::setPtrRelaxed(
2308 reinterpret_cast<void *
>(
const_cast<NcType *
>(value)));
2311template <
class TYPE>
2315 AtomicOperations_Imp::setPtrRelease(
2317 reinterpret_cast<void *
>(
const_cast<NcType *
>(value)));
2320template <
class TYPE>
2324 return reinterpret_cast<TYPE *
>(
2325 AtomicOperations_Imp::swapPtr(
2327 reinterpret_cast<void *
>(
const_cast<NcType *
>(swapValue))));
2330template <
class TYPE>
2334 return reinterpret_cast<TYPE *
>(
2335 AtomicOperations_Imp::swapPtrAcqRel(
2337 reinterpret_cast<void *
>(
const_cast<NcType *
>(swapValue))));
2340template <
class TYPE>
2345 return reinterpret_cast<TYPE *
>(
2346 AtomicOperations_Imp::testAndSwapPtr(
2348 reinterpret_cast<void *
>(
const_cast<NcType *
>(compareValue)),
2349 reinterpret_cast<void *
>(
const_cast<NcType *
>(swapValue))));
2352template <
class TYPE>
2357 return reinterpret_cast<TYPE *
>(
2358 AtomicOperations_Imp::testAndSwapPtrAcqRel(
2360 reinterpret_cast<void *
>(
const_cast<NcType *
>(compareValue)),
2361 reinterpret_cast<void *
>(
const_cast<NcType *
>(swapValue))));
2365template <
class TYPE>
2369 return static_cast<TYPE *
>(AtomicOperations_Imp::getPtr(&d_value));
2372template <
class TYPE>
2376 return *(
static_cast<TYPE *
>(AtomicOperations_Imp::getPtr(&d_value)));
2379template <
class TYPE>
2383 return static_cast<TYPE *
>(AtomicOperations_Imp::getPtr(&d_value));
2386template <
class TYPE>
2390 return this->
operator TYPE*();
2393template <
class TYPE>
2397 return static_cast<TYPE *
>(AtomicOperations_Imp::getPtrAcquire(&d_value));
2400template <
class TYPE>
2404 return static_cast<TYPE *
>(AtomicOperations_Imp::getPtrRelaxed(&d_value));
2415 AtomicOperations_Imp::initInt(&d_value, AtomicBool::e_FALSE);
2421 AtomicOperations_Imp::initInt(
2423 value ? AtomicBool::e_TRUE : AtomicBool::e_FALSE);
2430 AtomicOperations_Imp::setInt(
2432 value ? AtomicBool::e_TRUE : AtomicBool::e_FALSE);
2439 AtomicOperations_Imp::setInt(
2441 value ? AtomicBool::e_TRUE : AtomicBool::e_FALSE);
2447 AtomicOperations_Imp::setIntRelaxed(
2449 value ? AtomicBool::e_TRUE : AtomicBool::e_FALSE);
2455 AtomicOperations_Imp::setIntRelease(
2457 value ? AtomicBool::e_TRUE : AtomicBool::e_FALSE);
2463 return AtomicOperations_Imp::swapInt(
2465 swapValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE)
2466 == AtomicBool::e_TRUE;
2472 return AtomicOperations_Imp::swapIntAcqRel(
2474 swapValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE)
2475 == AtomicBool::e_TRUE;
2481 return AtomicOperations_Imp::testAndSwapInt(
2483 compareValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE,
2484 swapValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE)
2485 == AtomicBool::e_TRUE;
2491 return AtomicOperations_Imp::testAndSwapIntAcqRel(
2493 compareValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE,
2494 swapValue ? AtomicBool::e_TRUE : AtomicBool::e_FALSE)
2495 == AtomicBool::e_TRUE;
2501AtomicBool::operator bool()
const
2503 return AtomicOperations_Imp::getInt(&d_value) == AtomicBool::e_TRUE;
2509 return this->
operator bool();
2515 return AtomicOperations_Imp::getIntAcquire(&d_value) == AtomicBool::e_TRUE;
2521 return AtomicOperations_Imp::getIntRelaxed(&d_value) == AtomicBool::e_TRUE;
Definition bsls_atomic.h:1472
void storeRelease(bool value)
Definition bsls_atomic.h:2453
bool swap(bool swapValue)
Definition bsls_atomic.h:2461
void store(bool value)
Definition bsls_atomic.h:2437
AtomicBool()
Create an atomic boolean object having the default value false.
Definition bsls_atomic.h:2413
bool testAndSwap(bool compareValue, bool swapValue)
Definition bsls_atomic.h:2479
bool loadRelaxed() const
Definition bsls_atomic.h:2519
bool load() const
Return the current value of this object.
Definition bsls_atomic.h:2507
bool swapAcqRel(bool swapValue)
Definition bsls_atomic.h:2470
bool testAndSwapAcqRel(bool compareValue, bool swapValue)
Definition bsls_atomic.h:2489
void storeRelaxed(bool value)
Definition bsls_atomic.h:2445
bool loadAcquire() const
Definition bsls_atomic.h:2513
Definition bsls_atomic.h:892
Types::Int64 swap(Types::Int64 swapValue)
Definition bsls_atomic.h:1863
Types::Int64 operator-=(Types::Int64 value)
Definition bsls_atomic.h:1775
Types::Int64 operator++()
Definition bsls_atomic.h:1781
Types::Int64 loadRelaxed() const
Definition bsls_atomic.h:1914
Types::Int64 subtract(Types::Int64 value)
Definition bsls_atomic.h:1845
Types::Int64 add(Types::Int64 value)
Definition bsls_atomic.h:1809
Types::Int64 operator--()
Definition bsls_atomic.h:1795
Types::Int64 load() const
Return the current value of this object.
Definition bsls_atomic.h:1902
AtomicInt64()
Create an atomic 64-bit integer object having the default value 0.
Definition bsls_atomic.h:1749
Types::Int64 operator+=(Types::Int64 value)
Definition bsls_atomic.h:1769
Types::Int64 addRelaxed(Types::Int64 value)
Definition bsls_atomic.h:1821
Types::Int64 subtractAcqRel(Types::Int64 value)
Definition bsls_atomic.h:1851
Types::Int64 testAndSwapAcqRel(Types::Int64 compareValue, Types::Int64 swapValue)
Definition bsls_atomic.h:1886
void storeRelaxed(Types::Int64 value)
Definition bsls_atomic.h:1833
Types::Int64 addAcqRel(Types::Int64 value)
Definition bsls_atomic.h:1815
Types::Int64 subtractRelaxed(Types::Int64 value)
Definition bsls_atomic.h:1857
Types::Int64 loadAcquire() const
Definition bsls_atomic.h:1908
Types::Int64 testAndSwap(Types::Int64 compareValue, Types::Int64 swapValue)
Definition bsls_atomic.h:1876
void store(Types::Int64 value)
Definition bsls_atomic.h:1827
Types::Int64 swapAcqRel(Types::Int64 swapValue)
Definition bsls_atomic.h:1869
void storeRelease(Types::Int64 value)
Definition bsls_atomic.h:1839
Definition bsls_atomic.h:743
int subtractAcqRel(int value)
Definition bsls_atomic.h:1678
int operator--()
Definition bsls_atomic.h:1622
int loadAcquire() const
Definition bsls_atomic.h:1732
void storeRelease(int value)
Definition bsls_atomic.h:1666
int swapAcqRel(int swapValue)
Definition bsls_atomic.h:1696
int operator-=(int value)
Definition bsls_atomic.h:1602
AtomicInt()
Create an atomic integer object having the default value 0.
Definition bsls_atomic.h:1576
int addRelaxed(int value)
Definition bsls_atomic.h:1648
void store(int value)
Definition bsls_atomic.h:1654
int operator+=(int value)
Definition bsls_atomic.h:1596
int swap(int swapValue)
Definition bsls_atomic.h:1690
int loadRelaxed() const
Definition bsls_atomic.h:1738
int addAcqRel(int value)
Definition bsls_atomic.h:1642
int subtract(int value)
Definition bsls_atomic.h:1672
int testAndSwapAcqRel(int compareValue, int swapValue)
Definition bsls_atomic.h:1710
void storeRelaxed(int value)
Definition bsls_atomic.h:1660
int subtractRelaxed(int value)
Definition bsls_atomic.h:1684
int load() const
Return the current value of this object.
Definition bsls_atomic.h:1726
int operator++()
Definition bsls_atomic.h:1608
int add(int value)
Definition bsls_atomic.h:1636
int testAndSwap(int compareValue, int swapValue)
Definition bsls_atomic.h:1702
Definition bsls_atomic.h:1349
void store(TYPE *value)
Definition bsls_atomic.h:2295
void storeRelaxed(TYPE *value)
Definition bsls_atomic.h:2304
AtomicPointer(TYPE *value)
Create an atomic pointer object having the specified value.
Definition bsls_atomic.h:2274
void storeRelease(TYPE *value)
Definition bsls_atomic.h:2313
TYPE * swap(TYPE *swapValue)
Definition bsls_atomic.h:2322
TYPE & operator*() const
Definition bsls_atomic.h:2374
TYPE * swapAcqRel(TYPE *swapValue)
Definition bsls_atomic.h:2332
TYPE * operator->() const
Return the current value of this object.
Definition bsls_atomic.h:2381
AtomicPointer()
Create an atomic pointer object having the default value NULL.
Definition bsls_atomic.h:2267
TYPE * loadRelaxed() const
Definition bsls_atomic.h:2402
TYPE * loadAcquire() const
Definition bsls_atomic.h:2395
TYPE * load() const
Return the current value of this object.
Definition bsls_atomic.h:2388
TYPE * testAndSwapAcqRel(const TYPE *compareValue, TYPE *swapValue)
Definition bsls_atomic.h:2354
AtomicPointer< TYPE > & operator=(TYPE *value)
Definition bsls_atomic.h:2285
TYPE * testAndSwap(const TYPE *compareValue, TYPE *swapValue)
Definition bsls_atomic.h:2342
Definition bsls_atomic.h:1195
AtomicUint64()
Definition bsls_atomic.h:2096
Types::Uint64 addRelaxed(Types::Uint64 value)
Definition bsls_atomic.h:2164
Types::Uint64 testAndSwapAcqRel(Types::Uint64 compareValue, Types::Uint64 swapValue)
Definition bsls_atomic.h:2227
Types::Uint64 operator+=(Types::Uint64 value)
Definition bsls_atomic.h:2116
Types::Uint64 loadRelaxed() const
Definition bsls_atomic.h:2255
Types::Uint64 subtractAcqRel(Types::Uint64 value)
Definition bsls_atomic.h:2194
Types::Uint64 swap(Types::Uint64 swapValue)
Definition bsls_atomic.h:2206
Types::Uint64 testAndSwap(Types::Uint64 compareValue, Types::Uint64 swapValue)
Definition bsls_atomic.h:2218
Types::Uint64 subtract(Types::Uint64 value)
Definition bsls_atomic.h:2188
Types::Uint64 loadAcquire() const
Definition bsls_atomic.h:2249
Types::Uint64 swapAcqRel(Types::Uint64 swapValue)
Definition bsls_atomic.h:2212
Types::Uint64 subtractRelaxed(Types::Uint64 value)
Definition bsls_atomic.h:2200
Types::Uint64 operator--()
Definition bsls_atomic.h:2140
void storeRelease(Types::Uint64 value)
Definition bsls_atomic.h:2182
Types::Uint64 addAcqRel(Types::Uint64 value)
Definition bsls_atomic.h:2158
void store(Types::Uint64 value)
Definition bsls_atomic.h:2170
Types::Uint64 operator-=(Types::Uint64 value)
Definition bsls_atomic.h:2122
Types::Uint64 add(Types::Uint64 value)
Definition bsls_atomic.h:2152
Types::Uint64 operator++()
Definition bsls_atomic.h:2128
Types::Uint64 load() const
Return the current value of this object.
Definition bsls_atomic.h:2243
void storeRelaxed(Types::Uint64 value)
Definition bsls_atomic.h:2176
Definition bsls_atomic.h:1043
unsigned int swap(unsigned int swapValue)
Definition bsls_atomic.h:2035
unsigned int load() const
Return the current value of this object.
Definition bsls_atomic.h:2073
AtomicUint()
Create an atomic unsigned integer object having the default value 0.
Definition bsls_atomic.h:1925
unsigned int addRelaxed(unsigned int value)
Definition bsls_atomic.h:1993
unsigned int testAndSwapAcqRel(unsigned int compareValue, unsigned int swapValue)
Definition bsls_atomic.h:2056
unsigned int loadAcquire() const
Definition bsls_atomic.h:2079
void storeRelaxed(unsigned int value)
Definition bsls_atomic.h:2005
unsigned int add(unsigned int value)
Definition bsls_atomic.h:1981
unsigned int operator--()
Definition bsls_atomic.h:1969
unsigned int subtractAcqRel(unsigned int value)
Definition bsls_atomic.h:2023
unsigned int testAndSwap(unsigned int compareValue, unsigned int swapValue)
Definition bsls_atomic.h:2047
void store(unsigned int value)
Definition bsls_atomic.h:1999
unsigned int subtract(unsigned int value)
Definition bsls_atomic.h:2017
unsigned int swapAcqRel(unsigned int swapValue)
Definition bsls_atomic.h:2041
unsigned int subtractRelaxed(unsigned int value)
Definition bsls_atomic.h:2029
unsigned int addAcqRel(unsigned int value)
Definition bsls_atomic.h:1987
unsigned int operator-=(unsigned int value)
Definition bsls_atomic.h:1951
unsigned int loadRelaxed() const
Definition bsls_atomic.h:2085
void storeRelease(unsigned int value)
Definition bsls_atomic.h:2011
unsigned int operator+=(unsigned int value)
Definition bsls_atomic.h:1945
unsigned int operator++()
Definition bsls_atomic.h:1957
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bdlt_iso8601util.h:691
unsigned long long Uint64
Definition bsls_types.h:137
long long Int64
Definition bsls_types.h:132