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 |