Ignore:
Timestamp:
Sep 27, 2001, 7:45:52 PM (24 years ago)
Author:
cmv
Message:

possibilite d'ecrire directement des TVector fabtwriter cmv 27/9/01

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fabtcolread.cc

    r1654 r1657  
    9898 SetNulVal();
    9999 SetDebug(lp);
    100  BuffLen = (blen<=0) ? 1: blen;
    101  BuffSens = bsens;
    102100 NFitsRead = 0;
    103101 FitsPtr = NULL;
    104102 LineDeb = LineFin = -1;
    105103 Buffer = NULL;
    106  NBuffer = 0;
     104 ChangeBuffer(blen,bsens);
    107105
    108106 //////////////////////////
     
    112110 int sta=0;
    113111 if(FitsFN.size() <= 0 ) {
    114    IHdu = -1;
     112   IHdu = -1; Delete();
    115113   throw ParmError("FitsABTColRead::Init: Fits file name error\n");
    116114 }
     
    145143   }
    146144 if(IHdu<=0 || IHdu>NHdu) {
    147    IHdu = 0;
    148145   cout<<"NO BINARY or ASCII hdu found"<<endl;
    149    Delete();
     146   IHdu = 0; Delete();
    150147   throw TypeMismatchExc("FitsABTColRead::Init: NO BINARY or ASCII hdu found\n");
    151148 }
     
    230227       <<" TUnit="<<ColTUnit<<" TForm="<<ColTForm<<endl;
    231228
    232  // Prepare buffer
    233  NBuffer = (BuffSens==0) ? BuffLen+1: BuffLen;
    234  Buffer = new double[NBuffer];
    235229}
    236230
     
    246240void FitsABTColRead::ChangeBuffer(long blen,long bsens)
    247241{
     242 long oldnbuffer = NBuffer;
     243
     244 // Compute buffer caracteristics
    248245 BuffLen = (blen<=0)? 1: blen;
    249246 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];
    254256
    255257 // Tell program that nothing is into buffer
    256258 LineDeb = LineFin = -1;
    257 
    258  // Re-allocate
    259  NBuffer = (BuffSens==0) ? BuffLen+1: BuffLen;
    260  Buffer = new double[NBuffer];
    261259}
    262260
     
    264262void FitsABTColRead::Delete()
    265263{
    266  if(Buffer==NULL) return;
    267  delete [] Buffer; Buffer=NULL;
     264 if(Buffer!=NULL) {delete [] Buffer; Buffer=NULL;}
    268265 LineDeb = LineFin = -1;
    269266 int sta = 0;
     
    279276  \endverbatim
    280277*/
    281 r_8 FitsABTColRead::Read(long n)
     278double FitsABTColRead::Read(long n)
    282279// Attention: n=nline [0,NBline[, cfistio veut [1,NBline]
    283280// Attention: colnum  [0,NBcol[ , cfistio veut [1,NBcol]
     
    288285
    289286 // Pas de bufferisation, on lit betement
    290  if(BuffLen==1) {
     287 if(NBuffer==1) {
    291288   NFitsRead++;
    292289   fits_read_col_dbl(FitsPtr,ColNum+1,n+1,1,1,NulVal,Buffer,&anynul,&sta);
     
    308305   if(BuffSens>0) { // Cas remplissage forward
    309306     row1 = n+1;
    310      row2 = row1+BuffLen-1; if(row2>NBline) row2 = NBline;
     307     row2 = row1+NBuffer-1; if(row2>NBline) row2 = NBline;
    311308   } else if(BuffSens<0) { // Cas remplissage backward
    312309     row2 = n+1;
    313      row1 = row2-BuffLen+1; if(row1<1) row1 = 1;
     310     row1 = row2-NBuffer+1; if(row1<1) row1 = 1;
    314311   } 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;
    317314   }
    318315   nrow = row2 - row1 + 1;
     
    339336  \endverbatim
    340337*/
    341 void FitsABTColRead::Read(long n1,long n2,TVector<r_8>& data)
     338void FitsABTColRead::Read(long n1,long n2,TVector<double>& data)
    342339{
    343340 if(n1<0 || n1>=NBline || n2<0 || n2>=NBline || n1>n2)
Note: See TracChangeset for help on using the changeset viewer.