00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef CONTAINER_H
00028 #define CONTAINER_H
00029
00030
00031
00036 template <class T>
00037 class VDKContainer
00038 {
00039 protected:
00040 T* data;
00041 int count;
00042 public:
00047 VDKContainer(int count=0):
00048 data(count > 0 ? new T[count]: 0),
00049 count(count)
00050 {
00051 }
00052
00053 virtual ~VDKContainer()
00054 {
00055 if (data)
00056 delete[] data;
00057 }
00061 T& operator[](int n)
00062 {
00063 return data[n];
00064 }
00068 int size(){return count;}
00072 VDKContainer(const VDKContainer<T>& c);
00076 VDKContainer<T>& operator=(const VDKContainer<T>& c);
00080 int operator ==(const VDKContainer<T>& c);
00081
00082 };
00083
00084
00085 template <class T>
00086 VDKContainer<T>::VDKContainer(const VDKContainer<T>& c)
00087 {
00088 data=0;
00089 *this=c;
00090 }
00091
00092
00093 template <class T>
00094 VDKContainer<T>& VDKContainer<T>::operator=(const VDKContainer<T>& c)
00095 {
00096 if (this!= &c)
00097 {
00098 if(data)delete[]data;
00099 count=c.count;
00100 data= count >0 ?new T[count]:0;
00101 for (int i=0;i<count;i++)
00102 data[i]=c.data[i];
00103 }
00104 return *this;
00105 }
00106
00107
00108 template <class T>
00109 int VDKContainer<T>::operator ==(const VDKContainer<T>& c)
00110 {
00111 int i=0;
00112 if(count!=c.count)return 0;
00113 for (;(i<count) && (data[i]==c.data[i]);i++);
00114 return i==count ?1:0;
00115 }
00116
00117 #endif
00118
00119
00120