Actual source code: tvecdouble.c

  1: #include "tvecdouble.h"
  2: #include "tao_general.h"
  3: #include "stdio.h"

  5: TaoVecDoubleArray::TaoVecDoubleArray(int nn):TaoVec(),n(nn){
  6:   v=new double[nn];
  7:   dallocated=1;
  8:   return;
  9: }

 11: TaoVecDoubleArray::TaoVecDoubleArray(int nn, double *dd):TaoVec(),n(nn){
 12:   v=dd;
 13:   dallocated=0;
 14:   return;
 15: }

 17: int TaoVecDoubleArray::Clone( TaoVec** tv ){

 19:   *tv = new TaoVecDoubleArray(this->n);
 20:   int info = (*tv)->CopyFrom(this);CHKERRQ(info);
 21:   return 0;
 22: }

 24: int TaoVecDoubleArray::GetArray(TaoScalar **dptr, int *nn){
 25:   if (sizeof(TaoScalar)==sizeof(double)){
 26:     *dptr=(TaoScalar*)v;
 27:     *nn=n;
 28:   }
 29:   else{
 30:     return 1;
 31:   }
 32:   return 0;
 33: }

 35: int TaoVecDoubleArray::RestoreArray(TaoScalar **dptr, int *nn){
 36:   *dptr=0;
 37:   *nn=0;
 38:   return 0;
 39: }

 41: int TaoVecDoubleArray::GetDoubles(double **dptr, int *nn){
 42:   *dptr=v;
 43:   *nn=n;
 44:   return 0;
 45: }

 47: int TaoVecDoubleArray::RestoreDoubles(double **dptr, int *nn){
 48:   *dptr=0;
 49:   *nn=0;
 50:   return 0;
 51: }

 53: int TaoVecDoubleArray::GetDimension(int *nn){
 54:   *nn=n;
 55:   return 0;
 56: }

 58: int TaoVecDoubleArray::Compatible(TaoVec *tv, TaoTruth *flag){
 59:   int nn,info;
 60:   double *dptr;
 61:   TaoVecDoubleArray* vv =  (TaoVecDoubleArray*)(tv);

 63:   info = vv->GetData(&dptr,&nn);
 64:   if (info==0 && nn == n) *flag=TAO_TRUE;
 65:   else *flag=TAO_FALSE;
 66:   return 0;
 67: }

 69: int TaoVecDoubleArray::View(){
 70:   for (int i=0;i<n;++i)
 71:     printf(" %4.2e \n ",v[i]);
 72:   return 0;
 73: }