Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Arrays.h

Go to the documentation of this file.
00001 
00002 #ifndef __ARRAYS_H
00003 #define __ARRAYS_H
00004 
00005 #include <assert.h>
00006 
00055 template <class T> class Array2 {
00056 private:
00058     T* m_data;
00060     int m_width, m_height;
00068     bool m_managed;
00069 
00070 public:
00072     Array2(int width, int height) {
00073         assert(width > 0 && height > 0);
00074 
00075         m_width = width;
00076         m_height = height;
00077 
00078         m_data = new T[m_width * m_height];
00079 
00080         m_managed = true;
00081     }
00082 
00084     Array2(int width, int height, T* data) {
00085         assert(width > 0 && height > 0 && data != 0);
00086 
00087         m_width = width;
00088         m_height = height;
00089 
00090         m_data = data;
00091 
00092         m_managed = false;
00093     }
00094 
00096     ~Array2() {
00097         if (m_managed) {
00098             delete [] m_data;
00099         }
00100     }
00101 
00103     inline T& operator () (int col, int row) {
00104         assert(row >= 0 && row < m_height);
00105         assert(col >= 0 && col < m_width);
00106         return m_data[row * m_width + col];
00107     }
00108 
00110     inline const T& operator() (int col, int row) const {
00111         assert(row >= 0 && row < m_height);
00112         assert(col >= 0 && col < m_width);
00113         return m_data[row * m_width + col];
00114     }
00115 
00117     int getWidth() const {
00118         return m_width;
00119     }
00120 
00122     int getHeight() const {
00123         return m_height;
00124     }
00125 
00127     const T* getData() const {
00128         return m_data;
00129     }
00130 };
00131 
00133 template <class T> class Array3 {
00134 private:
00136     T* m_data;
00138     int m_width, m_height, m_depth;
00146     bool m_managed;
00147 
00148 public:
00150     Array3(int width, int height, int depth) {
00151         assert(width > 0 && height > 0 && depth > 0);
00152 
00153         m_width = width;
00154         m_height = height;
00155         m_depth = depth;
00156 
00157         m_data = new T[m_width * m_height * m_depth];
00158 
00159         m_managed = true;
00160     }
00161 
00163     Array3(int width, int height, int depth, T* data) {
00164         assert(width > 0 && height > 0 && depth > 0 && data != 0);
00165 
00166         m_width = width;
00167         m_height = height;
00168         m_depth = depth;
00169 
00170         m_data = data;
00171 
00172         m_managed = false;
00173     }
00174 
00176     ~Array3() {
00177         if (m_managed) {
00178             delete [] m_data;
00179         }
00180     }
00181 
00183     inline T& operator () (int col, int row, int depth) {
00184         assert(row >= 0 && row < m_height);
00185         assert(col >= 0 && col < m_width);
00186         assert(depth >= 0 && depth < m_depth);
00187         return m_data[(row * m_width + col) * m_depth + depth];
00188     }
00189 
00191     inline const T& operator() (int col, int row, int depth) const {
00192         assert(row >= 0 && row < m_height);
00193         assert(col >= 0 && col < m_width);
00194         assert(depth >= 0 && depth < m_depth);
00195         return m_data[(row * m_width + col) * m_depth + depth];
00196     }
00197 
00199     int getWidth() const {
00200         return m_width;
00201     }
00202 
00204     int getHeight() const {
00205         return m_height;
00206     }
00207 
00209     int getDepth() const {
00210         return m_depth;
00211     }
00212 
00214     const T* getData() const {
00215         return m_data;
00216     }
00217 };
00218 
00219 #endif // __ARRAYS_H

Generated on Sat Mar 22 15:12:05 2003 for Bumpmap by doxygen1.3-rc2