Ignore:
Timestamp:
Jan 2, 2006, 2:47:44 PM (20 years ago)
Author:
ansari
Message:

1/ Ajout methode CheckReadability() , retour int pour CheckHandling() ds l'interface FitsHandler et propagation vers handler TArray et DataTable
2/ Correction dans FitsManager et ajout initialiseur de module FitsIOServer (fiosinit.h .cc)
3/ FitsSwapper complete - corrige - full template (suppression de fitsswapper.cc)
4/ MAJ Makefile et objlist.list suite ajout fiosinit.cc et swfitsdtable

Reza , 2 Jan 2006

File:
1 edited

Legend:

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

    r2844 r2864  
    55#include <string>
    66#include "tarray.h"
     7#include "tvector.h"
    78
    89#include "fitshandler.h"
     10#include "fitsblkrw.h"
    911
    1012namespace SOPHYA {
     
    2325  virtual   AnyDataObj* DataObj() { return(dobj); }
    2426
    25   virtual   bool        CheckHandling(AnyDataObj & o)
     27  virtual   int         CheckHandling(AnyDataObj & o)
    2628  { 
     29    if ( (typeid(o) == typeid(TArray<T>)) ||
     30         (typeid(o) == typeid(TMatrix<T>)) ||
     31         (typeid(o) == typeid(TVector<T>)) )  return 2;
    2732    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;
    3035  }
     36
    3137  virtual   void        SetDataObj(AnyDataObj & o)
    3238  { 
     
    3844    }
    3945    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;
    4057  }
    4158
     
    5673      os.CreateImageHDU(FitsTypes::ImageType(x), dobj->NbDimensions(), naxes);
    5774      os.WriteHeaderRecords(dobj->Info());
     75      MuTyV mtv;
     76      mtv = "SOPHYA::TArray<T>";
     77      os.WriteKey("SOPCLSNM",mtv," Object class name ");
    5878      FitsBlockRW<T>::WriteImageData(os, dobj->Data(), dobj->Size());
    5979    }
     
    6282  virtual void     Read(FitsInOutFile& is)
    6383    {
    64       if ( dobj == NULL)
    65         throw NullPtrError("FitsArrayHandler<T>::Read() dobj=NULL ");
    6684      long naxes[BASEARRAY_MAXNDIMS];
    6785      int naxis=BASEARRAY_MAXNDIMS;
    6886      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      }
    6993      sa_size_t sz[BASEARRAY_MAXNDIMS];
    7094      if (naxis > BASEARRAY_MAXNDIMS) naxis = BASEARRAY_MAXNDIMS;
Note: See TracChangeset for help on using the changeset viewer.