Botan 3.11.0
Crypto and TLS for C&
Botan::scoped_cleanup< FunT > Class Template Referencefinal

Helper class to create a RAII-style cleanup callback. More...

#include <scoped_cleanup.h>

Public Member Functions

void disengage () noexcept
scoped_cleanupoperator= (const scoped_cleanup &)=delete
scoped_cleanupoperator= (scoped_cleanup &&other) noexcept
 scoped_cleanup (const scoped_cleanup &)=delete
 scoped_cleanup (FunT cleanup)
 scoped_cleanup (scoped_cleanup &&other) noexcept
 ~scoped_cleanup ()

Detailed Description

template<std::invocable FunT>
class Botan::scoped_cleanup< FunT >

Helper class to create a RAII-style cleanup callback.

Ensures that the cleanup callback given in the object's constructor is called when the object is destroyed. Use this to ensure some cleanup code runs when leaving the current scope.

Definition at line 24 of file scoped_cleanup.h.

Constructor & Destructor Documentation

◆ scoped_cleanup() [1/3]

template<std::invocable FunT>
Botan::scoped_cleanup< FunT >::scoped_cleanup ( FunT cleanup)
inlineexplicit

Definition at line 26 of file scoped_cleanup.h.

26: m_cleanup(std::move(cleanup)) {}
Helper class to create a RAII-style cleanup callback.

Referenced by operator=(), operator=(), scoped_cleanup(), and scoped_cleanup().

◆ scoped_cleanup() [2/3]

template<std::invocable FunT>
Botan::scoped_cleanup< FunT >::scoped_cleanup ( const scoped_cleanup< FunT > & )
delete

References scoped_cleanup().

◆ scoped_cleanup() [3/3]

template<std::invocable FunT>
Botan::scoped_cleanup< FunT >::scoped_cleanup ( scoped_cleanup< FunT > && other)
inlinenoexcept

Definition at line 31 of file scoped_cleanup.h.

31: m_cleanup(std::move(other.m_cleanup)) { other.disengage(); }
void disengage() noexcept

References scoped_cleanup().

◆ ~scoped_cleanup()

template<std::invocable FunT>
Botan::scoped_cleanup< FunT >::~scoped_cleanup ( )
inline

Definition at line 41 of file scoped_cleanup.h.

41 {
42 if(m_cleanup.has_value()) {
43 (*m_cleanup)(); // NOLINT(bugprone-exception-escape) clang-tidy bug
44 }
45 }

Member Function Documentation

◆ disengage()

template<std::invocable FunT>
void Botan::scoped_cleanup< FunT >::disengage ( )
inlinenoexcept

Disengage the cleanup callback, i.e., prevent it from being called

Definition at line 50 of file scoped_cleanup.h.

50{ m_cleanup.reset(); }

◆ operator=() [1/2]

template<std::invocable FunT>
scoped_cleanup & Botan::scoped_cleanup< FunT >::operator= ( const scoped_cleanup< FunT > & )
delete

References scoped_cleanup().

◆ operator=() [2/2]

template<std::invocable FunT>
scoped_cleanup & Botan::scoped_cleanup< FunT >::operator= ( scoped_cleanup< FunT > && other)
inlinenoexcept

Definition at line 33 of file scoped_cleanup.h.

33 {
34 if(this != &other) {
35 m_cleanup = std::move(other.m_cleanup);
37 }
38 return *this;
39 }

References scoped_cleanup().


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