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.
component_list.hpp File Reference
#include "timemory/backends/dmp.hpp"
#include "timemory/general/source_location.hpp"
#include "timemory/mpl/apply.hpp"
#include "timemory/mpl/filters.hpp"
#include "timemory/operations/types.hpp"
#include "timemory/settings/declaration.hpp"
#include "timemory/utility/macros.hpp"
#include "timemory/variadic/bundle.hpp"
#include "timemory/variadic/functional.hpp"
#include "timemory/variadic/types.hpp"
#include <cstdint>
#include <cstdio>
#include <string>
+ Include dependency graph for component_list.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  tim::component_list< Types >
 This is a variadic component wrapper where all components are optional at runtime. Accept unlimited number of parameters. The default behavior is to query the TIMEMORY_COMPONENT_LIST_INIT environment variable once (the first time the bundle is used) and use that list of components (if any) to initialize the components which are part of it's template parameters. This behavior can be modified by assigning a new lambda/functor to the reference which is returned from tim::component_list<Types...>::get_initializer(). Assignment is not thread-safe since this is relatively unnecessary... if a different set of components are required on a particular thread, just create a different type with those particular components or pass the initialization functor to the constructor. More...
 

Namespaces

namespace  tim
 
namespace  std
 STL namespace.
 

Functions

template<typename... Types>
auto tim::get (const component_list< Types... > &_obj) -> decltype(std::declval< component_list< Types... > >().get())
 
template<typename... Types>
auto tim::get_labeled (const component_list< Types... > &_obj) -> decltype(std::declval< component_list< Types... > >().get_labeled())
 
template<std::size_t N, typename... Types>
std::tuple_element< N, std::tuple< Types... > >::type & std::get (tim::component_list< Types... > &obj)
 
template<std::size_t N, typename... Types>
const std::tuple_element< N, std::tuple< Types... > >::type & std::get (const tim::component_list< Types... > &obj)
 
template<std::size_t N, typename... Types>
auto std::get (tim::component_list< Types... > &&obj) -> decltype(get< N >(std::forward< tim::component_list< Types... > >(obj).data()))