All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ArrayAllocator.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include <memory>
7 
8 namespace Eegeo
9 {
10  namespace Helpers
11  {
12  template<typename T, size_t maxElements>
13  class ArrayAllocator : public std::allocator<T>
14  {
15  public:
16  typedef typename std::allocator<T>::pointer pointer;
17  typedef typename std::allocator<T>::size_type size_type;
18 
20  { }
21 
22  template <typename U>
24 
25  pointer allocate(size_type allocElements, void* hint = 0)
26  {
27  if (allocElements > maxElements)
28  {
29  Eegeo_ASSERT(false);
30  return NULL;
31  }
32  return reinterpret_cast<T*>(m_buffer);
33  }
34 
35  void deallocate(pointer p, size_type n) {}
36 
37  template<typename TOther>
39  private:
40  char m_buffer[sizeof( T[maxElements]) ];
41  };
42  }
43 }