Ignore:
Timestamp:
Aug 24, 2000, 12:18:02 PM (25 years ago)
Author:
ansari
Message:

structuration a la ppersist+ convention sur hdu

File:
1 edited

Legend:

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

    r1047 r1136  
    2323  ownobj_ = true;
    2424
    25   ReadF(inputfile,hdunum);
     25  Read(inputfile,hdunum);
    2626}
    2727
     
    4141FITS_XNTuple::~FITS_XNTuple()
    4242{
    43   Clean();
    44 }
    45 
    46 void FITS_XNTuple::Clean()
    47 {
    48   if (dcolumn_ != NULL) delete [] dcolumn_;
    49   if (fcolumn_ != NULL) delete [] fcolumn_;
    50   if (icolumn_ != NULL) delete [] icolumn_;
    51   if (ccolumn_ != NULL)
    52     {
    53       if (dobj_ != NULL)
    54         {
    55           for (int k=0; k<dobj_->NEntry(); k++) delete [] ccolumn_[k];
    56           delete [] ccolumn_;
    57         }
    58       else
    59         {
    60           cout << "FITS_XNTuple, destructeur: bizarre, ccolumn non vide, sans objet?" << endl;;         }
    61     }
    6243  if (ownobj_ && dobj_ != NULL) delete dobj_;
    6344}
    6445
    65 void FITS_XNTuple::Read(char inputfile[],int hdunum)
    66 {
    67   ReadF(inputfile,hdunum);
    68 }
    6946
    7047void FITS_XNTuple::ReadLines(char inputfile[],int firstLine, int numberOfLines,int hdunum)
     
    7249  fistLineToBeRead_ = firstLine;
    7350  numberOfLinesToBeRead_ = numberOfLines;
    74   ReadF(inputfile,hdunum);
    75   //  return dobj_;
    76 }
    77 
    78 
    79 void FITS_XNTuple::Write(char outputfile[], bool OldFile)
    80 {       
    81   WriteF(outputfile, OldFile);
    82 }
     51  Read(inputfile,hdunum);
     52}
     53
     54
    8355 
    84 void FITS_XNTuple::ReadFromFits()
     56void FITS_XNTuple::ReadFromFits(FitsInFile& is)
    8557{   
    86   //  if (!fn.IsFitsTable())
    87   if (!IsFitsTable())
     58  if (!is.IsFitsTable())
    8859    {
    8960      throw PException("ReadFromFits: the fits file seems not to be a bintable nor ASCII table");
    9061    }
    9162  int nbcols, nbentries;
    92   //  nbcols = fn.NbColsFromFits();
    93   nbcols = NbColsFromFits();
     63  nbcols = is.NbColsFromFits();
    9464  nbentries = 0;
    9565  int k;
    96   //  for (k=0; k<nbcols; k++) nbentries=max( nbentries, fn.NentriesFromFits(k) );
    97   for (k=0; k<nbcols; k++) nbentries=max( nbentries, NentriesFromFits(k) );
     66  for (k=0; k<nbcols; k++) nbentries=max( nbentries, is.NentriesFromFits(k) );
    9867
    9968  //
     
    11180  for (k=0; k<nbcols;k++)
    11281    {
    113       //      char ss= fn.ColTypeFromFits(k);
    114       char ss= ColTypeFromFits(k);
     82      char ss= is.ColTypeFromFits(k);
    11583      if (ss == 'D') DfitsCol.push_back(k);
    11684      else if (ss == 'E') FfitsCol.push_back(k);
     
    12795    {
    12896      ColName[compt] = new char[LONNOM+1];
    129       //      strncpy(ColName[compt], fn.ColNameFromFits(DfitsCol[k]).c_str(), LONNOM);
    130       strncpy(ColName[compt], ColNameFromFits(DfitsCol[k]).c_str(), LONNOM);
     97      strncpy(ColName[compt], is.ColNameFromFits(DfitsCol[k]).c_str(), LONNOM);
    13198      ColName[compt++][ LONNOM] =  '\0';
    13299    }
     
    134101    {
    135102      ColName[compt] = new char[LONNOM+1];
    136       //      strncpy(ColName[compt], fn.ColNameFromFits(FfitsCol[k]).c_str(), LONNOM);
    137       strncpy(ColName[compt], ColNameFromFits(FfitsCol[k]).c_str(), LONNOM);
     103      strncpy(ColName[compt], is.ColNameFromFits(FfitsCol[k]).c_str(), LONNOM);
    138104      ColName[compt++][ LONNOM] =  '\0';
    139105    }
     
    141107    {
    142108      ColName[compt] = new char[LONNOM+1];
    143       //      strncpy(ColName[compt], fn.ColNameFromFits(IfitsCol[k]).c_str(), LONNOM);
    144       strncpy(ColName[compt], ColNameFromFits(IfitsCol[k]).c_str(), LONNOM);
     109      strncpy(ColName[compt], is.ColNameFromFits(IfitsCol[k]).c_str(), LONNOM);
    145110      ColName[compt++][ LONNOM] =  '\0';
    146111    }
     
    148113    {
    149114      ColName[compt] = new char[LONNOM+1];
    150       //      strncpy(ColName[compt], fn.ColNameFromFits(SfitsCol[k]).c_str(), LONNOM);
    151       strncpy(ColName[compt], ColNameFromFits(SfitsCol[k]).c_str(), LONNOM);
     115      strncpy(ColName[compt], is.ColNameFromFits(SfitsCol[k]).c_str(), LONNOM);
    152116      ColName[compt++][LONNOM] =  '\0';
    153117    }
     
    193157      cligne = new char*[SfitsCol.size()];
    194158      int  taille_des_chaines=0;
    195       //      for (k=0; k< SfitsCol.size(); k++)  taille_des_chaines = max( taille_des_chaines, fn.ColStringLengthFromFits(SfitsCol[k]) );
    196       for (k=0; k< SfitsCol.size(); k++)  taille_des_chaines = max( taille_des_chaines, ColStringLengthFromFits(SfitsCol[k]) );
     159      for (k=0; k< SfitsCol.size(); k++)  taille_des_chaines = max( taille_des_chaines, is.ColStringLengthFromFits(SfitsCol[k]) );
    197160      for (k=0; k<SfitsCol.size(); k++) cligne[k]=new char[taille_des_chaines+1];
    198161    }
     
    212175  for (numLigne=firstln; numLigne < lastln; numLigne++)
    213176    {
    214       //      fn.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
    215       GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
     177      is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
    216178      dobj_->Fill(dligne, fligne, iligne, cligne);   
    217179    }
     
    221183    for (k=0; k< SfitsCol.size(); k++) delete []  cligne[k];
    222184    delete [] cligne;
    223     //  dobj_->Info()=fn.DVListFromFits();
    224   dobj_->Info()=DVListFromFits();
    225 
    226 }
    227 void FITS_XNTuple::WriteToFits()
     185  dobj_->Info()=is.DVListFromFits();
     186
     187}
     188void FITS_XNTuple::WriteToFits(FitsOutFile& os)
    228189{
    229190  if(dobj_ == NULL)
     
    270231  vector<int> StringSizes(dobj_->NSVar());
    271232  for (k=0; k< StringSizes.size(); k++) StringSizes[k]=dobj_->mStrSz;
    272   // la librairie fitsio ecrit colonne par colonne
    273   //    fn.makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes);
    274     makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes);
     233  os.makeHeaderBntblOnFits(types, Noms, nrows, ncols, dvl, extname,StringSizes);
    275234   for (k=0; k< ncols; k++)
    276235    {
     
    279238   delete [] Noms;
    280239   delete [] types;
     240
     241   
    281242  compt=0; 
    282   for (k=0; k<dobj_->NDVar();k++)
    283     {
    284       putColToFits(compt, dobj_->NEntry(), getColDFromObj(compt));
    285       compt++;
    286     }
    287   for (k=0; k<dobj_->NFVar();k++)
    288     {
    289       putColToFits(compt, dobj_->NEntry(), getColFFromObj(compt));
    290       compt++;
    291     }
    292   for (k=0; k<dobj_->NIVar();k++)
    293     {
    294       putColToFits(compt, dobj_->NEntry(), getColIFromObj(compt));
    295       compt++;
    296     }
    297   for (k=0; k<dobj_->NSVar();k++)
    298     {
    299       putColToFits(compt, dobj_->NEntry(), getColSFromObj(compt));
    300       compt++;
    301     }
    302 }
    303 double* FITS_XNTuple::getColDFromObj(int colNr)
    304 {
    305   if (dcolumn_ != NULL)
    306     {
    307       delete [] dcolumn_;
    308       dcolumn_ = NULL;
    309     }
    310   dcolumn_ = new double[dobj_->NEntry()];
    311   for(int j = 0; j < dobj_->NEntry(); j++) dcolumn_[j]= dobj_->GetDVal(j,colNr);
    312   return dcolumn_;
    313 }
    314 
    315 float* FITS_XNTuple::getColFFromObj(int colNr)
    316 {
    317   if (fcolumn_ != NULL)
    318     {
    319       delete [] fcolumn_;
    320       fcolumn_ = NULL;
    321     }
    322   fcolumn_ = new float[dobj_->NEntry()];
    323   for(int j = 0; j < dobj_->NEntry(); j++) fcolumn_[j]= dobj_->GetFVal(j,colNr);
    324   return fcolumn_;
    325 }
    326  
    327 int* FITS_XNTuple::getColIFromObj(int colNr)
    328 {
    329   if (icolumn_ != NULL)
    330     {
    331       delete [] icolumn_;
    332       icolumn_ = NULL;
    333     }
    334   icolumn_ = new int[dobj_->NEntry()];
    335   for(int j = 0; j < dobj_->NEntry(); j++) icolumn_[j]= dobj_->GetIVal(j,colNr);
    336   return icolumn_;
    337 }
    338 char** FITS_XNTuple::getColSFromObj(int colNr)
    339 {
    340   if (ccolumn_ != NULL)
    341     {
    342       for (int k=0; k<dobj_->NEntry(); k++) delete [] ccolumn_[k];
    343       delete [] ccolumn_;
    344       ccolumn_ = NULL;
    345     }
    346   ccolumn_ = new char*[dobj_->NEntry()];
    347   for(int j = 0; j < dobj_->NEntry(); j++)
    348     {
    349       string s= dobj_->GetSVal(j,colNr);
    350       ccolumn_[j] = new char[dobj_->mStrSz+1];
    351       strcpy(ccolumn_[j],s.c_str());
    352     }
    353   return ccolumn_;
    354 }
     243   if (dobj_->NDVar() > 0)
     244     {
     245       double* dcolumn = new double[nrows];
     246       for (k=0; k<dobj_->NDVar();k++)
     247         {
     248           for(int j = 0; j < nrows; j++) dcolumn[j]= dobj_->GetDVal(j,compt);
     249           os.putColToFits(compt, nrows, dcolumn);
     250           compt++;
     251         }
     252       delete [] dcolumn;
     253     }
     254
     255   if (dobj_->NFVar() > 0)
     256     {
     257       float* fcolumn = new float[nrows];
     258       for (k=0; k<dobj_->NFVar();k++)
     259         {
     260           for(int j = 0; j < nrows; j++) fcolumn[j]= dobj_->GetFVal(j,compt);
     261           os.putColToFits(compt, nrows, fcolumn);
     262           compt++;
     263         }
     264       delete [] fcolumn;
     265     }
     266
     267   if (dobj_->NIVar() > 0)
     268     {
     269       int* icolumn = new int[nrows];
     270       for (k=0; k<dobj_->NIVar();k++)
     271         {
     272           for(int j = 0; j < nrows; j++) icolumn[j]= dobj_->GetIVal(j,compt);
     273           os.putColToFits(compt, nrows, icolumn);
     274           compt++;
     275         }
     276       delete [] icolumn;
     277     }
     278
     279   if (dobj_->NSVar() > 0)
     280     {
     281      char**  ccolumn = new char*[nrows];
     282      for (k=0; k<dobj_->NSVar();k++)
     283        {
     284          int j;
     285          for(j = 0; j < nrows; j++)
     286            {
     287              string s= dobj_->GetSVal(j,compt);
     288              ccolumn[j] = new char[dobj_->mStrSz+1];
     289              strcpy(ccolumn[j],s.c_str());
     290            }
     291          os.putColToFits(compt, nrows, ccolumn);
     292          compt++;
     293          for(j = 0; j < nrows; j++)
     294            {
     295              delete [] ccolumn[j];
     296              ccolumn[j] = NULL;
     297            }
     298        }
     299      delete [] ccolumn;
     300     }
     301}
Note: See TracChangeset for help on using the changeset viewer.