LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | List of all members
lsst::afw::fits::HduMoveGuard Class Reference

RAII scoped guard for moving the HDU in a Fits object. More...

#include <fits.h>

Public Member Functions

 HduMoveGuard ()=delete
 
 HduMoveGuard (HduMoveGuard const &)=delete
 
 HduMoveGuard (HduMoveGuard &&)=delete
 
HduMoveGuardoperator= (HduMoveGuard const &)=delete
 
HduMoveGuardoperator= (HduMoveGuard &&)=delete
 
 HduMoveGuard (Fits &fits, int hdu, bool relative=false)
 Create a guard object and set the HDU of the given Fits object at the same time. More...
 
 ~HduMoveGuard ()
 
void disable ()
 Disable the guard, leaving the HDU at its current state at destruction. More...
 

Detailed Description

RAII scoped guard for moving the HDU in a Fits object.

This class attempts to ensure that the HDU state of a Fits object is restored when the guard class goes out of scope, even in the presence of exceptions. (In practice, resetting the HDU can only fail if the Fits object has become sufficiently corrupted that it's no longer usable at all).

Definition at line 724 of file fits.h.

Constructor & Destructor Documentation

◆ HduMoveGuard() [1/4]

lsst::afw::fits::HduMoveGuard::HduMoveGuard ( )
delete

◆ HduMoveGuard() [2/4]

lsst::afw::fits::HduMoveGuard::HduMoveGuard ( HduMoveGuard const &  )
delete

◆ HduMoveGuard() [3/4]

lsst::afw::fits::HduMoveGuard::HduMoveGuard ( HduMoveGuard &&  )
delete

◆ HduMoveGuard() [4/4]

lsst::afw::fits::HduMoveGuard::HduMoveGuard ( Fits fits,
int  hdu,
bool  relative = false 
)

Create a guard object and set the HDU of the given Fits object at the same time.

Parameters
[in,out]fitsFITS file pointer to manipulate.
[in]hduHDU index moved to within the lifetime of the guard object (0 is primary).
[in]relativeIf True, interpret hdu as relative to the current HDU rather than an absolute index.

Definition at line 1700 of file fits.cc.

1700  :
1701  _fits(fits),
1702  _oldHdu(_fits.getHdu()),
1703  _enabled(true)
1704 {
1705  _fits.setHdu(hdu, relative);
1706 }
Fits * fits
Definition: FitsWriter.cc:90
void setHdu(int hdu, bool relative=false)
Set the current HDU.
Definition: fits.cc:513
int getHdu()
Return the current HDU (0-indexed; 0 is the Primary HDU).
Definition: fits.cc:507

◆ ~HduMoveGuard()

lsst::afw::fits::HduMoveGuard::~HduMoveGuard ( )

Definition at line 1708 of file fits.cc.

1708  {
1709  if (!_enabled) {
1710  return;
1711  }
1712  int status = 0;
1713  std::swap(status, _fits.status); // unset error indicator, but remember the old status
1714  try {
1715  _fits.setHdu(_oldHdu);
1716  } catch (...) {
1717  LOGL_WARN(
1718  "afw.fits",
1719  makeErrorMessage(_fits.fptr, _fits.status, "Failed to move back to HDU %d").c_str(),
1720  _oldHdu
1721  );
1722  }
1723  std::swap(status, _fits.status); // reset the old status
1724 }
#define LOGL_WARN(logger, message...)
Log a warn-level message using a varargs/printf style interface.
Definition: Log.h:547
T c_str(T... args)
std::string makeErrorMessage(std::string const &fileName="", int status=0, std::string const &msg="")
Return an error message reflecting FITS I/O errors.
Definition: fits.cc:426
T swap(T... args)

Member Function Documentation

◆ disable()

void lsst::afw::fits::HduMoveGuard::disable ( )
inline

Disable the guard, leaving the HDU at its current state at destruction.

Definition at line 751 of file fits.h.

751 { _enabled = false; }

◆ operator=() [1/2]

HduMoveGuard& lsst::afw::fits::HduMoveGuard::operator= ( HduMoveGuard &&  )
delete

◆ operator=() [2/2]

HduMoveGuard& lsst::afw::fits::HduMoveGuard::operator= ( HduMoveGuard const &  )
delete

The documentation for this class was generated from the following files: