14 #ifndef WPIUTIL_WPI_ALIGNOF_H
15 #define WPIUTIL_WPI_ALIGNOF_H
17 #include "wpi/Compiler.h"
35 template<std::
size_t Alignment, std::
size_t Size>
37 LLVM_ALIGNAS(Alignment)
char buffer[Size];
43 template<std::
size_t Alignment, std::
size_t Size>
54 template<std::
size_t Size>
62 template<std::
size_t Size>
63 struct AlignedCharArray<2, Size> {
70 template<std::
size_t Size>
71 struct AlignedCharArray<4, Size> {
78 template<std::
size_t Size>
79 struct AlignedCharArray<8, Size> {
90 #define LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(x) \
91 template<std::size_t Size> \
92 struct AlignedCharArray<x, Size> { \
93 __declspec(align(x)) char buffer[Size]; \
96 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(16)
97 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(32)
98 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(64)
99 LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(128)
101 #undef LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT
106 template <
typename T1,
107 typename T2 = char,
typename T3 = char,
typename T4 = char,
108 typename T5 = char,
typename T6 = char,
typename T7 = char,
109 typename T8 = char,
typename T9 = char,
typename T10 =
char>
111 T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7; T8 t8; T9 t9; T10 t10;
116 template <
typename T1,
117 typename T2 = char,
typename T3 = char,
typename T4 = char,
118 typename T5 = char,
typename T6 = char,
typename T7 = char,
119 typename T8 = char,
typename T9 = char,
typename T10 =
char>
121 char arr1[
sizeof(T1)], arr2[
sizeof(T2)], arr3[
sizeof(T3)], arr4[
sizeof(T4)],
122 arr5[
sizeof(T5)], arr6[
sizeof(T6)], arr7[
sizeof(T7)], arr8[
sizeof(T8)],
123 arr9[
sizeof(T9)], arr10[
sizeof(T10)];
134 template <
typename T1,
135 typename T2 = char,
typename T3 = char,
typename T4 = char,
136 typename T5 = char,
typename T6 = char,
typename T7 = char,
137 typename T8 = char,
typename T9 = char,
typename T10 =
char>
139 alignof(wpi::detail::AlignerImpl<T1, T2, T3, T4, T5,
140 T6, T7, T8, T9, T10>),
141 sizeof(::wpi::detail::SizerImpl<T1, T2, T3, T4, T5,
142 T6, T7, T8, T9, T10>)> {
146 #endif // LLVM_SUPPORT_ALIGNOF_H
WPILib C++ utilities (wpiutil) namespace.
Definition: SmallString.h:21
Definition: AlignOf.h:120
Helper for building an aligned character array type.
Definition: AlignOf.h:36
This union template exposes a suitably aligned and sized character array member which can hold elemen...
Definition: AlignOf.h:138
Definition: AlignOf.h:110