00001 /* 00002 Copyright 2005-2009 Intel Corporation. All Rights Reserved. 00003 00004 The source code contained or described herein and all documents related 00005 to the source code ("Material") are owned by Intel Corporation or its 00006 suppliers or licensors. Title to the Material remains with Intel 00007 Corporation or its suppliers and licensors. The Material is protected 00008 by worldwide copyright laws and treaty provisions. No part of the 00009 Material may be used, copied, reproduced, modified, published, uploaded, 00010 posted, transmitted, distributed, or disclosed in any way without 00011 Intel's prior express written permission. 00012 00013 No license under any patent, copyright, trade secret or other 00014 intellectual property right is granted to or conferred upon you by 00015 disclosure or delivery of the Materials, either expressly, by 00016 implication, inducement, estoppel or otherwise. Any license under such 00017 intellectual property rights must be express and approved by Intel in 00018 writing. 00019 */ 00020 00021 #ifndef __TBB_aligned_space_H 00022 #define __TBB_aligned_space_H 00023 00024 #include "tbb_stddef.h" 00025 #include "tbb_machine.h" 00026 00027 namespace tbb { 00028 00030 00032 template<typename T,size_t N> 00033 class aligned_space { 00034 private: 00035 typedef __TBB_TypeWithAlignmentAtLeastAsStrict(T) element_type; 00036 element_type array[(sizeof(T)*N+sizeof(element_type)-1)/sizeof(element_type)]; 00037 public: 00039 T* begin() {return reinterpret_cast<T*>(this);} 00040 00042 T* end() {return begin()+N;} 00043 }; 00044 00045 } // namespace tbb 00046 00047 #endif /* __TBB_aligned_space_H */