BloombergLP::bsls::AlignmentUtil

This struct provides a namespace for a suite of compile-time constants, types, and pure procedures that provide platform-dependent alignment information.

Synopsis

Declared in <bsls_alignmentutil.h>

struct AlignmentUtil;

Type Aliases

NameDescription
MaxAlignedType Alias for a primitive type that has the most stringent alignment requirement.

Enums

NameDescription
Unnamed enum Maximum alignment supported on the current platform.

Static Member Functions

NameDescription
calculateAlignmentFromSize Return the natural alignment for a memory block of the specified size -- i.e., the largest power of 2 that evenly divides size, up to a maximum of BSLS_MAX_ALIGNMENT. It is guaranteed that this alignment will be sufficient for any object having a footprint of size bytes on the current platform. The behavior is undefined unless 1 <= size and size <= INT_MAX. Note that, depending on the machine architecture and compiler setting, the returned alignment value may be more restrictive than required for a particular object for two reasons: 1. The object may be composed entirely of elements, such as char, that have minimal alignment restrictions, and 2. The architecture and our compiler settings may result in unexpectedly lenient alignment requirements. Also note that aligning on a more restrictive boundary may improve performance.
calculateAlignmentOffset Return the minimum non-negative integer that, when added to the numerical value of the specified address, yields the specified alignment. The behavior is undefined unless alignment is a positive, integral power of 2.
defaultAlignmentOfAlignedStorage Return the default value of the alignment argument for std::aligned_storage when the size argument is the specified t_SIZE. This function is an implementation detail of BDE and should not be used elsewhere.
is2ByteAligned Return true if the specified address is aligned on a 2-byte boundary (i.e., the numerical value of address is evenly divisible by 2), and false otherwise.
is4ByteAligned Return true if the specified address is aligned on a 4-byte boundary (i.e., the numerical value of address is evenly divisible by 4), and false otherwise.
is8ByteAligned Return true if the specified address is aligned on an 8-byte boundary (i.e., the numerical value of address is evenly divisible by 8), and false otherwise.
isAligned Return true if the specified address is aligned on the specified alignment boundary (i.e., the numerical value of address is evenly divisible by alignment), and false otherwise. The behavior is undefined unless alignment is a power of 2. Note that this function will true for a null address, regardless of alignment and for a 0 alignment regardless of address.
pointerAlignment Return the alignment of the specified address. Returns 0 if address is 0. Note that the returned value might be larger than BSLS_MAX_ALIGNMENT.
roundUpToMaximalAlignment Return the specified size (in bytes) rounded up to the smallest integral multiple of the maximum alignment. The behavior is undefined unless 0 <= size and size satisfies: ` size <= std::numeric_limits<std::size_t>::max() - BSLS_MAX_ALIGNMENT + 1 `

Friends

NameDescription
BloombergLP::bsls::AlignmentUtil::MaxAlignedUnion