Ignore:
Timestamp:
Sep 8, 2006, 4:30:31 PM (19 years ago)
Author:
ansari
Message:

Correction plusieurs bugs lies a SwFitsDataTable - Reza 08/09/2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fitsswapper.h

    r2896 r3069  
    1111#include "fitsinoutfile.h"
    1212#include "fitsblkrw.h"
     13
     14#include "basedtable.h"
    1315
    1416/*!
     
    2527public:
    2628  FITSDataSwapper()
    27     : fcol(0) , rowos(1)
     29    : fcol(0) , rowos(1) , dtp(NULL)
    2830  {
    2931  }
    30   FITSDataSwapper(FitsInOutFile & ios, int col)
    31     : fios(ios) , fcol(col), rowos(1)
     32  FITSDataSwapper(FitsInOutFile & ios, int col, BaseDataTable* dt=NULL)
     33    : fios(ios) , fcol(col), rowos(1) , dtp(dt)
    3234  {
    3335  }
    3436
    3537  inline FitsInOutFile & InOutStream() { return fios; }
     38
    3639  void SetInOutStream(FitsInOutFile & ios, int col)
    3740  {
     
    5356    fcol = a.fcol;
    5457    rowos = a.rowos;
     58    dtp = a.dtp;
    5559  }
    5660
     
    6064    long row = rowos;
    6165    if (osw)  row = oswp;
     66    if (dtp != NULL)
     67       if ((row+sz-1) > dtp->NRows() )  sz = dtp->NRows()-row+1;
    6268    FitsBlockRW<T>::WriteColumnData(fios, fcol, row, 1, d, sz);
    6369    if (!osw) rowos += sz;
     
    6773  virtual void  ReadFromSwap(int_8 idx, int_8 swp, T* d, size_t sz)
    6874  {
     75    long nrows = fios.GetNbRows();
     76    size_t szi = sz;
     77    if ((swp+sz-1) > nrows) sz = nrows-swp+1; 
    6978    FitsBlockRW<T>::ReadColumnData(fios, fcol, swp, 1, d, sz);
     79    if (sz < szi) {
     80      T zz = d[sz-1];
     81      for(size_t k=sz; k<szi; k++)  d[k] = zz;
     82    }
    7083  }
    7184
    7285  virtual DataSwapperInterface<T>* Clone()
    7386  {
    74     FITSDataSwapper<T> * rsw = new FITSDataSwapper<T>(fios, fcol) ;
     87    FITSDataSwapper<T> * rsw = new FITSDataSwapper<T>(fios, fcol, dtp) ;
     88    rsw->rowos = rowos;
     89    rsw->dtp = dtp;   
    7590    return rsw;
    7691  }
     
    8095  int fcol;
    8196  long rowos;
     97  BaseDataTable* dtp;
    8298};
    8399
Note: See TracChangeset for help on using the changeset viewer.