00001 00019 #ifndef OSDATASTRUCTURES_H 00020 #define OSDATASTRUCTURES_H 00021 00022 00023 00024 #include "OSConfig.h" 00025 00026 #ifdef HAVE_CSTDLIB 00027 # include <cstdlib> 00028 #else 00029 # ifdef HAVE_STDLIB_H 00030 # include <stdlib.h> 00031 # endif 00032 #endif 00033 00034 00035 00036 00037 00041 class SparseMatrix { 00042 public: 00043 00048 bool bDeleteArrays; 00049 00054 bool isColumnMajor; 00055 00059 int startSize; 00060 00064 int valueSize; 00065 00070 int* starts; 00071 00076 int* indexes; 00077 00082 double* values; 00083 00088 SparseMatrix(); 00089 00098 SparseMatrix(bool isColumnMajor_, int startSize, int valueSize); 00103 ~SparseMatrix(); 00104 00110 bool display(int secondaryDim); 00111 00112 }; //SparseMatrix 00113 00114 00118 class SparseVector{ 00119 public: 00120 00126 SparseVector(int number); 00127 00132 SparseVector(); 00133 00138 ~SparseVector(); 00139 00144 bool bDeleteArrays; 00145 00149 int number; 00150 00154 int* indexes; 00155 00159 double* values; 00160 00161 }; //SparseVector 00162 00163 00167 class SparseJacobianMatrix { 00168 public: 00169 00174 bool bDeleteArrays; 00175 00179 int startSize; 00180 00184 int valueSize; 00185 00190 int* starts; 00191 00196 int* conVals; 00197 00201 int* indexes; 00202 00206 double* values; 00207 00212 SparseJacobianMatrix(); 00213 00220 SparseJacobianMatrix(int startSize, int valueSize); 00221 00226 ~SparseJacobianMatrix(); 00227 00228 }; //SparseJacobianMatrix 00229 00230 00231 00232 00233 00244 class SparseHessianMatrix { 00245 public: 00246 00251 bool bDeleteArrays; 00252 00256 int hessDimension; 00257 00261 int* hessRowIdx; 00262 00266 int* hessColIdx; 00267 00271 double* hessValues; 00272 00277 SparseHessianMatrix(); 00278 00285 SparseHessianMatrix(int startSize, int valueSize); 00286 00291 ~SparseHessianMatrix(); 00292 00293 }; //SparseHessianMatrix 00294 00298 class QuadraticTerms { 00299 00300 public: 00301 00306 int* rowIndexes; 00307 00311 int* varOneIndexes; 00312 00316 int* varTwoIndexes; 00317 00321 double* coefficients; 00322 00327 QuadraticTerms(); 00328 ~QuadraticTerms(); 00329 }; //QuadraticTerms 00330 00331 00335 class IntVector{ 00336 public: 00337 IntVector(); 00338 ~IntVector(); 00343 bool bDeleteArrays; 00344 int *el; 00345 };//class IntVector 00346 00350 class DoubleVector{ 00351 public: 00352 DoubleVector(); 00353 ~DoubleVector(); 00358 bool bDeleteArrays; 00359 double *el; 00360 };//class DoubleVector 00361 00362 #endif 00363 00364 00365 00366