LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
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: