Ignore:
Timestamp:
Dec 20, 2005, 7:25:51 PM (20 years ago)
Author:
ansari
Message:

Ajout constructeur de copie (pas parfait) pour FitsInOutFile + modifs classes FitsFile/FitsInFile/FitsOutFile pour heriter de FitsInOutFile avec constructeur a partir de FitsInOutFile - Reza 20/12/2005

File:
1 edited

Legend:

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

    r2615 r2860  
    66#include "strutil.h"
    77#include "anydataobj.h"
    8 #include "fitsspherehealpix.h"
    98
    109/*!
     
    281280
    282281
    283 
    284  
     282FitsFile::FitsFile()
     283  : FitsInOutFile()
     284{
     285  InitNull();
     286}
     287
     288FitsFile::FitsFile(FitsInOutFile const& fios)
     289  : FitsInOutFile(fios)
     290{
     291  InitNull();
     292}
     293
     294
     295/*RzDel
    285296FitsFile::~FitsFile()
    286297{
    287   int status = 0;
    288     if( fptr_ != NULL)
    289     {
    290       fits_close_file(fptr_,&status);
    291       // je ne fais pas      delete fptr_, c'est la lib. fitsio qui a fait
    292       // new...
    293     }
    294    if( status )  printerror( status );
    295 }
     298  //  Close fait par le destructeur de FitsInOutFile - Reza , Dec 2005
     299  //  int status = 0;
     300  //  if( fptr_ != NULL)
     301  //    fits_close_file(fptr_,&status);
     302  // if( status )  printerror( status );
     303}
     304*/
    296305
    297306
     
    353362
    354363FitsInFile::FitsInFile()
     364  : FitsFile()
     365
    355366{
    356367  InitNull();
     
    358369
    359370FitsInFile::FitsInFile(string const & flnm)
    360 {
    361     InitNull();
     371  : FitsFile()
     372{
     373  InitNull();
     374  Open(flnm.c_str(), Fits_RO);
     375  /*RZDEL
    362376   int status = 0;
    363377   fits_open_file(&fptr_,flnm.c_str(),READONLY,&status);
    364378   if( status ) printerror( status );
     379  */
    365380}
    366381
    367382FitsInFile::FitsInFile(const char * flnm)
    368 {
    369     InitNull();
    370    int status = 0;
     383  : FitsFile()
     384{
     385  InitNull();
     386  Open(flnm, Fits_RO);
     387  /*RZDEL
     388  int status = 0;
    371389   fits_open_file(&fptr_,flnm,READONLY,&status);
    372390   if( status ) printerror( status );
     391  */
     392}
     393
     394FitsInFile::FitsInFile(FitsInOutFile const& fios)
     395  : FitsFile(fios)
     396
     397{
     398  InitNull();
     399  if (mode_ == Fits_Create)
     400    throw FitsIOException("FitsInFile::FitsInFile(FitsInOutFile const& fios) newly created fits file");
    373401}
    374402
     
    15691597
    15701598FitsOutFile::FitsOutFile()
     1599  : FitsFile()
    15711600{
    15721601  InitNull();
     
    15801609
    15811610FitsOutFile::FitsOutFile(string const & flnm, WriteMode wrm)
     1611  : FitsFile()
    15821612{
    15831613  InitNull();
     
    15861616
    15871617FitsOutFile::FitsOutFile(const char * flnm, WriteMode wrm)
     1618  : FitsFile()
    15881619{
    15891620  InitNull();
     
    15911622}
    15921623
     1624FitsOutFile::FitsOutFile(FitsInOutFile const& fios)
     1625  : FitsFile(fios)
     1626{
     1627  InitNull();
     1628  if (mode_ == Fits_RO)
     1629    throw FitsIOException("FitsOutFile::FitsOutFile(FitsInOutFile const& ) ReadOnly Fits file");
     1630}
     1631
     1632FitsOutFile::~FitsOutFile()
     1633{
     1634  if (dvlToPrimary_ != NULL) delete dvlToPrimary_;
     1635}
     1636
    15931637void FitsOutFile::openoutputfitsfile(const char * flnm, WriteMode wrm)
    15941638{
     
    15971641  // create new FITS file
    15981642  fits_create_file(&fptr_,flnm,&status);
    1599   if( status )
    1600     {
    1601 
    1602       switch (wrm)
    1603         {
     1643  if( status )    {
     1644    switch (wrm) {
    16041645      // si on veut ecrire a la fin de ce fichier
    1605         case append :
     1646    case append :
     1647      status = 0;
     1648      fits_clear_errmsg();
     1649      fits_open_file(&fptr_,flnm,READWRITE,&status);
     1650      if( status ) {
     1651        cout << " error opening file: " << flnm << endl;
     1652        printerror(status, "failure opening a file supposed to exist");
     1653      }
     1654      else cout << " file " << flnm << " opened, new objects will be appended " << endl;
     1655      fits_get_num_hdus(fptr_, &hdunum_, &status);
     1656      int hdutype;
     1657      fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status);
     1658      if( status ) {
     1659        printerror( status,":FitsFile::WriteF : erreur movabs");
     1660        throw FitsIOException("FitsOutFile::openoutputfitsfile()/fits movabs error");
     1661        break;
     1662       
     1663      case clear :
     1664        {
    16061665          status = 0;
    16071666          fits_clear_errmsg();
    1608           fits_open_file(&fptr_,flnm,READWRITE,&status);
    1609           if( status )
    1610             {
    1611               cout << " error opening file: " << flnm << endl;
    1612               printerror(status, "failure opening a file supposed to exist");
    1613             }
    1614           else cout << " file " << flnm << " opened, new objects will be appended " << endl;
    1615           fits_get_num_hdus(fptr_, &hdunum_, &status);
    1616           int hdutype;
    1617           fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status);
    1618           if( status ) printerror( status,":FitsFile::WriteF : erreur movabs");
    1619           break;
    1620        
    1621         case clear :
    1622           {
    1623             status = 0;
    1624             fits_clear_errmsg();
    1625             char* newname = new char[strlen(flnm)+2];
    1626             //
    1627             newname[0] = '!';
    1628             newname[1] = '\0';
    1629             strcat(newname, flnm);
    1630             fits_create_file(&fptr_,newname,&status);
    1631             delete [] newname;
    1632             if (status)
    1633               {
    1634                 cout << " error opening file: " << flnm << endl;
    1635                 printerror(status, "unable to open file, supposed to exist");
    1636               }
    1637             else  cout << "  WARNING : file " << flnm << " is overwritten " << endl;
    1638             break;
    1639           }
    1640         case unknown :
    1641           printerror(status, " file seems already to exist");
    1642           break;
    1643      
    1644         }
    1645     }
     1667          char* newname = new char[strlen(flnm)+2];
     1668          //
     1669          newname[0] = '!';
     1670          newname[1] = '\0';
     1671          strcat(newname, flnm);
     1672          fits_create_file(&fptr_,newname,&status);
     1673          delete [] newname;
     1674          if (status) {
     1675            cout << " error opening file: " << flnm << endl;
     1676            printerror(status, "unable to open file, supposed to exist");
     1677            throw FitsIOException("FitsOutFile::openoutputfitsfile()/fits open Error ");
     1678          }
     1679          else  cout << "  WARNING : file " << flnm << " is overwritten " << endl;
     1680          break;
     1681        }
     1682      case unknown :
     1683        printerror(status, " file seems already to exist");
     1684        throw FitsIOException("FitsOutFile::openoutputfitsfile()/fits open Error - existing file");
     1685        break;
     1686      }
     1687    }
     1688  }
     1689  fname_ = flnm;
     1690  if ( wrm == append ) mode_ = Fits_RW;
     1691  else mode_ = Fits_Create;
     1692  ownfptr = true;
    16461693}
    16471694
Note: See TracChangeset for help on using the changeset viewer.