Skip to content
  • Pedro Alves's avatar
    Introduce scope_exit · 54b65c9b
    Pedro Alves authored
    This add a new template class scope_exit.  scope_exit is a
    general-purpose scope guard that calls its exit function at the end of
    the current scope.  A scope_exit may be canceled by calling the
    "release" method.  The API is modeled on P0052R5 - Generic Scope Guard
    and RAII Wrapper for the Standard Library, which is itself based on
    Andrej Alexandrescu's ScopeGuard/SCOPE_EXIT.
    
    The main advantage of scope_exit is avoiding writing single-use RAII
    classes and its boilerplate.  Following patches will remove a few of
    such classes.
    
    There are two forms available:
    
     - The "make_scope_exit" form allows canceling the scope guard.  Use
       it like this:
    
         auto cleanup = make_scope_exit ( <function, function object, lambda> );
         ...
         cleanup.release (); // cancel
    
     - If you don't need to cancel the guard, you can use the SCOPE_EXIT
       macro, like this:
    
         SCOPE_EXIT { /* any code you like here. */ }
    
    Note: scope_exit instances do not allocate anything on the heap.
    
    gdb/ChangeLog:
    2019-01-23  Pedro Alves  <palves@redhat.com>
    	    Andrew Burgess  <andrew.burgess@embecosm.com>
    	    Tom Tromey  <tom@tromey.com>
    
    	* common/scope-exit.h: New file.
    54b65c9b
To find the state of this project's repository at the time of any of these versions, check out the tags.