/* Copyright 1993-2002 The MathWorks, Inc. */ /* Source file for reducep MEX file */ /* $Revision: 1.4 $ */ #ifndef GFXTOOLS_ARRAY_INCLUDED // -*- C++ -*- #define GFXTOOLS_ARRAY_INCLUDED #include template class array { protected: T *data; int len; public: array() { data=NULL; len=0; } array(int l) { init(l); } ~array() { free(); } inline void init(int l); inline void free(); 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::free() { 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