8#ifndef INCLUDED_BDLMA_BUFFERMANAGER
9#define INCLUDED_BDLMA_BUFFERMANAGER
284#include <bdlscm_version.h>
324 unsigned char d_alignmentAndMask;
327 unsigned char d_alignmentOrMask;
385 template <
class TYPE>
392 template <
class TYPE>
499, d_alignmentAndMask( strategy !=
bsls::Alignment::BSLS_MAXIMUM
500 ?
bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT - 1
502, d_alignmentOrMask( strategy !=
bsls::Alignment::BSLS_BYTEALIGNED
503 ?
bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT
509BufferManager::BufferManager(
char *buffer,
513, d_bufferSize(bufferSize)
515, d_alignmentAndMask( strategy !=
bsls::Alignment::BSLS_MAXIMUM
516 ?
bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT - 1
518, d_alignmentOrMask( strategy !=
bsls::Alignment::BSLS_BYTEALIGNED
519 ?
bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT
532 || (0 == d_buffer_p && 0 == d_bufferSize));
543 char *address = d_buffer_p + d_cursor;
552 return address + offset;
567 char *address = d_buffer_p + d_cursor;
571 d_cursor = d_cursor + offset + size;
572 return address + offset;
580#ifndef BSLS_PLATFORM_CMP_SUN
583 const_cast<TYPE *
>(object)->~TYPE();
602 char *oldBuffer = d_buffer_p;
603 d_buffer_p = newBuffer;
604 d_bufferSize = newBufferSize;
629 : 1 == d_alignmentOrMask
660 return static_cast<int>(
674 char *address = d_buffer_p + d_cursor;
678 return d_cursor + offset + size <= d_bufferSize;
Definition bdlma_buffermanager.h:312
char * replaceBuffer(char *newBuffer, bsls::Types::size_type newBufferSize)
Definition bdlma_buffermanager.h:596
bsls::Types::size_type truncate(void *address, bsls::Types::size_type originalSize, bsls::Types::size_type newSize)
void reset()
Definition bdlma_buffermanager.h:617
~BufferManager()
Destroy this buffer manager.
Definition bdlma_buffermanager.h:527
void * allocateRaw(bsls::Types::size_type size)
Definition bdlma_buffermanager.h:559
bool hasSufficientCapacity(bsls::Types::size_type size) const
Definition bdlma_buffermanager.h:666
int calculateAlignmentOffsetFromSize(const void *address, bsls::Types::size_type size) const
Definition bdlma_buffermanager.h:647
void deleteObject(const TYPE *object)
Definition bdlma_buffermanager.h:590
bsls::Types::size_type bufferSize() const
Definition bdlma_buffermanager.h:641
void release()
Definition bdlma_buffermanager.h:611
bsls::Alignment::Strategy alignmentStrategy() const
Definition bdlma_buffermanager.h:626
void deleteObjectRaw(const TYPE *object)
Definition bdlma_buffermanager.h:577
bsls::Types::size_type expand(void *address, bsls::Types::size_type size)
char * buffer() const
Definition bdlma_buffermanager.h:635
void * allocate(bsls::Types::size_type size)
Definition bdlma_buffermanager.h:537
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlma_alignedallocator.h:278
Definition bdlt_iso8601util.h:707
Strategy
Types of alignment strategy.
Definition bsls_alignment.h:241
@ BSLS_NATURAL
Definition bsls_alignment.h:248
@ BSLS_MAXIMUM
Definition bsls_alignment.h:244
@ BSLS_BYTEALIGNED
Definition bsls_alignment.h:252
std::size_t size_type
Definition bsls_types.h:126
std::ptrdiff_t IntPtr
Definition bsls_types.h:132