BVB Source Codes

CRYENGINE Show Array2d.h Source code

Return Download CRYENGINE: download Array2d.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef _ARRAY2D_H_
  4. #define _ARRAY2D_H_
  5.  
  6. // Dynamic replacement for static 2d array
  7. template<class T> struct Array2d
  8. {
  9.         Array2d()
  10.         {
  11.                 m_nSize = 0;
  12.                 m_pData = 0;
  13.         }
  14.  
  15.         void GetMemoryUsage(ICrySizer* pSizer) const
  16.         {
  17.                 pSizer->AddObject(m_pData, m_nSize * m_nSize * sizeof(T));
  18.         }
  19.  
  20.         int  GetSize()     { return m_nSize; }
  21.         int  GetDataSize() { return m_nSize * m_nSize * sizeof(T); }
  22.  
  23.         T*   GetData()     { return m_pData; }
  24.  
  25.         T*   GetDataEnd()  { return &m_pData[m_nSize * m_nSize]; }
  26.  
  27.         void SetData(T* pData, int nSize)
  28.         {
  29.                 Allocate(nSize);
  30.                 memcpy(m_pData, pData, nSize * nSize * sizeof(T));
  31.         }
  32.  
  33.         void Allocate(int nSize)
  34.         {
  35.                 if (m_nSize == nSize)
  36.                         return;
  37.  
  38.                 delete[] m_pData;
  39.  
  40.                 m_nSize = nSize;
  41.                 m_pData = new T[nSize * nSize];
  42.                 memset(m_pData, 0, nSize * nSize * sizeof(T));
  43.         }
  44.  
  45.         ~Array2d()
  46.         {
  47.                 delete[] m_pData;
  48.         }
  49.  
  50.         void Reset()
  51.         {
  52.                 delete[] m_pData;
  53.                 m_pData = 0;
  54.                 m_nSize = 0;
  55.         }
  56.  
  57.         T*  m_pData;
  58.         int m_nSize;
  59.  
  60.         T* operator[](const int& nPos) const
  61.         {
  62.                 assert(nPos >= 0 && nPos < m_nSize);
  63.                 return &m_pData[nPos * m_nSize];
  64.         }
  65.  
  66.         Array2d& operator=(const Array2d& other)
  67.         {
  68.                 Allocate(other.m_nSize);
  69.                 memcpy(m_pData, other.m_pData, m_nSize * m_nSize * sizeof(T));
  70.                 return *this;
  71.         }
  72. };
  73.  
  74. #endif // _ARRAY2D_H_
  75.  
downloadArray2d.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top