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::manager::get_storage< Types > Struct Template Reference

This is used to apply/query storage data for multiple component types. More...

#include "timemory/manager/manager.hpp"

+ Collaboration diagram for tim::manager::get_storage< Types >:

Public Types

using base_type = filtered_get_storage< mpl::implemented_t< Types... > >
 

Static Public Member Functions

static void initialize (pointer_t _manager={})
 
static std::string serialize (pointer_t _manager={}, const enum_set_t &={})
 
static std::string serialize (const enum_set_t &_types)
 
static void clear (pointer_t _manager={}, const enum_set_t &={})
 
static void clear (const enum_set_t &_types)
 
static void print (pointer_t _manager={}, const enum_set_t &={})
 
static void print (const enum_set_t &_types)
 
static uint64_t size (pointer_t _manager={})
 
static enum_map_t< uint64_t > size (pointer_t _manager, const enum_set_t &)
 
static enum_map_t< uint64_t > size (const enum_set_t &_types)
 

Detailed Description

template<typename... Types>
struct tim::manager::get_storage< Types >

This is used to apply/query storage data for multiple component types.

using types = tim::available_types_t; // type-list of all enumerated types
manager_t::get_storage<types>::clear(); // clear storage for all enumerated types
typename available_types< std::make_index_sequence< TIMEMORY_COMPONENTS_END > >::type available_types_t
Definition: types.hpp:236

Definition at line 272 of file manager.hpp.

Member Typedef Documentation

◆ base_type

template<typename... Types>
using tim::manager::get_storage< Types >::base_type = filtered_get_storage<mpl::implemented_t<Types...> >

Definition at line 274 of file manager.hpp.

Member Function Documentation

◆ clear() [1/2]

template<typename... Types>
static void tim::manager::filtered_get_storage< Types >::clear ( const enum_set_t _types)
inlinestaticinherited

Definition at line 234 of file manager.hpp.

235 {
236 clear(pointer_t{ nullptr }, _types);
237 }
std::shared_ptr< this_type > pointer_t
Definition: manager.hpp:73

◆ clear() [2/2]

template<typename... Types>
void tim::manager::filtered_get_storage< Types >::clear ( pointer_t  _manager = {},
const enum_set_t _types = {} 
)
staticinherited

Definition at line 675 of file manager.hpp.

677{
678 if(_manager.get() == nullptr)
679 _manager = manager::instance();
680 if(!_manager)
681 return;
682 TIMEMORY_FOLD_EXPRESSION(_manager->do_clear<Types>(_types));
683}
static pointer_t instance()
Get a shared pointer to the instance for the current thread.
#define TIMEMORY_FOLD_EXPRESSION(...)
Definition: types.hpp:56

◆ initialize()

template<typename... Types>
void tim::manager::filtered_get_storage< Types >::initialize ( pointer_t  _manager = {})
staticinherited

Definition at line 635 of file manager.hpp.

636{
637 if(_manager.get() == nullptr)
638 _manager = manager::instance();
639 if(!_manager)
640 return;
641 TIMEMORY_FOLD_EXPRESSION(_manager->do_init_storage<Types>());
642}

◆ print() [1/2]

template<typename... Types>
static void tim::manager::filtered_get_storage< Types >::print ( const enum_set_t _types)
inlinestaticinherited

Definition at line 239 of file manager.hpp.

240 {
241 print(pointer_t{ nullptr }, _types);
242 }
void print(std::ostream &os, Args &&... args)
Definition: functional.cpp:159

◆ print() [2/2]

template<typename... Types>
void tim::manager::filtered_get_storage< Types >::print ( pointer_t  _manager = {},
const enum_set_t _types = {} 
)
staticinherited

Definition at line 689 of file manager.hpp.

691{
692 if(_manager.get() == nullptr)
693 _manager = manager::instance();
694 if(!_manager)
695 return;
696 TIMEMORY_FOLD_EXPRESSION(_manager->do_print_storage<Types>(_types));
697}

◆ serialize() [1/2]

template<typename... Types>
static std::string tim::manager::filtered_get_storage< Types >::serialize ( const enum_set_t _types)
inlinestaticinherited

Definition at line 229 of file manager.hpp.

230 {
231 return serialize(pointer_t{ nullptr }, _types);
232 }
void serialize(std::string fname, exec_data< Counter > &obj)
Definition: counter.hpp:325

◆ serialize() [2/2]

template<typename... Types>
std::string tim::manager::filtered_get_storage< Types >::serialize ( pointer_t  _manager = {},
const enum_set_t _types = {} 
)
staticinherited

Definition at line 648 of file manager.hpp.

650{
651 if(_manager.get() == nullptr)
652 _manager = manager::instance();
653 if(!_manager)
654 return "";
655 std::stringstream ss;
656 {
657 using archive_type = trait::output_archive_t<manager>;
658 using policy_type = policy::output_archive_t<manager>;
659 auto oa = policy_type::get(ss);
660 oa->setNextName("timemory");
661 oa->startNode();
662 {
664 _manager->do_serialize<archive_type, Types>(*oa, _types));
665 }
666 oa->finishNode();
667 }
668 return ss.str();
669}
auto get(const auto_bundle< Tag, Types... > &_obj)

◆ size() [1/3]

template<typename... Types>
static enum_map_t< uint64_t > tim::manager::filtered_get_storage< Types >::size ( const enum_set_t _types)
inlinestaticinherited

Definition at line 244 of file manager.hpp.

245 {
246 return size(pointer_t{ nullptr }, _types);
247 }

◆ size() [2/3]

template<typename... Types>
manager::enum_map_t< uint64_t > tim::manager::filtered_get_storage< Types >::size ( pointer_t  _manager,
const enum_set_t _types 
)
staticinherited

Definition at line 718 of file manager.hpp.

720{
721 if(_manager.get() == nullptr)
722 _manager = manager::instance();
723
724 enum_map_t<uint64_t> _sz{};
725 if(_manager)
726 {
727 for(const auto& itr : _types)
728 _sz.insert({ itr, 0 });
729 TIMEMORY_FOLD_EXPRESSION(_manager->do_size<Types>(_sz));
730 }
731 return _sz;
732}

◆ size() [3/3]

template<typename... Types>
uint64_t tim::manager::filtered_get_storage< Types >::size ( pointer_t  _manager = {})
staticinherited

Definition at line 703 of file manager.hpp.

704{
705 if(_manager.get() == nullptr)
706 _manager = manager::instance();
707 if(!_manager)
708 return 0;
709 uint64_t _sz = 0;
710 TIMEMORY_FOLD_EXPRESSION(_manager->do_size<Types>(_sz));
711 return _sz;
712}

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