Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

vetVector.h

00001 
00029 #ifndef __VETLIB_VETVECTOR_H__
00030  #define __VETLIB_VETVECTOR_H__
00031 
00032  #include "vetDefs.h"
00033  #include <stdio.h>
00034  #include <fstream>
00035 
00036 
00037 template<class T>
00038 class vetVector
00039  {
00040 
00041         protected:
00042 
00043                 unsigned int items;
00044 
00045                 T* data;
00046                 T* dataSum;
00047 
00048 
00049         public:
00050 
00051                 vetVector()
00052                  {
00053                         items = 0;
00054                         data = NULL;
00055                         dataSum = NULL;
00056                  }
00057 
00058                 vetVector(unsigned int itemCount)
00059                  {
00060                         data = NULL;
00061                         dataSum = NULL;
00062                         setDim(itemCount);
00063                  }
00064 
00065                 vetVector(const char* filename)
00066                  {
00067                         data = NULL;
00068                         dataSum = NULL;
00069                         loadFromFile(filename);
00070                  }
00071 
00072                 vetVector(itemCount, T* data_ptr)
00073                  {
00074                         items = itemCount;
00075 
00076                         data = data_ptr;
00077 
00078                         dataSum = new T;
00079                         for (int is=0; is < columns * rows; is++)
00080                                 dataSum += data[is];
00081 
00082                  }
00083 
00084                 ~vetVector()
00085                  {
00086                         if ( data != NULL )
00087                                 delete [] data;
00088 
00089                         if ( dataSum != NULL )
00090                                 delete dataSum;
00091                  }
00092 
00093                 void setDim(unsigned int itemCount)
00094                  {
00095                         if ( data != NULL )
00096                                 delete [] data;
00097 
00098                         if ( dataSum != NULL )
00099                                 delete dataSum;
00100 
00101                         items = itemCount;
00102 
00103                         data = new T [items];
00104                         dataSum = new T;
00105                  }
00106 
00107                 unsigned int getItemsCount() { return items; };
00108                 T getItemsSum() { return *dataSum; };
00109 
00110                 T* dump_data() { return data; };
00111                 T* dump_dataSum() { return dataSum; };
00112 
00113                 VETRESULT setValue(unsigned int itemIndex, T& value)
00114                  {
00115                         if ( itemIndex < 0 || itemIndex >= items )
00116                                 return VETRET_PARAM_ERR;
00117 
00118                         if ( data == NULL )
00119                                 return VETRET_ILLEGAL_USE;
00120 
00121                         dataSum -= data[ y * rows + x ];
00122                         data[ itemIndex ] = value;
00123                         dataSum += value;
00124 
00125                         return VETRET_OK;
00126                  }
00127 
00128                 T& getValue(unsigned int itemIndex)
00129                  {
00130                         if ( itemIndex < 0 || itemIndex >= items )
00131                                 throw "Out of bounds.";
00132 
00133                         if ( data == NULL )
00134                                 throw "Empty vector.";
00135 
00136                         return data[ itemIndex ];
00137                  }
00138 
00139                 T& getValueMax()
00140                  {
00141                         if ( data == NULL )
00142                                 throw "Empty table.";
00143 
00144                         T curMax = data[0];
00145 
00146                         for (int i=0; i < items; i++)
00147                                 if ( data[i] > curMax )
00148                                         curMax = data[i];
00149 
00150                         return curMax;
00151                  }
00152 
00153                 T& getValueMin()
00154                  {
00155                         if ( data == NULL )
00156                                 throw "Empty table.";
00157 
00158                         T curMin = data[0];
00159 
00160                         for (int i=0; i < items; i++)
00161                                 if ( data[i] < curMax )
00162                                         curMax = data[i];
00163 
00164                         return curMax;
00165                  }
00166 
00167                 void clearWith(T& value)
00168                  {
00169                         if ( data == NULL )
00170                                 throw "Empty table.";
00171 
00172                         for (int i=0; i < items; i++)
00173                                 data[i] = value;
00174 
00175                         dataSum = items * value;
00176 
00177                  }
00178 
00179 
00180 //              T& operator() (unsigned int i, unsigned int j);
00181 
00182 
00183 
00184 
00185                 VETRESULT saveToFile(const char* filename)
00186                  {
00187                         FILE *fp;
00188                         int ret = VETRET_OK;
00189 
00190                         if ( data == NULL )
00191                                 return VETRET_ILLEGAL_USE;
00192 
00193                         if ( (fp = fopen(filename, "w")) == NULL )
00194                                 return VETRET_PARAM_ERR;
00195 
00196 
00197                         if( fprintf(fp, "%d\n", items) == EOF )
00198                          {
00199                                 fclose(fp);
00200                                 return VETRET_INTERNAL_ERR;
00201                          }
00202 
00203                         for (int i=0; i < items; i++)
00204                                 if ( fprintf(fp, "%f ", (float)data[i]) == EOF)
00205                                         ret = VETRET_INTERNAL_ERR;
00206 
00207                         if ( fprintf(fp, "\n") == EOF )
00208                                 ret = VETRET_INTERNAL_ERR;
00209 
00210                         fclose(fp);
00211                         return ret ;
00212                  }
00213 
00214 
00215 
00216                 VETRESULT loadFromFile(const char* filename)
00217                  {
00218                         FILE *fp;
00219                         int ret = VETRET_OK;
00220 
00221                         if ( (fp=fopen(filename,"r")) == NULL )
00222                                 return VETRET_PARAM_ERR;
00223 
00224                         unsigned int newRows = 0;
00225                         unsigned int newCols = 0;
00226 
00227                         if ( fscanf(fp,"%u",&items) == EOF )
00228                          {
00229                                 fclose(fp);
00230                                 return VETRET_INTERNAL_ERR;
00231                          }
00232 
00233                         if ( items < 1 )
00234                          {
00235                                 fclose(fp);
00236                                 return VETRET_INTERNAL_ERR;
00237                          }
00238 
00239                         setDim(items);
00240 
00241                         float tmpValue;
00242 
00243                         for (int i=0; i < items; i++)
00244                                 if( fscanf(fp, "%f", &tmpValue) == EOF )
00245                                         ret = VETRET_INTERNAL_ERR;
00246                                 else
00247                                         data[i] = (T)tmpValue;
00248 
00249                         for (int is=0; is < items; is++)
00250                                 dataSum += data[is];
00251 
00252                         return ret;
00253                  }
00254 
00255 
00256 };
00257 
00258 #endif //__VETLIB_VETVECTOR_H__
00259 

Generated on Tue Jan 24 11:59:05 2006 for VETLib by  doxygen 1.4.4