8#ifndef INCLUDED_BDLD_DATUMBINARYREF
9#define INCLUDED_BDLD_DATUMBINARYREF
131#include <bdlscm_version.h>
142#include <bsl_algorithm.h>
143#include <bsl_cstring.h>
144#include <bsl_iosfwd.h>
168 const void *d_data_p;
199 const void *
data()
const;
218 bsl::ostream&
print(bsl::ostream& stream,
220 int spacesPerLevel = 4)
const;
311 return (lhs.size() == rhs.size()) &&
312 (lhs.size() == 0 || !bsl::memcmp(lhs.data(), rhs.data(), rhs.size()));
323bool bdld::operator<(
const DatumBinaryRef& lhs,
const DatumBinaryRef& rhs)
325 const size_t minSize = bsl::min(
lhs.size(),
rhs.size());
326 const int cmp = minSize
327 ? bsl::memcmp(
lhs.data(),
rhs.data(), minSize)
330 return cmp == 0 ?
lhs.size() <
rhs.size() : cmp < 0;
334bool bdld::operator>(
const DatumBinaryRef& lhs,
const DatumBinaryRef& rhs)
336 const size_t minSize = bsl::min(
lhs.size(),
rhs.size());
337 const int cmp = minSize
338 ? bsl::memcmp(
lhs.data(),
rhs.data(), minSize)
341 return cmp == 0 ?
lhs.size() >
rhs.size() : cmp > 0;
357bsl::ostream&
bdld::operator<<(bsl::ostream& stream,
const DatumBinaryRef& rhs)
359 return rhs.print(stream, 0 , -1);
Definition bdld_datumbinaryref.h:157
bsls::Types::size_type SizeType
Definition bdld_datumbinaryref.h:164
const void * data() const
Return the pointer to the non-modifiable binary data.
Definition bdld_datumbinaryref.h:294
BSLMF_NESTED_TRAIT_DECLARATION(DatumBinaryRef, bdlb::HasPrintMethod)
~DatumBinaryRef()=default
DatumBinaryRef(const DatumBinaryRef &origin)=default
DatumBinaryRef & operator=(const DatumBinaryRef &rhs)=default
DatumBinaryRef()
Create a DatumBinaryRef object having zero data pointer and size.
Definition bdld_datumbinaryref.h:278
SizeType size() const
Return the size of the binary data.
Definition bdld_datumbinaryref.h:300
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
BSLMF_NESTED_TRAIT_DECLARATION(DatumBinaryRef, bsl::is_trivially_copyable)
#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 DatumBinaryRef &lhs, const DatumBinaryRef &rhs)
bool operator<(const DatumBinaryRef &lhs, const DatumBinaryRef &rhs)
bool operator>=(const DatumBinaryRef &lhs, const DatumBinaryRef &rhs)
bool operator==(const Datum &lhs, const Datum &rhs)
bool operator>(const DatumBinaryRef &lhs, const DatumBinaryRef &rhs)
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 bdlb_printmethods.h:306
Definition bslmf_istriviallycopyable.h:324
std::size_t size_type
Definition bsls_types.h:126