Changeset 3069 in Sophya for trunk/SophyaExt/FitsIOServer/fitsswapper.h
- Timestamp:
- Sep 8, 2006, 4:30:31 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsswapper.h
r2896 r3069 11 11 #include "fitsinoutfile.h" 12 12 #include "fitsblkrw.h" 13 14 #include "basedtable.h" 13 15 14 16 /*! … … 25 27 public: 26 28 FITSDataSwapper() 27 : fcol(0) , rowos(1) 29 : fcol(0) , rowos(1) , dtp(NULL) 28 30 { 29 31 } 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) 32 34 { 33 35 } 34 36 35 37 inline FitsInOutFile & InOutStream() { return fios; } 38 36 39 void SetInOutStream(FitsInOutFile & ios, int col) 37 40 { … … 53 56 fcol = a.fcol; 54 57 rowos = a.rowos; 58 dtp = a.dtp; 55 59 } 56 60 … … 60 64 long row = rowos; 61 65 if (osw) row = oswp; 66 if (dtp != NULL) 67 if ((row+sz-1) > dtp->NRows() ) sz = dtp->NRows()-row+1; 62 68 FitsBlockRW<T>::WriteColumnData(fios, fcol, row, 1, d, sz); 63 69 if (!osw) rowos += sz; … … 67 73 virtual void ReadFromSwap(int_8 idx, int_8 swp, T* d, size_t sz) 68 74 { 75 long nrows = fios.GetNbRows(); 76 size_t szi = sz; 77 if ((swp+sz-1) > nrows) sz = nrows-swp+1; 69 78 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 } 70 83 } 71 84 72 85 virtual DataSwapperInterface<T>* Clone() 73 86 { 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; 75 90 return rsw; 76 91 } … … 80 95 int fcol; 81 96 long rowos; 97 BaseDataTable* dtp; 82 98 }; 83 99
Note:
See TracChangeset
for help on using the changeset viewer.