Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cGridArray.h
Go to the documentation of this file.
1 //
5 
6 #ifndef _INC_cGridArray_H
7 #define _INC_cGridArray_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
15 
16 namespace GrayLib
17 {
18  template<class TYPE, class TYPE_ARG>
19  class cGridArray
20  {
24 
25  private:
26  int m_cx; // cx, cy
27  int m_cy; // cx, cy
29 
30  public:
31  void SetSize( int cx, int cy )
32  {
33  // Destructive resize.
34  ASSERT(cx>=0);
35  ASSERT(cy>=0);
36  m_cx = cx;
37  m_cy = cy;
38  m_a.SetSize( cx*cy );
39  }
40  void Scroll( int dx, int dy )
41  {
44  ASSERT(0); // TODO: cGridArray Scroll
45  }
46  TYPE_ARG GetAt( int x, int y )
47  {
48  ASSERT( IS_INDEX_GOOD(x,m_cx));
49  ASSERT( IS_INDEX_GOOD(y,m_cy));
50  return m_a.GetAt((y*m_cx) + x );
51  }
52  void SetAt( int x, int y, TYPE_ARG arg )
53  {
54  ASSERT( IS_INDEX_GOOD(x,m_cx));
55  ASSERT( IS_INDEX_GOOD(y,m_cy));
56  m_a.SetAt((y*m_cx) + x, arg );
57  }
58  };
59 };
60 
61 #endif // _INC_cGridArray_H
#define IS_INDEX_GOOD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:35
#define ASSERT(exp)
Definition: cDebugAssert.h:87
Definition: cGridArray.h:20
void Scroll(int dx, int dy)
Definition: cGridArray.h:40
void SetAt(int x, int y, TYPE_ARG arg)
Definition: cGridArray.h:52
void SetSize(int cx, int cy)
Definition: cGridArray.h:31
TYPE_ARG GetAt(int x, int y)
Definition: cGridArray.h:46
const TYPE & GetAt(ITERATE_t nIndex) const
Definition: cArray.h:162
void SetAt(ITERATE_t nIndex, ARG_TYPE newElement)
Definition: cArray.h:173
void SetSize(ITERATE_t nNewSize)
Definition: cArray.h:248
Definition: cMesh.h:22