RAVENNAKIT
Loading...
Searching...
No Matches
rav::Defer< Fn > Class Template Reference

A class that holds a rollback function, calling it upon destruction unless a commit is made. More...

#include <defer.hpp>

Public Member Functions

 Defer (Fn &&rollback_function)
 Constructs a rollback object with an initial rollback function.
 ~Defer ()
 Destructor that executes all registered rollback functions if not committed.
 Defer (const Defer &)=delete
Defer & operator= (const Defer &)=delete
 Defer (Defer &&)=delete
Defer & operator= (Defer &&)=delete
void reset ()
 Calls the stored lambda right away, if one exists.
void release ()
 Release the lambda to not be called during destruction.

Detailed Description

template<class Fn>
class rav::Defer< Fn >

A class that holds a rollback function, calling it upon destruction unless a commit is made.

This serves as an alternative to the 'goto cleanup' pattern in C, providing a mechanism to roll back changes if subsequent operations fail. The class is exception-safe if given function is exception safe.

Definition at line 40 of file defer.hpp.

Constructor & Destructor Documentation

◆ Defer() [1/3]

template<class Fn>
rav::Defer< Fn >::Defer ( Fn && rollback_function)
inlineexplicit

Constructs a rollback object with an initial rollback function.

Parameters
rollback_functionThe function to execute upon destruction if not committed.

Definition at line 46 of file defer.hpp.

◆ ~Defer()

template<class Fn>
rav::Defer< Fn >::~Defer ( )
inline

Destructor that executes all registered rollback functions if not committed.

Definition at line 51 of file defer.hpp.

◆ Defer() [2/3]

template<class Fn>
rav::Defer< Fn >::Defer ( const Defer< Fn > & )
delete

◆ Defer() [3/3]

template<class Fn>
rav::Defer< Fn >::Defer ( Defer< Fn > && )
delete

Member Function Documentation

◆ operator=() [1/2]

template<class Fn>
Defer & rav::Defer< Fn >::operator= ( const Defer< Fn > & )
delete

◆ operator=() [2/2]

template<class Fn>
Defer & rav::Defer< Fn >::operator= ( Defer< Fn > && )
delete

◆ release()

template<class Fn>
void rav::Defer< Fn >::release ( )
inline

Release the lambda to not be called during destruction.

Definition at line 78 of file defer.hpp.

◆ reset()

template<class Fn>
void rav::Defer< Fn >::reset ( )
inline

Calls the stored lambda right away, if one exists.

Definition at line 68 of file defer.hpp.


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