|
BDE 4.14.0 Production release
|
#include <bsls_alignmentutil.h>
Public Types | |
| enum | { BSLS_MAX_ALIGNMENT = AlignmentFromType<MaxAlignedUnion>::VALUE } |
| typedef AlignmentToType< BSLS_MAX_ALIGNMENT >::Type | MaxAlignedType |
Static Public Member Functions | |
| static int | calculateAlignmentFromSize (std::size_t size) |
| static int | calculateAlignmentOffset (const void *address, int alignment) |
| static bool | is2ByteAligned (const void *address) |
| static bool | is4ByteAligned (const void *address) |
| static bool | is8ByteAligned (const void *address) |
| static std::size_t | roundUpToMaximalAlignment (std::size_t size) |
Friends | |
| union | MaxAlignedUnion |
This struct provides a namespace for a suite of compile-time constants, types, and pure procedures that provide platform-dependent alignment information.
| typedef AlignmentToType<BSLS_MAX_ALIGNMENT>::Type bsls::AlignmentUtil::MaxAlignedType |
Alias for a primitive type that has the most stringent alignment requirement.
|
inlinestatic |
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:
char, that have minimal alignment restrictions, and
|
inlinestatic |
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.
|
inlinestatic |
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.
|
inlinestatic |
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.
|
inlinestatic |
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.
|
inlinestatic |
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:
|
friend |