00001 /* $Id: OSDataStructures.h 3176 2010-02-05 12:33:51Z Gassmann $ */ 00020 #ifndef OSDATASTRUCTURES_H 00021 #define OSDATASTRUCTURES_H 00022 00023 00024 00025 #include "OSConfig.h" 00026 00027 #ifdef HAVE_CSTDLIB 00028 # include <cstdlib> 00029 #else 00030 # ifdef HAVE_STDLIB_H 00031 # include <stdlib.h> 00032 # endif 00033 #endif 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 00366 struct IndexValuePair{ 00370 int idx; 00371 00374 double value; 00375 00376 }; 00377 00378 #endif 00379 00380 00381 00382