www.pudn.com > 3dSimplifier.zip > Array.h, change:1999-06-03,size:1405b


#ifndef ARRAY_H_INCLUDED // -*- C++ -*- 
#define ARRAY_H_INCLUDED 
 
#include <string.h> 
#include "geometry.h" 
 
template<class T> 
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<class T> 
inline void array<T>::init(int l) 
{ 
    data = new T[l]; 
    len = l; 
} 
 
template<class T> 
inline void array<T>::free() 
{ 
    if( data ) 
    { 
	delete[] data; 
	data = NULL; 
    } 
} 
 
template<class T> 
inline T& array<T>::ref(int i) 
{ 
    return data[i]; 
} 
 
template<class T> 
inline const T& array<T>::ref(int i) const 
{ 
    return data[i]; 
} 
 
template<class T> 
inline void array<T>::resize(int l) 
{ 
    T *old = data; 
    data = new T[l]; 
    data = (T *)memcpy(data,old,MIN(len,l)*sizeof(T)); 
    len = l; 
    delete[] old; 
} 
 
// ARRAY_H_INCLUDED 
#endif