8#ifndef INCLUDED_BSLS_ALIGNMENTIMP
9#define INCLUDED_BSLS_ALIGNMENTIMP
253#include <bsls_platform.h>
298 struct AlignmentCalc {
312 AlignmentCalc(
const AlignmentCalc&);
321 VALUE =
sizeof(AlignmentCalc) -
sizeof(TYPE)
328#if defined(BSLS_PLATFORM_CPU_POWERPC) && defined(BSLS_PLATFORM_OS_LINUX)
349 typedef AlignmentImpTag<VALUE>
Tag;
354#if defined(BSLS_PLATFORM_CPU_X86) && !defined(BSLS_PLATFORM_CMP_MSVC)
360struct AlignmentImp8ByteAlignedType {
365 long long d_dummy __attribute__((__aligned__(8)));
372struct AlignmentImp16ByteAlignedType {
377 long long d_dummy __attribute__((__aligned__(16)));
389template <
int PRIORITY>
410 typedef void (*Type)();
453#if defined(BSLS_PLATFORM_CPU_X86) && !defined(BSLS_PLATFORM_CMP_MSVC)
456 typedef AlignmentImp8ByteAlignedType Type;
459struct AlignmentImpPriorityToType<14> {
460 typedef AlignmentImp16ByteAlignedType Type;
507# define BSLS_ALIGNMENTIMP_MATCH_FUNC(T, P) \
508 bsls::AlignmentImpTag<P> match( \
509 bsls::AlignmentImpCalc<T>::Tag, \
510 bsls::AlignmentImpTag<static_cast<int>(sizeof(T))>, \
511 bsls::AlignmentImp_Priority<P>)
530#if defined(BSLS_PLATFORM_CPU_X86) && !defined(BSLS_PLATFORM_CMP_MSVC)
543#undef BSLS_ALIGNMENTIMP_MATCH_FUNC
#define BSLS_ALIGNMENTIMP_MATCH_FUNC(T, P)
Definition bsls_alignmentimp.h:507
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlt_iso8601util.h:707
Definition bsls_alignmentimp.h:283
AlignmentImpTag< VALUE > Tag
Alias for the unique type for each alignment value.
Definition bsls_alignmentimp.h:325
@ VALUE
Definition bsls_alignmentimp.h:321
Definition bsls_alignmentimp.h:505
AlignmentImp_Priority< 12 > MaxPriority
Definition bsls_alignmentimp.h:537
static BSLS_ALIGNMENTIMP_MATCH_FUNC(long long, 8)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(int, 10)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(wchar_t, 6)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(float, 3)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(long, 9)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(long double, 1)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(short, 11)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(double, 2)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(char, 12)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(bool, 7)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(void(*)(), 4)
static BSLS_ALIGNMENTIMP_MATCH_FUNC(void *, 5)
int Type
Definition bsls_alignmentimp.h:440
short Type
Definition bsls_alignmentimp.h:445
char Type
Definition bsls_alignmentimp.h:450
long double Type
Definition bsls_alignmentimp.h:395
double Type
Definition bsls_alignmentimp.h:400
float Type
Definition bsls_alignmentimp.h:405
void * Type
Definition bsls_alignmentimp.h:415
wchar_t Type
Definition bsls_alignmentimp.h:420
bool Type
Definition bsls_alignmentimp.h:425
long long Type
Definition bsls_alignmentimp.h:430
long Type
Definition bsls_alignmentimp.h:435
Definition bsls_alignmentimp.h:390
Definition bsls_alignmentimp.h:268
char d_dummy[SIZE]
Definition bsls_alignmentimp.h:271
Definition bsls_alignmentimp.h:475