Actual source code: tvecdouble.c
1: #include "tvecdouble.h"
2: #include "tao_general.h"
3: #include "stdio.h"
5: TaoVecDoubleArray::TaoVecDoubleArray(TaoInt nn):TaoVec(),n(nn){
6: v=new double[nn];
7: dallocated=1;
8: return;
9: }
11: TaoVecDoubleArray::TaoVecDoubleArray(TaoInt 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, TaoInt *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, TaoInt *nn){
36: *dptr=0;
37: *nn=0;
38: return 0;
39: }
41: int TaoVecDoubleArray::GetDoubles(double **dptr, TaoInt *nn){
42: *dptr=v;
43: *nn=n;
44: return 0;
45: }
47: int TaoVecDoubleArray::RestoreDoubles(double **dptr, TaoInt *nn){
48: *dptr=0;
49: *nn=0;
50: return 0;
51: }
53: int TaoVecDoubleArray::GetDimension(TaoInt *nn){
54: *nn=n;
55: return 0;
56: }
58: int TaoVecDoubleArray::Compatible(TaoVec *tv, TaoTruth *flag){
59: TaoInt nn;
60: int info;
61: double *dptr;
62: TaoVecDoubleArray* vv = (TaoVecDoubleArray*)(tv);
64: info = vv->GetData(&dptr,&nn);
65: if (info==0 && nn == n) *flag=TAO_TRUE;
66: else *flag=TAO_FALSE;
67: return 0;
68: }
70: int TaoVecDoubleArray::View(){
71: for (TaoInt i=0;i<n;++i)
72: printf(" %4.2e \n ",v[i]);
73: return 0;
74: }