8#ifndef INCLUDED_BDLB_NULLABLEALLOCATEDVALUE
9#define INCLUDED_BDLB_NULLABLEALLOCATEDVALUE
103#include <bdlscm_version.h>
131#include <bsl_algorithm.h>
132#include <bsl_cstddef.h>
133#include <bsl_cstdint.h>
134#include <bsl_iosfwd.h>
136#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
142#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
146# define COMPILING_BDLB_NULLABLEALLOCATEDVALUE_H
148# undef COMPILING_BDLB_NULLABLEALLOCATEDVALUE_H
176 enum { k_HAS_VALUE = 0 };
187# ifndef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
194 typedef BloombergLP::bsls::UnspecifiedBool<NullableAllocatedValue>
196 typedef typename UnspecifiedBoolUtil::BoolType UnspecifiedBool;
212 const TYPE *getAddress() const;
226 void setRemoteAddress(TYPE *newPtr);
253 bslma::UsesBslmaAllocator);
255 bslmf::IsBitwiseMoveable);
326#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
334 template <
class... ARGS>
337# if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
345 template <
class INIT_LIST_TYPE,
class... ARGS>
346 TYPE&
emplace(std::initializer_list<INIT_LIST_TYPE> il,
362 template <
class STREAM>
399 template <
class STREAM>
427#ifndef BDE_OMIT_INTERNAL_DEPRECATED
438 template <
class ANY_TYPE>
439 TYPE
value_or(
const ANY_TYPE& default_value)
const;
452# ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
459 operator UnspecifiedBool() const BSLS_NOTHROW_SPEC
461 return UnspecifiedBoolUtil::makeValue(
has_value());
479 bsl::ostream&
print(bsl::ostream& stream,
481 int spacesPerLevel = 4)
const;
495 "Use 'has_value() ? &value() : address' instead")
496 const TYPE *addressOr(const TYPE *address) const;
498#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
513 template <
class... ARGS>
515 "Use 'emplace' instead")
516 TYPE& makeValueInplace(ARGS&&... args);
524 "Use 'value_or' instead")
525 TYPE valueOr(const TYPE& otherValue) const;
532 const TYPE *valueOrNull() const;
543template <class LHS_TYPE, class RHS_TYPE>
553template <class LHS_TYPE, class RHS_TYPE>
555 const RHS_TYPE& rhs);
556template <class LHS_TYPE, class RHS_TYPE>
557bool operator==(const LHS_TYPE& lhs,
566template <class LHS_TYPE, class RHS_TYPE>
576template <class LHS_TYPE, class RHS_TYPE>
578 const RHS_TYPE& rhs);
579template <class LHS_TYPE, class RHS_TYPE>
580bool operator!=(const LHS_TYPE& lhs,
589template <class LHS_TYPE, class RHS_TYPE>
596template <class LHS_TYPE, class RHS_TYPE>
598 const RHS_TYPE& rhs);
603template <class LHS_TYPE, class RHS_TYPE>
604bool operator<(const LHS_TYPE& lhs,
614template <class LHS_TYPE, class RHS_TYPE>
622template <class LHS_TYPE, class RHS_TYPE>
624 const RHS_TYPE& rhs);
630template <class LHS_TYPE, class RHS_TYPE>
631bool operator<=(const LHS_TYPE& lhs,
641template <class LHS_TYPE, class RHS_TYPE>
649template <class LHS_TYPE, class RHS_TYPE>
651 const RHS_TYPE& rhs);
657template <class LHS_TYPE, class RHS_TYPE>
658bool operator>(const LHS_TYPE& lhs,
667template <class LHS_TYPE, class RHS_TYPE>
675template <class LHS_TYPE, class RHS_TYPE>
677 const RHS_TYPE& rhs);
683template <class LHS_TYPE, class RHS_TYPE>
684bool operator>=(const LHS_TYPE& lhs,
696bsl::ostream& operator<<(
bsl::ostream& stream,
776template <class LHS_TYPE, class RHS_TYPE>
778 const
bsl::optional<RHS_TYPE>& rhs);
779template <class LHS_TYPE, class RHS_TYPE>
780bool operator==(const
bsl::optional<LHS_TYPE>& lhs,
786template <class LHS_TYPE, class RHS_TYPE>
788 const
bsl::optional<RHS_TYPE>& rhs);
789template <class LHS_TYPE, class RHS_TYPE>
790bool operator!=(const
bsl::optional<LHS_TYPE>& lhs,
797template <class LHS_TYPE, class RHS_TYPE>
799 const
bsl::optional<RHS_TYPE>& rhs);
805template <class LHS_TYPE, class RHS_TYPE>
806bool operator<(const
bsl::optional<LHS_TYPE>& lhs,
813template <class LHS_TYPE, class RHS_TYPE>
815 const
bsl::optional<RHS_TYPE>& rhs);
821template <class LHS_TYPE, class RHS_TYPE>
822bool operator>(const
bsl::optional<LHS_TYPE>& lhs,
829template <class LHS_TYPE, class RHS_TYPE>
831 const
bsl::optional<RHS_TYPE>& rhs);
837template <class LHS_TYPE, class RHS_TYPE>
838bool operator<=(const
bsl::optional<LHS_TYPE>& lhs,
845template <class LHS_TYPE, class RHS_TYPE>
847 const
bsl::optional<RHS_TYPE>& rhs);
853template <class LHS_TYPE, class RHS_TYPE>
854bool operator>=(const
bsl::optional<LHS_TYPE>& lhs,
863template <class HASHALG, class TYPE>
885: d_allocator(
bslma::Default::defaultAllocator())
887 d_storage.d_pointer_p = 0;
896 d_storage.d_pointer_p = 0;
902: d_allocator(
bslma::Default::defaultAllocator())
904 d_storage.d_pointer_p = 0;
912: d_allocator(allocator.mechanism())
914 d_storage.d_pointer_p = 0;
921: d_allocator(
bslma::Default::defaultAllocator())
927 d_storage.d_pointer_p = 0;
936: d_allocator(allocator.mechanism())
942 d_storage.d_pointer_p = 0;
949: d_allocator(
bslma::Default::defaultAllocator())
959: d_allocator(allocator.mechanism())
977 return (
sizeof(TYPE) <=
sizeof(TYPE *)) &&
986NullableAllocatedValue<TYPE>&
991 makeValue(rhs.
value());
1000template <
class TYPE>
1009template <
class TYPE>
1018template <
class TYPE>
1019template <
class STREAM>
1024 char isNullFlag = 0;
1026 stream.getInt8(isNullFlag);
1031 bdexStreamIn(stream, value(), version);
1041template <
class TYPE>
1056 TYPE *tmpPtr =
reinterpret_cast<TYPE *
>(alloc->
allocate(
sizeof(TYPE)));
1061 setRemoteAddress(tmpPtr);
1068template <
class TYPE>
1089 TYPE *tmpPtr =
reinterpret_cast<TYPE *
>(alloc->
allocate(
sizeof(TYPE)));
1094 setRemoteAddress(tmpPtr);
1102template <
class TYPE>
1107 TYPE *p = getAddress();
1111 allocator()->deallocate(p);
1113 clearHasValueFlag();
1117template <
class TYPE>
1125 if (isNull() && other.
isNull()) {
1137template <
class TYPE>
1142 return *getAddress();
1145template <
class TYPE>
1150 return getAddress();
1153template <
class TYPE>
1161#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1162template <
class TYPE>
1163template <
class... ARGS>
1169 TYPE *ptr = getAddress();
1174 clearHasValueFlag();
1176 else if (!isLocal()) {
1180 ptr =
reinterpret_cast<TYPE *
>(alloc->
allocate(
sizeof(TYPE)));
1181 setRemoteAddress(ptr);
1185 BloombergLP::bslma::ConstructionUtil::construct(
1192 BloombergLP::bslma::ConstructionUtil::construct(
1202# if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1203template <
class TYPE>
1204template <
class INIT_LIST_TYPE,
class... ARGS>
1206 std::initializer_list<INIT_LIST_TYPE> il,
1210 TYPE *ptr = getAddress();
1215 clearHasValueFlag();
1217 else if (!isLocal()) {
1221 ptr =
reinterpret_cast<TYPE *
>(alloc->
allocate(
sizeof(TYPE)));
1222 setRemoteAddress(ptr);
1226 BloombergLP::bslma::ConstructionUtil::construct(
1234 BloombergLP::bslma::ConstructionUtil::construct(
1248template <
class TYPE>
1250TYPE *NullableAllocatedValue<TYPE>::getAddress() {
1252 return reinterpret_cast<TYPE *
>(
1253 static_cast<void *
>(d_storage.d_buffer));
1256 return d_storage.d_pointer_p;
1260template <
class TYPE>
1262const TYPE *NullableAllocatedValue<TYPE>::getAddress()
const {
1264 return reinterpret_cast<const TYPE *
>(
1265 static_cast<const void *
>(d_storage.d_buffer));
1268 return d_storage.d_pointer_p;
1273template <
class TYPE>
1280template <
class TYPE>
1284 d_allocator.
setFlag(k_HAS_VALUE);
1287template <
class TYPE>
1289void NullableAllocatedValue<TYPE>::setRemoteAddress(TYPE *newPtr) {
1291 d_storage.d_pointer_p = newPtr;
1294template <
class TYPE>
1296void NullableAllocatedValue<TYPE>::swapLocal(NullableAllocatedValue& other)
1304 else if (other.isNull()) {
1305 other.makeValue(value());
1313template <
class TYPE>
1315void NullableAllocatedValue<TYPE>::swapRemote(NullableAllocatedValue& other)
1319 &other.d_storage.d_pointer_p);
1323template <
class TYPE>
1324template <
class STREAM>
1330 stream.putInt8(has_value() ? 0 : 1);
1333 bdexStreamOut(stream, value(), version);
1339template <
class TYPE>
1347template <
class TYPE>
1351 return d_allocator.
readFlag(k_HAS_VALUE);
1354template <
class TYPE>
1358 return !has_value();
1361# ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
1362template <
class TYPE>
1369template <
class TYPE>
1372 int versionSelector)
const
1380 return maxSupportedBdexVersion(
reinterpret_cast<TYPE *
>(0),
1384#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1385template <
class TYPE>
1389 return maxSupportedBdexVersion(0);
1393template <
class TYPE>
1394template <
class ANY_TYPE>
1398 return has_value() ? value() :
static_cast<TYPE
>(default_value);
1401template <
class TYPE>
1409template <
class TYPE>
1419template <
class TYPE>
1426template <
class TYPE>
1429 bsl::ostream& stream,
1431 int spacesPerLevel)
const
1443template <
class TYPE>
1447#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1457 return *getAddress();
1462template <
class TYPE>
1466 return has_value() ? &value() : address;
1469#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1470template <
class TYPE>
1471template <
class... ARGS>
1473TYPE& NullableAllocatedValue<TYPE>::makeValueInplace(ARGS&&... args)
1479template <
class TYPE>
1481TYPE NullableAllocatedValue<TYPE>::valueOr(
const TYPE& otherValue)
const
1483 return has_value() ? value() : otherValue;
1486template <
class TYPE>
1488const TYPE *NullableAllocatedValue<TYPE>::valueOrNull()
const {
1489 return has_value() ? &value() : NULL;
1495template <
class LHS_TYPE,
class RHS_TYPE>
1498 const NullableAllocatedValue<RHS_TYPE>& rhs)
1501 return rhs.isNull();
1504 return rhs.isNull() ? false : lhs.value() == rhs.value();
1507template <
class LHS_TYPE,
class RHS_TYPE>
1510 const RHS_TYPE& rhs)
1512 return lhs.isNull() ? false : lhs.value() == rhs;
1515template <
class LHS_TYPE,
class RHS_TYPE>
1518 const NullableAllocatedValue<RHS_TYPE>& rhs)
1520 return rhs.isNull() ? false : lhs == rhs.value();
1523template <
class LHS_TYPE,
class RHS_TYPE>
1526 const NullableAllocatedValue<RHS_TYPE>& rhs)
1529 return !rhs.isNull();
1532 return rhs.isNull() ? true : lhs.value() != rhs.value();
1535template <
class LHS_TYPE,
class RHS_TYPE>
1538 const RHS_TYPE& rhs)
1540 return lhs.isNull() ? true : lhs.value() != rhs;
1543template <
class LHS_TYPE,
class RHS_TYPE>
1546 const NullableAllocatedValue<RHS_TYPE>& rhs)
1548 return rhs.isNull() ? true : lhs != rhs.value();
1551template <
class LHS_TYPE,
class RHS_TYPE>
1554 const NullableAllocatedValue<RHS_TYPE>& rhs)
1560 return lhs.isNull() ? true : lhs.value() < rhs.value();
1563template <
class LHS_TYPE,
class RHS_TYPE>
1566 const RHS_TYPE& rhs)
1568 return lhs.isNull() ? true : lhs.value() < rhs;
1571template <
class LHS_TYPE,
class RHS_TYPE>
1574 const NullableAllocatedValue<RHS_TYPE>& rhs)
1576 return rhs.isNull() ? false : lhs < rhs.value();
1579template <
class LHS_TYPE,
class RHS_TYPE>
1582 const NullableAllocatedValue<RHS_TYPE>& rhs)
1588 return rhs.isNull() ? false : lhs.value() <= rhs.value();
1591template <
class LHS_TYPE,
class RHS_TYPE>
1594 const RHS_TYPE& rhs)
1596 return lhs.isNull() ? true : lhs.value() <= rhs;
1599template <
class LHS_TYPE,
class RHS_TYPE>
1602 const NullableAllocatedValue<RHS_TYPE>& rhs)
1604 return rhs.isNull() ? false : lhs <= rhs.value();
1607template <
class LHS_TYPE,
class RHS_TYPE>
1610 const NullableAllocatedValue<RHS_TYPE>& rhs)
1616 return rhs.isNull() ? true : lhs.value() > rhs.value();
1619template <
class LHS_TYPE,
class RHS_TYPE>
1622 const RHS_TYPE& rhs)
1624 return lhs.isNull() ? false : lhs.value() > rhs;
1627template <
class LHS_TYPE,
class RHS_TYPE>
1630 const NullableAllocatedValue<RHS_TYPE>& rhs)
1632 return rhs.isNull() ? true : lhs > rhs.value();
1635template <
class LHS_TYPE,
class RHS_TYPE>
1638 const NullableAllocatedValue<RHS_TYPE>& rhs)
1644 return lhs.isNull() ? false : lhs.value() >= rhs.value();
1647template <
class LHS_TYPE,
class RHS_TYPE>
1650 const RHS_TYPE& rhs)
1652 return lhs.isNull() ? false : lhs.value() >= rhs;
1655template <
class LHS_TYPE,
class RHS_TYPE>
1658 const NullableAllocatedValue<RHS_TYPE>& rhs)
1660 return rhs.isNull() ? true : lhs >= rhs.value();
1663template <
class TYPE>
1666 const NullableAllocatedValue<TYPE>&
object)
1668 return object.print(stream, 0, -1);
1675template <
class TYPE>
1680 return !lhs.has_value();
1683template <
class TYPE>
1689 return !rhs.has_value();
1692template <
class TYPE>
1696 return lhs.has_value();
1699template <
class TYPE>
1705 return rhs.has_value();
1708template <
class TYPE>
1716template <
class TYPE>
1722 return rhs.has_value();
1725template <
class TYPE>
1730 return lhs.has_value();
1733template <
class TYPE>
1741template <
class TYPE>
1746 return !lhs.has_value();
1749template <
class TYPE>
1758template <
class TYPE>
1766template <
class TYPE>
1772 return !rhs.has_value();
1779template <
class LHS_TYPE,
class RHS_TYPE>
1784 if (lhs.has_value() != rhs.has_value())
1786 return lhs.has_value () ? lhs.value() == rhs.value () :
true;
1789template <
class LHS_TYPE,
class RHS_TYPE>
1792 const NullableAllocatedValue<RHS_TYPE>& rhs)
1794 if (lhs.has_value() != rhs.has_value())
1796 return lhs.has_value () ? lhs.value() == rhs.value () :
true;
1799template <
class LHS_TYPE,
class RHS_TYPE>
1804 if (lhs.has_value() != rhs.has_value())
1806 return lhs.has_value () ? lhs.value() != rhs.value () :
false;
1809template <
class LHS_TYPE,
class RHS_TYPE>
1812 const NullableAllocatedValue<RHS_TYPE>& rhs)
1814 if (lhs.has_value() != rhs.has_value())
1816 return lhs.has_value () ? lhs.value() != rhs.value () :
false;
1819template <
class LHS_TYPE,
class RHS_TYPE>
1824 if (lhs.has_value() != rhs.has_value())
1825 return rhs.has_value();
1826 return lhs.has_value () ? lhs.value() < rhs.value () :
false;
1829template <
class LHS_TYPE,
class RHS_TYPE>
1832 const NullableAllocatedValue<RHS_TYPE>& rhs)
1834 if (lhs.has_value() != rhs.has_value())
1835 return rhs.has_value();
1836 return lhs.has_value () ? lhs.value() < rhs.value () :
false;
1840template <
class LHS_TYPE,
class RHS_TYPE>
1845 if (lhs.has_value() != rhs.has_value())
1846 return lhs.has_value();
1847 return lhs.has_value () ? lhs.value() > rhs.value () :
false;
1850template <
class LHS_TYPE,
class RHS_TYPE>
1853 const NullableAllocatedValue<RHS_TYPE>& rhs)
1855 if (lhs.has_value() != rhs.has_value())
1856 return lhs.has_value();
1857 return lhs.has_value () ? lhs.value() > rhs.value () :
false;
1860template <
class LHS_TYPE,
class RHS_TYPE>
1865 if (lhs.has_value() != rhs.has_value())
1866 return rhs.has_value();
1867 return lhs.has_value () ? lhs.value() <= rhs.value () :
true;
1870template <
class LHS_TYPE,
class RHS_TYPE>
1873 const NullableAllocatedValue<RHS_TYPE>& rhs)
1875 if (lhs.has_value() != rhs.has_value())
1876 return rhs.has_value();
1877 return lhs.has_value () ? lhs.value() <= rhs.value () :
true;
1880template <
class LHS_TYPE,
class RHS_TYPE>
1885 if (lhs.has_value() != rhs.has_value())
1886 return lhs.has_value();
1887 return lhs.has_value () ? lhs.value() >= rhs.value () :
true;
1890template <
class LHS_TYPE,
class RHS_TYPE>
1893 const NullableAllocatedValue<RHS_TYPE>& rhs)
1895 if (lhs.has_value() != rhs.has_value())
1896 return lhs.has_value();
1897 return lhs.has_value () ? lhs.value() >= rhs.value () :
true;
1902template <
class HASHALG,
class TYPE>
1904 const NullableAllocatedValue<TYPE>& input)
1906 using ::BloombergLP::bslh::hashAppend;
1908 if (!input.isNull()) {
1917template <
class TYPE>
1918void bdlb::swap(NullableAllocatedValue<TYPE>& a,
1919 NullableAllocatedValue<TYPE>& b)
1921 if (a.allocator() == b.allocator()) {
1927 NullableAllocatedValue<TYPE> futureA(b, a.allocator());
1928 NullableAllocatedValue<TYPE> futureB(a, b.allocator());
#define BSLMF_NESTED_TRAIT_DECLARATION(t_TYPE, t_TRAIT)
Definition bslmf_nestedtraitdeclaration.h:231
Definition bdlb_nullableallocatedvalue_pointerbitspair.h:99
Definition bdlb_nullableallocatedvalue.h:174
const TYPE & value() const
Definition bdlb_nullableallocatedvalue.h:1445
char d_buffer[sizeof(TYPE *)]
Definition bdlb_nullableallocatedvalue.h:183
TYPE * d_pointer_p
Definition bdlb_nullableallocatedvalue.h:182
void reset()
Definition bdlb_nullableallocatedvalue.h:1104
TYPE ValueType
Definition bdlb_nullableallocatedvalue.h:249
TYPE value_or(const ANY_TYPE &default_value) const
Definition bdlb_nullableallocatedvalue.h:1396
bool has_value() const BSLS_KEYWORD_NOEXCEPT
Definition bdlb_nullableallocatedvalue.h:1349
TYPE & emplace(BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)...)
NullableAllocatedValue()
Definition bdlb_nullableallocatedvalue.h:884
bsl::allocator< char > get_allocator() const
Definition bdlb_nullableallocatedvalue.h:1341
TYPE & makeValue()
Definition bdlb_nullableallocatedvalue.h:1070
NullableAllocatedValue< TYPE > & operator=(const NullableAllocatedValue &rhs)
Definition bdlb_nullableallocatedvalue.h:987
~NullableAllocatedValue()
Destroy this object.
Definition bdlb_nullableallocatedvalue.h:966
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlb_nullableallocatedvalue.h:1020
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlb_nullableallocatedvalue.h:1428
TYPE * operator->()
Definition bdlb_nullableallocatedvalue.h:1147
BSLS_DEPRECATE_FEATURE("bdl", "NullableAllocatedValue::makeValueInplace", "Use 'emplace' instead") TYPE &makeValueInplace(ARGS &&... args)
bool isNull() const BSLS_KEYWORD_NOEXCEPT
Definition bdlb_nullableallocatedvalue.h:1356
BSLS_DEPRECATE_FEATURE("bdl", "NullableAllocatedValue::addressOr", "Use 'has_value() ? &value() : address' instead") const TYPE *addressOr(const TYPE *address) const
void swap(NullableAllocatedValue &other)
Definition bdlb_nullableallocatedvalue.h:1118
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlb_nullableallocatedvalue.h:1325
TYPE & value()
Definition bdlb_nullableallocatedvalue.h:1139
BSLS_DEPRECATE_FEATURE("bdl", "NullableAllocatedValue::valueOr", "Use 'value_or' instead") TYPE valueOr(const TYPE &otherValue) const
const TYPE * operator->() const
Definition bdlb_nullableallocatedvalue.h:1403
int maxSupportedBdexVersion() const
Definition bdlb_nullableallocatedvalue.h:1387
TYPE & operator*()
Definition bdlb_nullableallocatedvalue.h:1155
bslma::Allocator * allocator() const
Return the allocator used by this object to supply memory.
Definition bdlb_nullableallocatedvalue.h:1421
TYPE & makeValue(const TYPE &val)
Definition bdlb_nullableallocatedvalue.h:1043
const TYPE & operator*() const
Definition bdlb_nullableallocatedvalue.h:1411
Definition bslma_bslallocator.h:580
Definition bslstl_optional.h:1861
static void swap(T *a, T *b)
Definition bslalg_swaputil.h:194
Definition bslma_allocator.h:457
virtual void * allocate(size_type size)=0
Definition bslma_deallocatorproctor.h:312
void release()
Definition bslma_deallocatorproctor.h:384
void setFlag(unsigned idx)
Definition bdlb_nullableallocatedvalue_pointerbitspair.h:279
void clearFlag(unsigned idx)
Definition bdlb_nullableallocatedvalue_pointerbitspair.h:268
bool readFlag(unsigned idx) const
Definition bdlb_nullableallocatedvalue_pointerbitspair.h:258
t_TYPE * getPointer() const
Return the held pointer.
Definition bdlb_nullableallocatedvalue_pointerbitspair.h:250
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_DEPRECATE_FEATURE(UOR, FEATURE, MESSAGE)
Definition bsls_deprecatefeature.h:319
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_EXPLICIT
Definition bsls_keyword.h:641
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
void hashAppend(HASH_ALGORITHM &hashAlg, const baljsn::EncoderTestAddress &object)
Definition baljsn_encoder_testtypes.h:9236
bool isNull(const TYPE &object)
void makeValue(TYPE *object)
void reset(TYPE *object)
Reset the value of the specified object to its default value.
bsl::ostream & print(bsl::ostream &stream, const TYPE &object, int level=0, int spacesPerLevel=4)
Definition bdlb_printmethods.h:719
Definition bdlb_algorithmworkaroundutil.h:74
bool operator!=(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
bsl::ostream & operator<<(bsl::ostream &stream, const BigEndianInt16 &integer)
bool operator>=(const Guid &lhs, const Guid &rhs)
void hashAppend(HASH_ALGORITHM &hashAlgorithm, const BigEndianInt16 &object)
void swap(NullableAllocatedValue< TYPE > &a, NullableAllocatedValue< TYPE > &b)
bool operator<=(const Guid &lhs, const Guid &rhs)
bool operator>(const Guid &lhs, const Guid &rhs)
bool operator<(const Guid &lhs, const Guid &rhs)
bool operator==(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
Definition bdlb_printmethods.h:283
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
STREAM & bdexStreamIn(STREAM &stream, VALUE_TYPE &variable)
Definition bslx_instreamfunctions.h:1247
STREAM & bdexStreamOut(STREAM &stream, const TYPE &value)
Definition bslx_outstreamfunctions.h:992
int maxSupportedBdexVersion(const TYPE *, int versionSelector)
Definition bslx_versionfunctions.h:519
Definition bdlb_printmethods.h:306
Definition bslstl_optional.h:467
static void defaultConstruct(TARGET_TYPE *address, bslma::Allocator *allocator)
Definition bslalg_scalarprimitives.h:1559
static void copyConstruct(TARGET_TYPE *address, const TARGET_TYPE &original, bslma::Allocator *allocator)
Definition bslalg_scalarprimitives.h:1599
Definition bslmf_isbitwisemoveable.h:718
Definition bsls_alignmentfromtype.h:376