Changeset 2864 in Sophya for trunk/SophyaExt/FitsIOServer/fitsarrhand.h
- Timestamp:
- Jan 2, 2006, 2:47:44 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsarrhand.h
r2844 r2864 5 5 #include <string> 6 6 #include "tarray.h" 7 #include "tvector.h" 7 8 8 9 #include "fitshandler.h" 10 #include "fitsblkrw.h" 9 11 10 12 namespace SOPHYA { … … 23 25 virtual AnyDataObj* DataObj() { return(dobj); } 24 26 25 virtual boolCheckHandling(AnyDataObj & o)27 virtual int CheckHandling(AnyDataObj & o) 26 28 { 29 if ( (typeid(o) == typeid(TArray<T>)) || 30 (typeid(o) == typeid(TMatrix<T>)) || 31 (typeid(o) == typeid(TVector<T>)) ) return 2; 27 32 TArray<T> * po = dynamic_cast< TArray<T> * >(& o); 28 if (po == NULL) return false;29 else return true;33 if (po == NULL) return 0; 34 else return 1; 30 35 } 36 31 37 virtual void SetDataObj(AnyDataObj & o) 32 38 { … … 38 44 } 39 45 if (ownobj && dobj) delete dobj; dobj = po; ownobj = false; 46 } 47 48 virtual int CheckReadability(FitsInOutFile& is) 49 { 50 if (is.CurrentHDUType() != IMAGE_HDU) return 0; 51 T x = 0; 52 long naxes[BASEARRAY_MAXNDIMS]; 53 int naxis=BASEARRAY_MAXNDIMS; 54 if (FitsTypes::ImageType(x) == is.GetImageHDUInfo(naxis, naxes)) 55 return 2; 56 else return 1; 40 57 } 41 58 … … 56 73 os.CreateImageHDU(FitsTypes::ImageType(x), dobj->NbDimensions(), naxes); 57 74 os.WriteHeaderRecords(dobj->Info()); 75 MuTyV mtv; 76 mtv = "SOPHYA::TArray<T>"; 77 os.WriteKey("SOPCLSNM",mtv," Object class name "); 58 78 FitsBlockRW<T>::WriteImageData(os, dobj->Data(), dobj->Size()); 59 79 } … … 62 82 virtual void Read(FitsInOutFile& is) 63 83 { 64 if ( dobj == NULL)65 throw NullPtrError("FitsArrayHandler<T>::Read() dobj=NULL ");66 84 long naxes[BASEARRAY_MAXNDIMS]; 67 85 int naxis=BASEARRAY_MAXNDIMS; 68 86 is.GetImageHDUInfo(naxis, naxes); 87 if ( dobj == NULL) { 88 if (naxis == 1) dobj = new TVector<T>; 89 else if (naxis == 1) dobj = new TMatrix<T>; 90 else dobj = new TArray<T>; 91 ownobj = true; 92 } 69 93 sa_size_t sz[BASEARRAY_MAXNDIMS]; 70 94 if (naxis > BASEARRAY_MAXNDIMS) naxis = BASEARRAY_MAXNDIMS;
Note:
See TracChangeset
for help on using the changeset viewer.