#ifndef GFXTOOLS_ARRAY_INCLUDED // -*- C++ -*- #define GFXTOOLS_ARRAY_INCLUDED #include #include "../std.h" namespace simplif { template class array { protected: T *data; int len; public: array() { data=NULL; len=0; } array(int l) { init(l); } ~array() { f_r_e_e(); } inline void init(int l); inline void f_r_e_e(); inline void resize(int l); inline T& ref(int i); inline T& operator[](int i) { return data[i]; } inline T& operator()(int i) { return ref(i); } inline const T& ref(int i) const; inline const T& operator[](int i) const { return data[i]; } inline const T& operator()(int i) const { return ref(i); } inline int length() const { return len; } inline int maxLength() const { return len; } }; template inline void array::init(int l) { data = new T[l]; len = l; } template inline void array::f_r_e_e() { if( data ) { delete[] data; data = NULL; } } template inline T& array::ref(int i) { #ifdef SAFETY assert( data ); assert( i>=0 && i inline const T& array::ref(int i) const { #ifdef SAFETY assert( data ); assert( i>=0 && i inline void array::resize(int l) { T *old = data; data = new T[l]; data = (T *)memcpy(data,old,MIN(len,l)*sizeof(T)); len = l; delete[] old; } } // GFXTOOLS_ARRAY_INCLUDED #endif