#ifndef GFXTOOLS_ARRAY2_INCLUDED // -*- C++ -*- #define GFXTOOLS_ARRAY2_INCLUDED template class array2 { protected: T *data; int w, h; public: array2() { data=NULL; w=h=0; } array2(int w, int h) { init(w,h); } ~array2() { free(); } inline void init(int w, int h); inline void free(); inline T& ref(int i, int j); inline T& operator()(int i,int j) { return ref(i,j); } inline int width() const { return w; } inline int height() const { return h; } }; template inline void array2::init(int width,int height) { w = width; h = height; data = new T[w*h]; } template inline void array2::free() { if( data ) { delete[] data; data = NULL; } } template inline T& array2::ref(int i, int j) { #ifdef SAFETY assert( data ); assert( i>=0 && i=0 && j