LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Private Attributes | Static Private Attributes | List of all members
lsst::ap::ScopeGuard Class Reference

Utility class for automatically invoking a function when leaving a scope. More...

#include <ScopeGuard.h>

Inheritance diagram for lsst::ap::ScopeGuard:

Public Types

typedef boost::function< void()> Base
 

Public Member Functions

template<typename F >
 ScopeGuard (F const &f)
 
 ~ScopeGuard ()
 
bool dismissed () const throw ()
 
void dismiss () throw ()
 

Private Attributes

bool _dismissed
 

Static Private Attributes

static int volatile _numGuards = 0
 

Detailed Description

Utility class for automatically invoking a function when leaving a scope.

See http://www.ddj.com/cpp/184403758 and http://www.zete.org/people/jlehrer/scopeguard.html for details on the origins and uses of this class.

Definition at line 51 of file ScopeGuard.h.

Member Typedef Documentation

typedef boost::function<void ()> lsst::ap::ScopeGuard::Base

Definition at line 55 of file ScopeGuard.h.

Constructor & Destructor Documentation

template<typename F >
lsst::ap::ScopeGuard::ScopeGuard ( F const &  f)
inlineexplicit

Definition at line 58 of file ScopeGuard.h.

58  : Base(f), _dismissed(false) {
59  ++_numGuards; // stop compiler from optimizing away entire object instances
60  }
static int volatile _numGuards
Definition: ScopeGuard.h:82
boost::function< void()> Base
Definition: ScopeGuard.h:55
lsst::ap::ScopeGuard::~ScopeGuard ( )
inline

Definition at line 62 of file ScopeGuard.h.

62  {
63  --_numGuards;
64  try {
65  if (!_dismissed) {
66  operator()();
67  }
68  } catch (...) {}
69  }
static int volatile _numGuards
Definition: ScopeGuard.h:82

Member Function Documentation

void lsst::ap::ScopeGuard::dismiss ( )
throw (
)
inline

Definition at line 74 of file ScopeGuard.h.

74  {
75  _dismissed = true;
76  }
bool lsst::ap::ScopeGuard::dismissed ( ) const
throw (
)
inline

Definition at line 71 of file ScopeGuard.h.

71  {
72  return _dismissed;
73  }

Member Data Documentation

bool lsst::ap::ScopeGuard::_dismissed
private

Definition at line 80 of file ScopeGuard.h.

int volatile lsst::ap::ScopeGuard::_numGuards = 0
staticprivate

Definition at line 82 of file ScopeGuard.h.


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