15 #ifndef DETECTORGRAPH_INCLUDE_SEQUENCECONTAINER_LITE_HPP_ 16 #define DETECTORGRAPH_INCLUDE_SEQUENCECONTAINER_LITE_HPP_ 28 template <
typename T,
unsigned N>
31 #if defined(BUILD_FEATURE_DETECTORGRAPH_CONFIG_STATIC_ASSERTS) 32 static_assert(
sizeof(T) %
sizeof(uint32_t) == 0,
"T must be uint32_t aligned");
33 static_assert(std::is_copy_constructible<T>::value,
"Generic SequenceContainer copy-constructs T");
49 uint8_t* storagePtr = &(mStorage[mNumElements *
sizeof(T)]);
50 T* newElement =
new(storagePtr) T(v);
58 return reinterpret_cast<T(&)[N]
>(mStorage);
63 return reinterpret_cast<const T(&)[N]
>(mStorage);
89 for (
unsigned idx = 0; idx < mNumElements; ++idx)
98 return Items()[mNumElements-1];
107 const_iterator
end()
const {
return &(
Items()[mNumElements]); }
109 iterator
end() {
return &(
Items()[mNumElements]); }
113 uint8_t mStorage[N *
sizeof(T)];
114 unsigned mNumElements;
150 #endif // DETECTORGRAPH_INCLUDE_SEQUENCECONTAINER_LITE_HPP_
T & operator[](unsigned idx)
const T(& Items() const)[N]
const size_t size() const
void push_back(const T &v)
const_iterator begin() const
const_iterator end() const
#define DG_ASSERT(condition)