[llvm-commits] [PATCH] Increase the number of parameters for AlignedCharArrayUnion.
Manuel Klimek
klimek at google.com
Wed Jan 9 02:30:01 PST 2013
Updated to new file (patch was lying around a while) and fixed review comments.
Hi chandlerc,
http://llvm-reviews.chandlerc.com/D193
CHANGE SINCE LAST DIFF
http://llvm-reviews.chandlerc.com/D193?vs=475&id=640#toc
Files:
include/llvm/Support/AlignOf.h
Index: include/llvm/Support/AlignOf.h
===================================================================
--- include/llvm/Support/AlignOf.h
+++ include/llvm/Support/AlignOf.h
@@ -169,33 +169,36 @@
namespace detail {
template <typename T1,
- typename T2 = char, typename T3 = char, typename T4 = char>
+ typename T2 = char, typename T3 = char, typename T4 = char,
+ typename T5 = char, typename T6 = char, typename T7 = char>
class AlignerImpl {
- T1 t1; T2 t2; T3 t3; T4 t4;
+ T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7;
AlignerImpl(); // Never defined or instantiated.
};
template <typename T1,
- typename T2 = char, typename T3 = char, typename T4 = char>
+ typename T2 = char, typename T3 = char, typename T4 = char,
+ typename T5 = char, typename T6 = char, typename T7 = char>
union SizerImpl {
- char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)];
+ char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)],
+ arr5[sizeof(T5)], arr6[sizeof(T6)], arr7[sizeof(T7)];
};
} // end namespace detail
/// \brief This union template exposes a suitably aligned and sized character
/// array member which can hold elements of any of up to four types.
///
/// These types may be arrays, structs, or any other types. The goal is to
/// expose a char array buffer member which can be used as suitable storage for
-/// a placement new of any of these types. Support for more than four types can
+/// a placement new of any of these types. Support for more than seven types can
/// be added at the cost of more boiler plate.
template <typename T1,
- typename T2 = char, typename T3 = char, typename T4 = char>
-struct AlignedCharArrayUnion :
- llvm::AlignedCharArray<AlignOf<detail::AlignerImpl<T1, T2, T3, T4> >
- ::Alignment,
- sizeof(detail::SizerImpl<T1, T2, T3, T4>)> {
+ typename T2 = char, typename T3 = char, typename T4 = char,
+ typename T5 = char, typename T6 = char, typename T7 = char>
+struct AlignedCharArrayUnion : llvm::AlignedCharArray<
+ AlignOf<detail::AlignerImpl<T1, T2, T3, T4, T5, T6, T7> >::Alignment,
+ sizeof(detail::SizerImpl<T1, T2, T3, T4, T5, T6, T7>)> {
};
} // end namespace llvm
#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D193.2.patch
Type: text/x-patch
Size: 2362 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130109/cd46d9cc/attachment.bin>
More information about the llvm-commits
mailing list