timemory 3.3.0
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
tim::operation::generic_deleter< Tp > Struct Template Reference

#include "timemory/operations/types/generic.hpp"

+ Collaboration diagram for tim::operation::generic_deleter< Tp >:

Public Types

using type = Tp
 

Public Member Functions

 TIMEMORY_DELETED_OBJECT (generic_deleter) explicit generic_deleter(type *&obj)
 
template<typename Up , enable_if_t< std::is_pointer< Up >::value, int > = 0>
 generic_deleter (Up &&obj)
 
template<typename... Deleter>
 generic_deleter (std::unique_ptr< type, Deleter... > &obj)
 
 generic_deleter (std::shared_ptr< type > obj)
 
template<typename Up , enable_if_t<!std::is_pointer< Up >::value, int > = 0>
 generic_deleter (Up &&)
 

Detailed Description

template<typename Tp>
struct tim::operation::generic_deleter< Tp >

Definition at line 318 of file generic.hpp.

Member Typedef Documentation

◆ type

template<typename Tp >
using tim::operation::generic_deleter< Tp >::type = Tp

Definition at line 320 of file generic.hpp.

Constructor & Destructor Documentation

◆ generic_deleter() [1/4]

template<typename Tp >
template<typename Up , enable_if_t< std::is_pointer< Up >::value, int > = 0>
tim::operation::generic_deleter< Tp >::generic_deleter ( Up &&  obj)
inlineexplicit

Definition at line 333 of file generic.hpp.

334 {
335 DEBUG_PRINT_HERE("%s %s :: %p", "deleting pointer rvalue",
336 demangle<type>().c_str(), (void*) obj);
337 delete obj;
338 std::ref(std::forward<Up>(obj)).get() = nullptr;
339 }
#define DEBUG_PRINT_HERE(...)
Definition: macros.hpp:168

References DEBUG_PRINT_HERE.

◆ generic_deleter() [2/4]

template<typename Tp >
template<typename... Deleter>
tim::operation::generic_deleter< Tp >::generic_deleter ( std::unique_ptr< type, Deleter... > &  obj)
inlineexplicit

Definition at line 342 of file generic.hpp.

343 {
344 DEBUG_PRINT_HERE("%s %s :: %p", "deleting unique_ptr", demangle<type>().c_str(),
345 (void*) obj.get());
346 obj.reset();
347 }

References DEBUG_PRINT_HERE.

◆ generic_deleter() [3/4]

template<typename Tp >
tim::operation::generic_deleter< Tp >::generic_deleter ( std::shared_ptr< type obj)
inlineexplicit

Definition at line 349 of file generic.hpp.

350 {
351 DEBUG_PRINT_HERE("%s %s :: %p", "deleting shared_ptr", demangle<type>().c_str(),
352 (void*) obj.get());
353 obj.reset();
354 }

References DEBUG_PRINT_HERE.

◆ generic_deleter() [4/4]

template<typename Tp >
template<typename Up , enable_if_t<!std::is_pointer< Up >::value, int > = 0>
tim::operation::generic_deleter< Tp >::generic_deleter ( Up &&  )
inlineexplicit

Definition at line 357 of file generic.hpp.

358 {}

Member Function Documentation

◆ TIMEMORY_DELETED_OBJECT()

template<typename Tp >
tim::operation::generic_deleter< Tp >::TIMEMORY_DELETED_OBJECT ( generic_deleter< Tp >  ) &
inline

Definition at line 322 of file generic.hpp.

325 {
326 DEBUG_PRINT_HERE("%s %s :: %p", "deleting pointer lvalue",
327 demangle<type>().c_str(), (void*) obj);
328 delete obj;
329 obj = nullptr;
330 }

References DEBUG_PRINT_HERE.


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