8#ifndef INCLUDED_BDLD_MANAGEDDATUM
9#define INCLUDED_BDLD_MANAGEDDATUM
242#include <bdlscm_version.h>
257#include <bsl_algorithm.h>
258#include <bsl_iosfwd.h>
414 bsl::ostream&
print(bsl::ostream& stream,
416 int spacesPerLevel = 4)
const;
465: d_data(
Datum::createNull())
472: d_data(
Datum::createNull())
473, d_allocator(allocator)
480, d_allocator(allocator)
487: d_allocator(allocator)
489 d_data = original.d_data.
clone(d_allocator);
494: d_data(
bslmf::MovableRefUtil::access(original).d_data)
495, d_allocator(
bslmf::MovableRefUtil::access(original).d_allocator)
503: d_allocator(allocator)
508 d_data = originalAsLvalue.d_data;
512 d_data = originalAsLvalue.d_data.
clone(d_allocator);
536 if (&rhsAsLvalue ==
this) {
541 if (d_allocator == rhsAsLvalue.
allocator()) {
543 d_data = rhsAsLvalue.d_data;
556 if (&obj != &d_data) {
588 swap(d_data, other.d_data);
627 int spacesPerLevel)
const
629 return d_data.
print(stream, level, spacesPerLevel);
638 return (lhs.datum() == rhs.datum());
644 return (
lhs.datum() !=
rhs.datum());
648bsl::ostream&
bdld::operator<<(bsl::ostream& stream,
const ManagedDatum& rhs)
650 return (stream <<
rhs.datum());
655void bdld::swap(ManagedDatum& a, ManagedDatum& b)
657 if (a.get_allocator() == b.get_allocator()) {
661 ManagedDatum tempA(a, b.get_allocator());
662 ManagedDatum tempB(b, a.get_allocator());
Definition bdld_datum.h:799
static Datum createNull()
Return, by value, a datum having no value.
Definition bdld_datum.h:4049
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
static void destroy(const Datum &value, const AllocatorType &allocator)
Datum clone(const AllocatorType &allocator) const
Definition bdld_manageddatum.h:271
~ManagedDatum()
Definition bdld_manageddatum.h:517
void swap(ManagedDatum &other)
Definition bdld_manageddatum.h:583
ManagedDatum()
Definition bdld_manageddatum.h:464
void adopt(const Datum &obj)
Definition bdld_manageddatum.h:554
bslma::Allocator * allocator() const
Definition bdld_manageddatum.h:613
BSLMF_NESTED_TRAIT_DECLARATION(ManagedDatum, bslmf::IsBitwiseMoveable)
'ManagedDatum' objects are allocator-aware and bitwise movable.
const Datum * operator->() const
Definition bdld_manageddatum.h:593
const Datum & datum() const
Definition bdld_manageddatum.h:605
void makeNull()
Definition bdld_manageddatum.h:569
bsl::allocator allocator_type
Definition bdld_manageddatum.h:275
Datum release()
Definition bdld_manageddatum.h:575
void clone(const Datum &value)
Definition bdld_manageddatum.h:562
allocator_type get_allocator() const
Definition bdld_manageddatum.h:619
const Datum & operator*() const
Definition bdld_manageddatum.h:599
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdld_manageddatum.h:625
ManagedDatum & operator=(const ManagedDatum &rhs)
Definition bdld_manageddatum.h:524
Definition bslma_bslallocator.h:588
BloombergLP::bslma::Allocator * mechanism() const
Definition bslma_bslallocator.h:1146
Definition bslma_allocator.h:545
Definition bslmf_movableref.h:752
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdld_datum.h:740
bsl::ostream & operator<<(bsl::ostream &stream, const Datum &rhs)
bool operator==(const Datum &lhs, const Datum &rhs)
void swap(ManagedDatum &a, ManagedDatum &b)
bool operator!=(const Datum &lhs, const Datum &rhs)
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
ALLOCATOR & lhs
Definition bslstl_string.h:3917
Definition bdlbb_blob.h:579
Definition bslmf_isbitwisemoveable.h:718
static t_TYPE & access(t_TYPE &ref) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1039