[#BloombergLP-bdlbb-BlobUtil-getContiguousRangeOrCopy] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlbb.adoc[bdlbb]::xref:BloombergLP/bdlbb/BlobUtil.adoc[BlobUtil]::getContiguousRangeOrCopy :relfileprefix: ../../../ :mrdocs: Return a contiguous view of blob data, copying into a buffer if needed. == Synopsis Declared in `<bdlbb_blobutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static char* getContiguousRangeOrCopy( char* dstBuffer, xref:BloombergLP/bdlbb/Blob.adoc[Blob] const& srcBlob, int position, int length, int alignment = 1); ---- == Description Return the address of the byte at the specified `position` in the specified `srcBlob`, if that address is aligned to the optionally specified `alignment` and the specified `length` bytes are stored contiguously; otherwise, _copy_ `length` bytes to the specified buffer `dstBuffer`, and return `dstBuffer`. If alignment is not specified, none is enforced. (An address is aligned to A if, when converted to an integral value `a`, `a & (A ‐ 1)` is 0.) The behavior of this function is undefined unless `0 < length`, `0 <= position`, `alignment` is a power of two, `dstBuffer` is aligned as required, `dstBuffer` has room for `length` bytes, and `position <= srcBlob.totalSize() ‐ length`. == Return Value address of the contiguous range in `srcBlob`, or `dstBuffer` if a copy was required == Parameters [cols="1,4"] |=== | Name| Description | *dstBuffer* | fallback contiguous buffer used when a copy is needed | *srcBlob* | source blob | *position* | starting byte offset in `srcBlob` | *length* | number of bytes required contiguously | *alignment* | required alignment of the returned address |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#