Changeset 1136 in Sophya for trunk/SophyaExt/FitsIOServer/fitsxntuple.cc
- Timestamp:
- Aug 24, 2000, 12:18:02 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsxntuple.cc
r1047 r1136 23 23 ownobj_ = true; 24 24 25 Read F(inputfile,hdunum);25 Read(inputfile,hdunum); 26 26 } 27 27 … … 41 41 FITS_XNTuple::~FITS_XNTuple() 42 42 { 43 Clean();44 }45 46 void FITS_XNTuple::Clean()47 {48 if (dcolumn_ != NULL) delete [] dcolumn_;49 if (fcolumn_ != NULL) delete [] fcolumn_;50 if (icolumn_ != NULL) delete [] icolumn_;51 if (ccolumn_ != NULL)52 {53 if (dobj_ != NULL)54 {55 for (int k=0; k<dobj_->NEntry(); k++) delete [] ccolumn_[k];56 delete [] ccolumn_;57 }58 else59 {60 cout << "FITS_XNTuple, destructeur: bizarre, ccolumn non vide, sans objet?" << endl;; }61 }62 43 if (ownobj_ && dobj_ != NULL) delete dobj_; 63 44 } 64 45 65 void FITS_XNTuple::Read(char inputfile[],int hdunum)66 {67 ReadF(inputfile,hdunum);68 }69 46 70 47 void FITS_XNTuple::ReadLines(char inputfile[],int firstLine, int numberOfLines,int hdunum) … … 72 49 fistLineToBeRead_ = firstLine; 73 50 numberOfLinesToBeRead_ = numberOfLines; 74 ReadF(inputfile,hdunum); 75 // return dobj_; 76 } 77 78 79 void FITS_XNTuple::Write(char outputfile[], bool OldFile) 80 { 81 WriteF(outputfile, OldFile); 82 } 51 Read(inputfile,hdunum); 52 } 53 54 83 55 84 void FITS_XNTuple::ReadFromFits( )56 void FITS_XNTuple::ReadFromFits(FitsInFile& is) 85 57 { 86 // if (!fn.IsFitsTable()) 87 if (!IsFitsTable()) 58 if (!is.IsFitsTable()) 88 59 { 89 60 throw PException("ReadFromFits: the fits file seems not to be a bintable nor ASCII table"); 90 61 } 91 62 int nbcols, nbentries; 92 // nbcols = fn.NbColsFromFits(); 93 nbcols = NbColsFromFits(); 63 nbcols = is.NbColsFromFits(); 94 64 nbentries = 0; 95 65 int k; 96 // for (k=0; k<nbcols; k++) nbentries=max( nbentries, fn.NentriesFromFits(k) ); 97 for (k=0; k<nbcols; k++) nbentries=max( nbentries, NentriesFromFits(k) ); 66 for (k=0; k<nbcols; k++) nbentries=max( nbentries, is.NentriesFromFits(k) ); 98 67 99 68 // … … 111 80 for (k=0; k<nbcols;k++) 112 81 { 113 // char ss= fn.ColTypeFromFits(k); 114 char ss= ColTypeFromFits(k); 82 char ss= is.ColTypeFromFits(k); 115 83 if (ss == 'D') DfitsCol.push_back(k); 116 84 else if (ss == 'E') FfitsCol.push_back(k); … … 127 95 { 128 96 ColName[compt] = new char[LONNOM+1]; 129 // strncpy(ColName[compt], fn.ColNameFromFits(DfitsCol[k]).c_str(), LONNOM); 130 strncpy(ColName[compt], ColNameFromFits(DfitsCol[k]).c_str(), LONNOM); 97 strncpy(ColName[compt], is.ColNameFromFits(DfitsCol[k]).c_str(), LONNOM); 131 98 ColName[compt++][ LONNOM] = '\0'; 132 99 } … … 134 101 { 135 102 ColName[compt] = new char[LONNOM+1]; 136 // strncpy(ColName[compt], fn.ColNameFromFits(FfitsCol[k]).c_str(), LONNOM); 137 strncpy(ColName[compt], ColNameFromFits(FfitsCol[k]).c_str(), LONNOM); 103 strncpy(ColName[compt], is.ColNameFromFits(FfitsCol[k]).c_str(), LONNOM); 138 104 ColName[compt++][ LONNOM] = '\0'; 139 105 } … … 141 107 { 142 108 ColName[compt] = new char[LONNOM+1]; 143 // strncpy(ColName[compt], fn.ColNameFromFits(IfitsCol[k]).c_str(), LONNOM); 144 strncpy(ColName[compt], ColNameFromFits(IfitsCol[k]).c_str(), LONNOM); 109 strncpy(ColName[compt], is.ColNameFromFits(IfitsCol[k]).c_str(), LONNOM); 145 110 ColName[compt++][ LONNOM] = '\0'; 146 111 } … … 148 113 { 149 114 ColName[compt] = new char[LONNOM+1]; 150 // strncpy(ColName[compt], fn.ColNameFromFits(SfitsCol[k]).c_str(), LONNOM); 151 strncpy(ColName[compt], ColNameFromFits(SfitsCol[k]).c_str(), LONNOM); 115 strncpy(ColName[compt], is.ColNameFromFits(SfitsCol[k]).c_str(), LONNOM); 152 116 ColName[compt++][LONNOM] = '\0'; 153 117 } … … 193 157 cligne = new char*[SfitsCol.size()]; 194 158 int taille_des_chaines=0; 195 // for (k=0; k< SfitsCol.size(); k++) taille_des_chaines = max( taille_des_chaines, fn.ColStringLengthFromFits(SfitsCol[k]) ); 196 for (k=0; k< SfitsCol.size(); k++) taille_des_chaines = max( taille_des_chaines, ColStringLengthFromFits(SfitsCol[k]) ); 159 for (k=0; k< SfitsCol.size(); k++) taille_des_chaines = max( taille_des_chaines, is.ColStringLengthFromFits(SfitsCol[k]) ); 197 160 for (k=0; k<SfitsCol.size(); k++) cligne[k]=new char[taille_des_chaines+1]; 198 161 } … … 212 175 for (numLigne=firstln; numLigne < lastln; numLigne++) 213 176 { 214 // fn.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne ); 215 GetBinTabLine(numLigne, dligne, fligne, iligne, cligne ); 177 is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne ); 216 178 dobj_->Fill(dligne, fligne, iligne, cligne); 217 179 } … … 221 183 for (k=0; k< SfitsCol.size(); k++) delete [] cligne[k]; 222 184 delete [] cligne; 223 // dobj_->Info()=fn.DVListFromFits(); 224 dobj_->Info()=DVListFromFits(); 225 226 } 227 void FITS_XNTuple::WriteToFits() 185 dobj_->Info()=is.DVListFromFits(); 186 187 } 188 void FITS_XNTuple::WriteToFits(FitsOutFile& os) 228 189 { 229 190 if(dobj_ == NULL) … … 270 231 vector<int> StringSizes(dobj_->NSVar()); 271 232 for (k=0; k< StringSizes.size(); k++) StringSizes[k]=dobj_->mStrSz; 272 // la librairie fitsio ecrit colonne par colonne 273 // fn.makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes); 274 makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes); 233 os.makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes); 275 234 for (k=0; k< ncols; k++) 276 235 { … … 279 238 delete [] Noms; 280 239 delete [] types; 240 241 281 242 compt=0; 282 for (k=0; k<dobj_->NDVar();k++) 283 { 284 putColToFits(compt, dobj_->NEntry(), getColDFromObj(compt)); 285 compt++; 286 } 287 for (k=0; k<dobj_->NFVar();k++) 288 { 289 putColToFits(compt, dobj_->NEntry(), getColFFromObj(compt)); 290 compt++; 291 } 292 for (k=0; k<dobj_->NIVar();k++) 293 { 294 putColToFits(compt, dobj_->NEntry(), getColIFromObj(compt)); 295 compt++; 296 } 297 for (k=0; k<dobj_->NSVar();k++) 298 { 299 putColToFits(compt, dobj_->NEntry(), getColSFromObj(compt)); 300 compt++; 301 } 302 } 303 double* FITS_XNTuple::getColDFromObj(int colNr) 304 { 305 if (dcolumn_ != NULL) 306 { 307 delete [] dcolumn_; 308 dcolumn_ = NULL; 309 } 310 dcolumn_ = new double[dobj_->NEntry()]; 311 for(int j = 0; j < dobj_->NEntry(); j++) dcolumn_[j]= dobj_->GetDVal(j,colNr); 312 return dcolumn_; 313 } 314 315 float* FITS_XNTuple::getColFFromObj(int colNr) 316 { 317 if (fcolumn_ != NULL) 318 { 319 delete [] fcolumn_; 320 fcolumn_ = NULL; 321 } 322 fcolumn_ = new float[dobj_->NEntry()]; 323 for(int j = 0; j < dobj_->NEntry(); j++) fcolumn_[j]= dobj_->GetFVal(j,colNr); 324 return fcolumn_; 325 } 326 327 int* FITS_XNTuple::getColIFromObj(int colNr) 328 { 329 if (icolumn_ != NULL) 330 { 331 delete [] icolumn_; 332 icolumn_ = NULL; 333 } 334 icolumn_ = new int[dobj_->NEntry()]; 335 for(int j = 0; j < dobj_->NEntry(); j++) icolumn_[j]= dobj_->GetIVal(j,colNr); 336 return icolumn_; 337 } 338 char** FITS_XNTuple::getColSFromObj(int colNr) 339 { 340 if (ccolumn_ != NULL) 341 { 342 for (int k=0; k<dobj_->NEntry(); k++) delete [] ccolumn_[k]; 343 delete [] ccolumn_; 344 ccolumn_ = NULL; 345 } 346 ccolumn_ = new char*[dobj_->NEntry()]; 347 for(int j = 0; j < dobj_->NEntry(); j++) 348 { 349 string s= dobj_->GetSVal(j,colNr); 350 ccolumn_[j] = new char[dobj_->mStrSz+1]; 351 strcpy(ccolumn_[j],s.c_str()); 352 } 353 return ccolumn_; 354 } 243 if (dobj_->NDVar() > 0) 244 { 245 double* dcolumn = new double[nrows]; 246 for (k=0; k<dobj_->NDVar();k++) 247 { 248 for(int j = 0; j < nrows; j++) dcolumn[j]= dobj_->GetDVal(j,compt); 249 os.putColToFits(compt, nrows, dcolumn); 250 compt++; 251 } 252 delete [] dcolumn; 253 } 254 255 if (dobj_->NFVar() > 0) 256 { 257 float* fcolumn = new float[nrows]; 258 for (k=0; k<dobj_->NFVar();k++) 259 { 260 for(int j = 0; j < nrows; j++) fcolumn[j]= dobj_->GetFVal(j,compt); 261 os.putColToFits(compt, nrows, fcolumn); 262 compt++; 263 } 264 delete [] fcolumn; 265 } 266 267 if (dobj_->NIVar() > 0) 268 { 269 int* icolumn = new int[nrows]; 270 for (k=0; k<dobj_->NIVar();k++) 271 { 272 for(int j = 0; j < nrows; j++) icolumn[j]= dobj_->GetIVal(j,compt); 273 os.putColToFits(compt, nrows, icolumn); 274 compt++; 275 } 276 delete [] icolumn; 277 } 278 279 if (dobj_->NSVar() > 0) 280 { 281 char** ccolumn = new char*[nrows]; 282 for (k=0; k<dobj_->NSVar();k++) 283 { 284 int j; 285 for(j = 0; j < nrows; j++) 286 { 287 string s= dobj_->GetSVal(j,compt); 288 ccolumn[j] = new char[dobj_->mStrSz+1]; 289 strcpy(ccolumn[j],s.c_str()); 290 } 291 os.putColToFits(compt, nrows, ccolumn); 292 compt++; 293 for(j = 0; j < nrows; j++) 294 { 295 delete [] ccolumn[j]; 296 ccolumn[j] = NULL; 297 } 298 } 299 delete [] ccolumn; 300 } 301 }
Note:
See TracChangeset
for help on using the changeset viewer.