Changeset 1657 in Sophya for trunk/SophyaExt/FitsIOServer/fabtcolread.cc
- Timestamp:
- Sep 27, 2001, 7:45:52 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fabtcolread.cc
r1654 r1657 98 98 SetNulVal(); 99 99 SetDebug(lp); 100 BuffLen = (blen<=0) ? 1: blen;101 BuffSens = bsens;102 100 NFitsRead = 0; 103 101 FitsPtr = NULL; 104 102 LineDeb = LineFin = -1; 105 103 Buffer = NULL; 106 NBuffer = 0;104 ChangeBuffer(blen,bsens); 107 105 108 106 ////////////////////////// … … 112 110 int sta=0; 113 111 if(FitsFN.size() <= 0 ) { 114 IHdu = -1; 112 IHdu = -1; Delete(); 115 113 throw ParmError("FitsABTColRead::Init: Fits file name error\n"); 116 114 } … … 145 143 } 146 144 if(IHdu<=0 || IHdu>NHdu) { 147 IHdu = 0;148 145 cout<<"NO BINARY or ASCII hdu found"<<endl; 149 Delete();146 IHdu = 0; Delete(); 150 147 throw TypeMismatchExc("FitsABTColRead::Init: NO BINARY or ASCII hdu found\n"); 151 148 } … … 230 227 <<" TUnit="<<ColTUnit<<" TForm="<<ColTForm<<endl; 231 228 232 // Prepare buffer233 NBuffer = (BuffSens==0) ? BuffLen+1: BuffLen;234 Buffer = new double[NBuffer];235 229 } 236 230 … … 246 240 void FitsABTColRead::ChangeBuffer(long blen,long bsens) 247 241 { 242 long oldnbuffer = NBuffer; 243 244 // Compute buffer caracteristics 248 245 BuffLen = (blen<=0)? 1: blen; 249 246 BuffSens = bsens; 250 251 // De-allocate 252 if(Buffer==NULL) return; 253 delete [] Buffer; Buffer=NULL; 247 NBuffer = BuffLen; 248 if(bsens==0 && NBuffer%2==0) NBuffer++; 249 250 // De-allocate if necessary 251 if(Buffer!=NULL && oldnbuffer!=NBuffer) 252 {delete [] Buffer; Buffer=NULL;} 253 254 // Re-allocate 255 if(Buffer==NULL) Buffer = new double[NBuffer]; 254 256 255 257 // Tell program that nothing is into buffer 256 258 LineDeb = LineFin = -1; 257 258 // Re-allocate259 NBuffer = (BuffSens==0) ? BuffLen+1: BuffLen;260 Buffer = new double[NBuffer];261 259 } 262 260 … … 264 262 void FitsABTColRead::Delete() 265 263 { 266 if(Buffer==NULL) return; 267 delete [] Buffer; Buffer=NULL; 264 if(Buffer!=NULL) {delete [] Buffer; Buffer=NULL;} 268 265 LineDeb = LineFin = -1; 269 266 int sta = 0; … … 279 276 \endverbatim 280 277 */ 281 r_8FitsABTColRead::Read(long n)278 double FitsABTColRead::Read(long n) 282 279 // Attention: n=nline [0,NBline[, cfistio veut [1,NBline] 283 280 // Attention: colnum [0,NBcol[ , cfistio veut [1,NBcol] … … 288 285 289 286 // Pas de bufferisation, on lit betement 290 if( BuffLen==1) {287 if(NBuffer==1) { 291 288 NFitsRead++; 292 289 fits_read_col_dbl(FitsPtr,ColNum+1,n+1,1,1,NulVal,Buffer,&anynul,&sta); … … 308 305 if(BuffSens>0) { // Cas remplissage forward 309 306 row1 = n+1; 310 row2 = row1+ BuffLen-1; if(row2>NBline) row2 = NBline;307 row2 = row1+NBuffer-1; if(row2>NBline) row2 = NBline; 311 308 } else if(BuffSens<0) { // Cas remplissage backward 312 309 row2 = n+1; 313 row1 = row2- BuffLen+1; if(row1<1) row1 = 1;310 row1 = row2-NBuffer+1; if(row1<1) row1 = 1; 314 311 } else { // Cas remplissage centre 315 row1 = n+1 - BuffLen/2; if(row1<1) row1 = 1;316 row2 = n+1 + BuffLen/2; if(row2>NBline) row2 = NBline;312 row1 = n+1 - NBuffer/2; if(row1<1) row1 = 1; 313 row2 = n+1 + NBuffer/2; if(row2>NBline) row2 = NBline; 317 314 } 318 315 nrow = row2 - row1 + 1; … … 339 336 \endverbatim 340 337 */ 341 void FitsABTColRead::Read(long n1,long n2,TVector< r_8>& data)338 void FitsABTColRead::Read(long n1,long n2,TVector<double>& data) 342 339 { 343 340 if(n1<0 || n1>=NBline || n2<0 || n2>=NBline || n1>n2)
Note:
See TracChangeset
for help on using the changeset viewer.