Changeset 1499 in Sophya for trunk/SophyaExt/FitsIOServer
- Timestamp:
- May 17, 2001, 6:26:45 PM (24 years ago)
- Location:
- trunk/SophyaExt/FitsIOServer
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsfile.cc
r1418 r1499 680 680 int ncol; 681 681 long nels=1; 682 int ligneAsolue = NoLine+1; 682 683 for (ncol=0; ncol<nbcols_; ncol++) 683 684 { 685 int repetition =repeat_[ncol]; 686 int ligneALire = ligneAsolue/repetition; 687 int premierElement = ligneAsolue-ligneALire*repetition; 688 if (premierElement != 0 ) 689 { 690 ligneALire++; 691 } 692 else premierElement = repetition; 693 684 694 switch (types_[ncol]) 685 695 { 686 696 case FitsDataType_double : 687 fits_read_col(fptr_,TDOUBLE,ncol+1,NoLine+1,1,1,&dnull,&ddata[dcount++],&anull,&status); 697 { 698 fits_read_col(fptr_,TDOUBLE,ncol+1,ligneALire,premierElement,1,&dnull,&ddata[dcount++],&anull,&status); 688 699 break; 689 case FitsDataType_float : 690 fits_read_col(fptr_,TFLOAT,ncol+1,NoLine+1,1,1,&fnull,&fdata[fcount++],&anull,&status); 700 } 701 case FitsDataType_float : 702 fits_read_col(fptr_,TFLOAT,ncol+1,ligneALire,premierElement,1,&fnull,&fdata[fcount++],&anull,&status); 691 703 break; 692 704 case FitsDataType_int : 693 fits_read_col(fptr_,TINT,ncol+1, NoLine+1,1,1,&inull,&idata[icount++],705 fits_read_col(fptr_,TINT,ncol+1,ligneALire,premierElement,1,&inull,&idata[icount++], 694 706 &anull,&status); 695 707 break; 708 case FitsDataType_long : 709 fits_read_col(fptr_,TLONG,ncol+1,ligneALire,premierElement,1,&inull,&idata[icount++], &anull,&status); 710 case FitsDataType_byte : 711 { 712 unsigned char uschar = 0; 713 fits_read_col(fptr_,TBYTE,ncol+1,ligneALire,premierElement,1,&inull,&uschar, &anull,&status); 714 idata[icount++] = (int)uschar; 715 } 716 break; 696 717 case FitsDataType_char : 697 fits_read_col(fptr_,TSTRING,ncol+1, NoLine+1,1,1,cnull,&cdata[ccount++],&anull,&status);718 fits_read_col(fptr_,TSTRING,ncol+1,ligneALire,premierElement,1,cnull,&cdata[ccount++],&anull,&status); 698 719 break; 699 720 } … … 1586 1607 cout << " WARNING : types don't match (PutColToFits) : on fits file= " << code << " to be written= DOUBLE " << endl; 1587 1608 } 1609 // cout << " 10 elements de colonne " << endl; 1610 // for (int toto=0; toto < 10; toto++) cout << donnees[toto] << endl; 1588 1611 fits_write_col(fptr_,TDOUBLE,nocol+1,1,1,nentries, donnees ,&status); 1589 1612 if( status ) printerror( status,"erreur ecriture du fichier fits" ); -
trunk/SophyaExt/FitsIOServer/fitsxntuple.cc
r1371 r1499 90 90 else if (ss == FitsFile::FitsDataType_float) FfitsCol.push_back(k); 91 91 else if (ss == FitsFile::FitsDataType_int) IfitsCol.push_back(k); 92 else if (ss == FitsFile::FitsDataType_long) IfitsCol.push_back(k); 93 else if (ss == FitsFile::FitsDataType_byte) IfitsCol.push_back(k); 92 94 else if (ss == FitsFile::FitsDataType_char) SfitsCol.push_back(k); 93 95 else { … … 122 124 ColName[compt++][LONNOM] = '\0'; 123 125 } 124 126 int ND = DfitsCol.size(); 127 int NF = FfitsCol.size(); 128 int NI = IfitsCol.size(); 129 int NS = SfitsCol.size(); 125 130 if(dobj_ == NULL) 126 131 { 127 dobj_= new XNTuple( DfitsCol.size(), FfitsCol.size(), IfitsCol.size(), SfitsCol.size(),ColName);132 dobj_= new XNTuple(ND, NF, NI, NS,ColName); 128 133 ownobj_ = true; 129 134 } … … 132 137 if (ownobj_) 133 138 { 134 (*dobj_)= XNTuple( DfitsCol.size(), FfitsCol.size(), IfitsCol.size(), SfitsCol.size(),ColName);139 (*dobj_)= XNTuple(ND, NF, NI, NS,ColName); 135 140 } 136 141 else 137 142 { 138 if ( DfitsCol.size() != dobj_->NDVar() || FfitsCol.size() != dobj_->NFVar() || IfitsCol.size() != dobj_->NIVar() || SfitsCol.size()!= dobj_->NSVar())143 if (ND != dobj_->NDVar() || NF != dobj_->NFVar() || NI != dobj_->NIVar() || NS != dobj_->NSVar()) 139 144 { 140 145 cout << " WARNING : FITS_XNTuple : XNTuple reconfigured " << endl; 141 (*dobj_)= XNTuple( DfitsCol.size(), FfitsCol.size(), IfitsCol.size(), SfitsCol.size(),ColName);146 (*dobj_)= XNTuple(ND, NF, NI, NS,ColName); 142 147 } 143 148 } … … 155 160 char** cligne; 156 161 157 if ( DfitsCol.size()>0) dligne = new double[DfitsCol.size()];162 if (ND>0) dligne = new double[ND]; 158 163 else dligne=NULL; 159 if ( FfitsCol.size()>0) fligne = new float[FfitsCol.size()];164 if (NF>0) fligne = new float[NF]; 160 165 else fligne=NULL; 161 if ( IfitsCol.size()>0) iligne = new int[IfitsCol.size()];166 if (NI) iligne = new int[NI]; 162 167 else iligne=NULL; 163 if ( SfitsCol.size()>0)164 { 165 cligne = new char*[ SfitsCol.size()];168 if (NS) 169 { 170 cligne = new char*[NS]; 166 171 int taille_des_chaines=0; 167 for (k=0; k< SfitsCol.size(); k++) taille_des_chaines = max( taille_des_chaines, is.ColStringLengthFromFits(SfitsCol[k]) );168 for (k=0; k< SfitsCol.size(); k++) cligne[k]=new char[taille_des_chaines+1];172 for (k=0; k< NS; k++) taille_des_chaines = max( taille_des_chaines, is.ColStringLengthFromFits(SfitsCol[k]) ); 173 for (k=0; k<NS; k++) cligne[k]=new char[taille_des_chaines+1]; 169 174 } 170 175 else cligne=NULL; … … 196 201 void FITS_XNTuple::WriteToFits(FitsOutFile& os) 197 202 { 203 198 204 if(dobj_ == NULL) 199 205 { … … 206 212 // table will have 'nrows' rows 207 213 int nrows = dobj_->NEntry(); 214 cout << " FITS_XNTuple::WriteToFits : nombre de lignes a ecrire " << nrows << endl; 208 215 // get names and values from the join DVList object 209 216 DVList dvl= dobj_->Info();
Note:
See TracChangeset
for help on using the changeset viewer.