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::invoke Namespace Reference

Namespaces

namespace  disjoint
 

Functions

template<typename... Args>
void print (std::ostream &os, Args &&... args)
 
template<typename... Args>
void print (std::ostream &os, const std::string &delim, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (mpl::piecewise_select< Up... >, TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (mpl::piecewise_select< Up... >, TupleT< Tp &... > &obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (mpl::piecewise_ignore< Up... >, TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void invoke (mpl::piecewise_ignore< Up... >, TupleT< Tp &... > &obj, Args &&... args)
 
template<typename TupleT , typename ApiT , typename... Args>
auto construct (Args &&... args)
 
template<typename TupleT , typename... Args>
auto construct (Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto destroy (TupleT< Tp... > &obj)
 
template<template< typename... > class TupleT, typename... Tp>
auto destroy (TupleT< Tp... > &obj)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto destroy (TupleT< Tp &... > &&obj)
 
template<template< typename... > class TupleT, typename... Tp>
auto destroy (TupleT< Tp &... > &&obj)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void start (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void start (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void start (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void start (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void stop (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void stop (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void stop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void stop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_begin (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_begin (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_begin (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_begin (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_end (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_end (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_end (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void mark_end (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void store (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void store (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void store (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void store (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void reset (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void reset (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void reset (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void reset (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void record (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void record (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void record (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void record (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void measure (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void measure (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void measure (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void measure (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void push (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void push (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void push (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void push (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void pop (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void pop (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void pop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void pop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_prefix (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void set_prefix (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_prefix (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void set_prefix (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_scope (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void set_scope (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_scope (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void set_scope (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_state (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void set_state (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void assemble (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void assemble (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void assemble (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void assemble (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void derive (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void derive (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void derive (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void derive (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void audit (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void audit (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void audit (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void audit (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void add_secondary (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void add_secondary (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void add_secondary (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void add_secondary (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto get (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto get (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto get (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto get (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto get (TupleT< Tp... > &obj, void *&_ptr, size_t _hash)
 
template<template< typename... > class TupleT, typename... Tp>
auto get (TupleT< Tp... > &obj, void *&_ptr, size_t _hash)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto get_labeled (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto get_labeled (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto get_labeled (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto get_labeled (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto serialize (ArchiveT &ar, TupleT< Tp... > &obj)
 
template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto serialize (ArchiveT &ar, TupleT< Tp &... > &&obj)
 
template<typename... BundleT>
auto get_cache ()
 
template<typename ApiT = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void set_state (TupleT< Tp... > &obj, Args &&...)
 
template<typename ApiT = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void set_state (TupleT< Tp &... > &&obj, Args &&...)
 
template<typename ApiT , typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto serialize (ArchiveT &ar, TupleT< Tp... > &obj)
 
template<typename ApiT , typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto serialize (ArchiveT &ar, TupleT< Tp &... > &&obj)
 

Function Documentation

◆ add_secondary() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 989 of file functional.cpp.

990{
991 invoke_impl::invoke<operation::add_secondary, ApiT>(std::forward<TupleT<Tp&...>>(obj),
992 std::forward<Args>(args)...);
993}

◆ add_secondary() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 997 of file functional.cpp.

998{
999 add_secondary<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
1000 std::forward<Args>(args)...);
1001}

◆ add_secondary() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 974 of file functional.cpp.

975{
976 invoke_impl::invoke<operation::add_secondary, ApiT>(obj, std::forward<Args>(args)...);
977}

◆ add_secondary() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 981 of file functional.cpp.

982{
983 add_secondary<TIMEMORY_API>(obj, std::forward<Args>(args)...);
984}

◆ assemble() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 883 of file functional.cpp.

884{
885 invoke_impl::invoke<operation::assemble, ApiT>(std::forward<TupleT<Tp&...>>(obj),
886 std::forward<Args>(args)...);
887}

◆ assemble() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 891 of file functional.cpp.

892{
893 assemble<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
894 std::forward<Args>(args)...);
895}

◆ assemble() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 868 of file functional.cpp.

869{
870 invoke_impl::invoke<operation::assemble, ApiT>(obj, std::forward<Args>(args)...);
871}

Referenced by tim::lightweight_tuple< Types >::assemble(), and tim::bundle< Tag, BundleT, TupleT >::start().

◆ assemble() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 875 of file functional.cpp.

876{
877 assemble<TIMEMORY_API>(obj, std::forward<Args>(args)...);
878}

◆ audit() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 954 of file functional.cpp.

955{
956 invoke_impl::invoke<operation::audit, ApiT>(std::forward<TupleT<Tp&...>>(obj),
957 std::forward<Args>(args)...);
958}

◆ audit() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 962 of file functional.cpp.

963{
964 audit<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
965}

◆ audit() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 939 of file functional.cpp.

940{
941 invoke_impl::invoke<operation::audit, ApiT>(obj, std::forward<Args>(args)...);
942}

Referenced by tim::lightweight_tuple< Types >::audit().

◆ audit() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 946 of file functional.cpp.

947{
948 audit<TIMEMORY_API>(obj, std::forward<Args>(args)...);
949}

◆ construct() [1/2]

template<typename TupleT , typename ApiT , typename... Args>
auto tim::invoke::construct ( Args &&...  args)

Definition at line 257 of file functional.cpp.

258{
260 {
261 TupleT obj{};
262 invoke_impl::construct(std::ref(obj).get(), std::forward<Args>(args)...);
263 return obj;
264 }
265 return TupleT{};
266}
#define IF_CONSTEXPR(...)
Definition: language.hpp:72
auto construct(Args &&... args)
Definition: functional.cpp:271
auto get(TupleT< Tp... > &obj, void *&_ptr, size_t _hash)
trait that signifies that an implementation for the component is available. When this is set to false...
Definition: types.hpp:355

References construct(), get(), and IF_CONSTEXPR.

◆ construct() [2/2]

template<typename TupleT , typename... Args>
auto tim::invoke::construct ( Args &&...  args)

Definition at line 271 of file functional.cpp.

272{
273 return construct<TupleT, TIMEMORY_API>(std::forward<Args>(args)...);
274}

Referenced by construct().

◆ derive() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 919 of file functional.cpp.

920{
921 invoke_impl::invoke<operation::derive, ApiT>(std::forward<TupleT<Tp&...>>(obj),
922 std::forward<Args>(args)...);
923}

◆ derive() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 927 of file functional.cpp.

928{
929 derive<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
930}

◆ derive() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 904 of file functional.cpp.

905{
906 invoke_impl::invoke<operation::derive, ApiT>(obj, std::forward<Args>(args)...);
907}

Referenced by tim::lightweight_tuple< Types >::derive(), and tim::bundle< Tag, BundleT, TupleT >::stop().

◆ derive() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 911 of file functional.cpp.

912{
913 derive<TIMEMORY_API>(obj, std::forward<Args>(args)...);
914}

◆ destroy() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy ( TupleT< Tp &... > &&  obj)

Definition at line 296 of file functional.cpp.

297{
298 invoke_impl::invoke<operation::generic_deleter, ApiT>(
299 std::forward<TupleT<Tp&...>>(obj));
300}

◆ destroy() [2/4]

template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy ( TupleT< Tp &... > &&  obj)

Definition at line 304 of file functional.cpp.

305{
306 destroy<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj));
307}

◆ destroy() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy ( TupleT< Tp... > &  obj)

Definition at line 282 of file functional.cpp.

283{
284 invoke_impl::invoke<operation::generic_deleter, ApiT>(obj);
285}

Referenced by tim::graph< T, AllocatorT >::~graph(), tim::graph< T, AllocatorT >::erase(), and tim::graph< T, AllocatorT >::replace().

◆ destroy() [4/4]

template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy ( TupleT< Tp... > &  obj)

Definition at line 289 of file functional.cpp.

290{
291 destroy<TIMEMORY_API>(obj);
292}

◆ get() [1/6]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 1033 of file functional.cpp.

1034{
1035 using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1036 using data_collect_type = mpl::get_data_type_t<data_type>;
1037 using data_value_type = mpl::get_data_value_t<data_type>;
1038
1039 data_value_type _data{};
1040 auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1041 invoke_impl::invoke_data<operation::get_data, ApiT>(_obj, _data,
1042 std::forward<Args>(args)...);
1043 return _data;
1044}
typename impl::template get_data_tuple< TypeList >::type get_data_type_t
get the tuple of types
Definition: filters.hpp:452
typename impl::template get_data_tuple< TypeList >::value_type get_data_value_t
get the tuple of values
Definition: filters.hpp:456
std::bitset< scope_count > data_type
Definition: types.hpp:399

◆ get() [2/6]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 1048 of file functional.cpp.

1049{
1050 return ::tim::invoke::get<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
1051 std::forward<Args>(args)...);
1052}

◆ get() [3/6]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 1010 of file functional.cpp.

1011{
1012 using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1013 using data_collect_type = mpl::get_data_type_t<data_type>;
1014 using data_value_type = mpl::get_data_value_t<data_type>;
1015
1016 data_value_type _data{};
1017 auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1018 invoke_impl::invoke_data<operation::get_data, ApiT>(_obj, _data,
1019 std::forward<Args>(args)...);
1020 return _data;
1021}

Referenced by construct(), and tim::lightweight_tuple< Types >::get().

◆ get() [4/6]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 1025 of file functional.cpp.

1026{
1027 return ::tim::invoke::get<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1028}

◆ get() [5/6]

template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::get ( TupleT< Tp... > &  obj,
void *&  _ptr,
size_t  _hash 
)

Definition at line 1056 of file functional.cpp.

1057{
1058 invoke_impl::invoke<operation::get, ApiT>(obj, _ptr, _hash);
1059}

◆ get() [6/6]

template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::get ( TupleT< Tp... > &  obj,
void *&  _ptr,
size_t  _hash 
)

Definition at line 1063 of file functional.cpp.

1064{
1065 return ::tim::invoke::get<TIMEMORY_API>(obj, _ptr, _hash);
1066}

◆ get_cache()

template<typename... BundleT>
auto tim::invoke::get_cache ( )

Definition at line 1157 of file functional.cpp.

1158{
1159 return operation::construct_cache<std::tuple<BundleT...>>{}();
1160}

◆ get_labeled() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 1098 of file functional.cpp.

1099{
1100 using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1101 using data_collect_type = mpl::get_data_type_t<data_type>;
1102 using data_label_type = mpl::get_data_label_t<data_type>;
1103
1104 data_label_type _data{};
1105 auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1106 invoke_impl::invoke_data<operation::get_labeled_data, ApiT>(
1107 _obj, _data, std::forward<Args>(args)...);
1108 return _data;
1109}
typename impl::template get_data_tuple< TypeList >::label_type get_data_label_t
get the tuple of pair of descriptor and value
Definition: filters.hpp:460

◆ get_labeled() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 1113 of file functional.cpp.

1114{
1115 return get_labeled<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1116}

◆ get_labeled() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 1075 of file functional.cpp.

1076{
1077 using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1078 using data_collect_type = mpl::get_data_type_t<data_type>;
1079 using data_label_type = mpl::get_data_label_t<data_type>;
1080
1081 data_label_type _data{};
1082 auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1083 invoke_impl::invoke_data<operation::get_labeled_data, ApiT>(
1084 _obj, _data, std::forward<Args>(args)...);
1085 return _data;
1086}

Referenced by tim::lightweight_tuple< Types >::get_labeled().

◆ get_labeled() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 1090 of file functional.cpp.

1091{
1092 return get_labeled<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1093}

◆ invoke() [1/8]

template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( mpl::piecewise_ignore< Up... >  ,
TupleT< Tp &... > &  obj,
Args &&...  args 
)

Definition at line 244 of file functional.cpp.

245{
246 using data_type = mpl::subtract_t<type_list<Tp...>, type_list<Up...>>;
248 std::forward<Args>(args)...);
249}
void invoke(TupleT< Tp... > &&obj, FuncT &&func, Args &&... args)
typename impl::subtract< LhsT, RhsT >::type subtract_t
Definition: filters.hpp:426
typename impl::convert< T, U >::type convert_t
Definition: types.hpp:855
lightweight tuple-alternative for meta-programming logic
Definition: types.hpp:233

References invoke().

◆ invoke() [2/8]

template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( mpl::piecewise_ignore< Up... >  ,
TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 234 of file functional.cpp.

235{
236 using data_type = mpl::subtract_t<type_list<Tp...>, type_list<Up...>>;
238 std::forward<Args>(args)...);
239}

References invoke().

◆ invoke() [3/8]

template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( mpl::piecewise_select< Up... >  ,
TupleT< Tp &... > &  obj,
Args &&...  args 
)

Definition at line 223 of file functional.cpp.

224{
225 using data_type = TupleT<Tp...>;
226 invoke_impl::invoke<OpT, ApiT>(
227 std::tie(std::get<index_of<Up, data_type>::value>(obj)...),
228 std::forward<Args>(args)...);
229}
std::tuple_element< N, std::tuple< Types... > >::type & get(tim::auto_bundle< Tag, Types... > &obj)
impl::index_of< Tp, Type > index_of
Definition: types.hpp:575

References std::get().

◆ invoke() [4/8]

template<template< typename... > class OpT, typename ApiT , typename... Up, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( mpl::piecewise_select< Up... >  ,
TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 212 of file functional.cpp.

213{
214 using data_type = TupleT<Tp...>;
215 invoke_impl::invoke<OpT, ApiT>(
216 std::forward_as_tuple(std::get<index_of<Up, data_type>::value>(obj)...),
217 std::forward<Args>(args)...);
218}

References std::get().

◆ invoke() [5/8]

template<template< typename... > class OpT, typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 194 of file functional.cpp.

195{
196 invoke_impl::invoke<OpT, ApiT>(std::forward<TupleT<Tp&...>>(obj),
197 std::forward<Args>(args)...);
198}

◆ invoke() [6/8]

template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 203 of file functional.cpp.

204{
205 invoke<OpT, TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
206 std::forward<Args>(args)...);
207}

◆ invoke() [7/8]

template<template< typename... > class OpT, typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 178 of file functional.cpp.

179{
180 invoke_impl::invoke<OpT, ApiT>(obj, std::forward<Args>(args)...);
181}

Referenced by invoke().

◆ invoke() [8/8]

template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 186 of file functional.cpp.

187{
188 invoke<OpT, TIMEMORY_API>(obj, std::forward<Args>(args)...);
189}

◆ mark() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 472 of file functional.cpp.

473{
474 invoke_impl::invoke<operation::mark, ApiT>(std::forward<TupleT<Tp&...>>(obj),
475 std::forward<Args>(args)...);
476}

◆ mark() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 480 of file functional.cpp.

481{
482 mark<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
483}

◆ mark() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 457 of file functional.cpp.

458{
459 invoke_impl::invoke<operation::mark, ApiT>(obj, std::forward<Args>(args)...);
460}

Referenced by tim::component::nvtx_marker::mark_begin(), tim::component::roctx_marker::mark_begin(), tim::component::nvtx_marker::mark_end(), and tim::component::roctx_marker::mark_end().

◆ mark() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 464 of file functional.cpp.

465{
466 mark<TIMEMORY_API>(obj, std::forward<Args>(args)...);
467}

◆ mark_begin() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 507 of file functional.cpp.

508{
509 invoke_impl::invoke<operation::mark_begin, ApiT>(std::forward<TupleT<Tp&...>>(obj),
510 std::forward<Args>(args)...);
511}

◆ mark_begin() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 515 of file functional.cpp.

516{
517 mark_begin<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
518 std::forward<Args>(args)...);
519}

◆ mark_begin() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 492 of file functional.cpp.

493{
494 invoke_impl::invoke<operation::mark_begin, ApiT>(obj, std::forward<Args>(args)...);
495}

Referenced by tim::lightweight_tuple< Types >::mark_begin().

◆ mark_begin() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 499 of file functional.cpp.

500{
501 mark_begin<TIMEMORY_API>(obj, std::forward<Args>(args)...);
502}

◆ mark_end() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 543 of file functional.cpp.

544{
545 invoke_impl::invoke<operation::mark_end, ApiT>(std::forward<TupleT<Tp&...>>(obj),
546 std::forward<Args>(args)...);
547}

◆ mark_end() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 551 of file functional.cpp.

552{
553 mark_end<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
554 std::forward<Args>(args)...);
555}

◆ mark_end() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 528 of file functional.cpp.

529{
530 invoke_impl::invoke<operation::mark_end, ApiT>(obj, std::forward<Args>(args)...);
531}

Referenced by tim::lightweight_tuple< Types >::mark_end().

◆ mark_end() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 535 of file functional.cpp.

536{
537 mark_end<TIMEMORY_API>(obj, std::forward<Args>(args)...);
538}

◆ measure() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 684 of file functional.cpp.

685{
686 invoke_impl::invoke<operation::measure, ApiT>(std::forward<TupleT<Tp&...>>(obj),
687 std::forward<Args>(args)...);
688}

◆ measure() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 692 of file functional.cpp.

693{
694 measure<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
695}

◆ measure() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 669 of file functional.cpp.

670{
671 invoke_impl::invoke<operation::measure, ApiT>(obj, std::forward<Args>(args)...);
672}

Referenced by tim::lightweight_tuple< Types >::measure().

◆ measure() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 676 of file functional.cpp.

677{
678 measure<TIMEMORY_API>(obj, std::forward<Args>(args)...);
679}

◆ pop() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 754 of file functional.cpp.

755{
756 invoke_impl::invoke<operation::pop_node, ApiT>(std::forward<TupleT<Tp&...>>(obj),
757 std::forward<Args>(args)...);
758}

◆ pop() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 762 of file functional.cpp.

763{
764 pop<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
765}

◆ pop() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 739 of file functional.cpp.

740{
741 invoke_impl::invoke<operation::pop_node, ApiT>(obj, std::forward<Args>(args)...);
742}

Referenced by tim::lightweight_tuple< Types >::pop(), and tim::bundle< Tag, BundleT, TupleT >::stop().

◆ pop() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 746 of file functional.cpp.

747{
748 pop<TIMEMORY_API>(obj, std::forward<Args>(args)...);
749}

◆ print() [1/2]

template<typename... Args>
void tim::invoke::print ( std::ostream &  os,
Args &&...  args 
)

Definition at line 159 of file functional.cpp.

160{
161 TIMEMORY_FOLD_EXPRESSION(os << args << "\n");
162}
const std::string std::ostream * os
#define TIMEMORY_FOLD_EXPRESSION(...)
Definition: types.hpp:56

References tim::os, and TIMEMORY_FOLD_EXPRESSION.

Referenced by tim::component::cupti_counters::get_display().

◆ print() [2/2]

template<typename... Args>
void tim::invoke::print ( std::ostream &  os,
const std::string &  delim,
Args &&...  args 
)

Definition at line 166 of file functional.cpp.

167{
168 TIMEMORY_FOLD_EXPRESSION(os << args << delim);
169}

References tim::os, and TIMEMORY_FOLD_EXPRESSION.

◆ push() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 719 of file functional.cpp.

720{
721 invoke_impl::invoke<operation::push_node, ApiT>(std::forward<TupleT<Tp&...>>(obj),
722 std::forward<Args>(args)...);
723}

◆ push() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 727 of file functional.cpp.

728{
729 push<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
730}

◆ push() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 704 of file functional.cpp.

705{
706 invoke_impl::invoke<operation::push_node, ApiT>(obj, std::forward<Args>(args)...);
707}

Referenced by tim::lightweight_tuple< Types >::push(), and tim::bundle< Tag, BundleT, TupleT >::start().

◆ push() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 711 of file functional.cpp.

712{
713 push<TIMEMORY_API>(obj, std::forward<Args>(args)...);
714}

◆ record() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 649 of file functional.cpp.

650{
651 invoke_impl::invoke<operation::record, ApiT>(std::forward<TupleT<Tp&...>>(obj),
652 std::forward<Args>(args)...);
653}

◆ record() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 657 of file functional.cpp.

658{
659 record<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
660}

◆ record() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 634 of file functional.cpp.

635{
636 invoke_impl::invoke<operation::record, ApiT>(obj, std::forward<Args>(args)...);
637}

Referenced by tim::component::craypat_record::global_finalize(), tim::component::craypat_record::global_init(), tim::lightweight_tuple< Types >::record(), tim::component::craypat_record::start(), and tim::component::craypat_record::stop().

◆ record() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 641 of file functional.cpp.

642{
643 record<TIMEMORY_API>(obj, std::forward<Args>(args)...);
644}

◆ reset() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 614 of file functional.cpp.

615{
616 invoke_impl::invoke<operation::reset, ApiT>(std::forward<TupleT<Tp&...>>(obj),
617 std::forward<Args>(args)...);
618}

◆ reset() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 622 of file functional.cpp.

623{
624 reset<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
625}

◆ reset() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 599 of file functional.cpp.

600{
601 invoke_impl::invoke<operation::reset, ApiT>(obj, std::forward<Args>(args)...);
602}

Referenced by tim::lightweight_tuple< Types >::push(), tim::component::user_bundle< Idx, Tag >::reset(), and tim::lightweight_tuple< Types >::reset().

◆ reset() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 606 of file functional.cpp.

607{
608 reset<TIMEMORY_API>(obj, std::forward<Args>(args)...);
609}

◆ serialize() [1/4]

template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize ( ArchiveT &  ar,
TupleT< Tp &... > &&  obj 
)

Definition at line 1146 of file functional.cpp.

1147{
1148 impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1149}
auto serialize(ArchiveT &ar, TupleT< Tp &... > &&obj)
std::make_integer_sequence< size_t, Num > make_index_sequence
Alias template make_index_sequence.
Definition: types.hpp:182

References serialize().

Referenced by serialize().

◆ serialize() [2/4]

template<typename ApiT , typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize ( ArchiveT &  ar,
TupleT< Tp &... > &&  obj 
)

Definition at line 1146 of file functional.cpp.

1147{
1148 impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1149}

References serialize().

Referenced by serialize().

◆ serialize() [3/4]

template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize ( ArchiveT &  ar,
TupleT< Tp... > &  obj 
)

Definition at line 1139 of file functional.cpp.

1140{
1141 impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1142}

References serialize().

Referenced by tim::bundle< Tag, BundleT, TupleT >::serialize(), and tim::lightweight_tuple< Types >::serialize().

◆ serialize() [4/4]

template<typename ApiT , typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize ( ArchiveT &  ar,
TupleT< Tp... > &  obj 
)

Definition at line 1139 of file functional.cpp.

1140{
1141 impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1142}

References serialize().

Referenced by tim::bundle< Tag, BundleT, TupleT >::serialize(), and tim::lightweight_tuple< Types >::serialize().

◆ set_prefix() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 789 of file functional.cpp.

790{
791 invoke_impl::invoke<operation::set_prefix, ApiT>(std::forward<TupleT<Tp&...>>(obj),
792 std::forward<Args>(args)...);
793}

◆ set_prefix() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 797 of file functional.cpp.

798{
799 set_prefix<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
800 std::forward<Args>(args)...);
801}

◆ set_prefix() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix ( TupleT< Tp... > &  obj,
Args &&...  args 
)

◆ set_prefix() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 781 of file functional.cpp.

782{
783 set_prefix<TIMEMORY_API>(obj, std::forward<Args>(args)...);
784}

◆ set_scope() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 825 of file functional.cpp.

826{
827 invoke_impl::invoke<operation::set_scope, ApiT>(std::forward<TupleT<Tp&...>>(obj),
828 std::forward<Args>(args)...);
829}

◆ set_scope() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 833 of file functional.cpp.

834{
835 set_scope<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
836 std::forward<Args>(args)...);
837}

◆ set_scope() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 810 of file functional.cpp.

811{
812 invoke_impl::invoke<operation::set_scope, ApiT>(obj, std::forward<Args>(args)...);
813}

Referenced by tim::bundle< Tag, BundleT, TupleT >::init(), and tim::lightweight_tuple< Types >::set_scope().

◆ set_scope() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 817 of file functional.cpp.

818{
819 set_scope<TIMEMORY_API>(obj, std::forward<Args>(args)...);
820}

◆ set_state() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 855 of file functional.cpp.

856{
857 invoke_impl::invoke_data<operation::set_state, ApiT>(
858 std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
859}

◆ set_state() [2/4]

template<typename ApiT = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state ( TupleT< Tp &... > &&  obj,
Args &&  ... 
)

◆ set_state() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 846 of file functional.cpp.

847{
848 invoke_impl::invoke_data<operation::set_state, ApiT>(obj,
849 std::forward<Args>(args)...);
850}

◆ set_state() [4/4]

template<typename ApiT = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state ( TupleT< Tp... > &  obj,
Args &&  ... 
)

◆ start() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 347 of file functional.cpp.

348{
349 using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
354
355 // start high priority components
356 auto&& _priority_start =
357 mpl::get_reference_tuple<priority_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
358 invoke_impl::invoke<operation::priority_start, ApiT>(_priority_start,
359 std::forward<Args>(args)...);
360
361 // start non-prioritized components
362 invoke_impl::invoke<operation::standard_start, ApiT>(
363 std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
364
365 // start low prioritized components
366 auto&& _delayed_start =
367 mpl::get_reference_tuple<delayed_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
368 invoke_impl::invoke<operation::delayed_start, ApiT>(_delayed_start,
369 std::forward<Args>(args)...);
370}
convert_t< typename ::tim::mpl::impl::sortT< PrioT, convert_t< Tuple, type_list<> >, convert_t< BegT, type_list<> >, convert_t< EndT, type_list<> > >::type, std::tuple<> > sort
Definition: filters.hpp:478
impl::filter_false< Predicate, Sequence > filter_false_t
Definition: available.hpp:251

◆ start() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 374 of file functional.cpp.

375{
376 start<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
377}

◆ start() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 316 of file functional.cpp.

317{
318 using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
323
324 // start high priority components
325 auto&& _priority_start = mpl::get_reference_tuple<priority_tuple_t>(obj);
326 invoke_impl::invoke<operation::priority_start, ApiT>(_priority_start,
327 std::forward<Args>(args)...);
328 // start non-prioritized components
329 invoke_impl::invoke<operation::standard_start, ApiT>(obj,
330 std::forward<Args>(args)...);
331 // start low prioritized components
332 auto&& _delayed_start = mpl::get_reference_tuple<delayed_tuple_t>(obj);
333 invoke_impl::invoke<operation::delayed_start, ApiT>(_delayed_start,
334 std::forward<Args>(args)...);
335}

Referenced by tim::policy::instance_tracker< Tp, true >::global_tracker_start(), tim::policy::instance_tracker< Tp, false >::global_tracker_start(), tim::component::papi_common::initialize(), tim::component::papi_array< MaxNumEvents >::sample(), tim::component::papi_tuple< EventTypes >::sample(), tim::component::papi_vector::sample(), tim::component::allinea_map::start(), tim::component::caliper_config::start(), tim::component::craypat_record::start(), tim::component::craypat_region::start(), tim::component::cuda_profiler::start(), tim::component::memory_allocations::start(), tim::component::ompt_handle< Api >::start(), tim::component::papi_array< MaxNumEvents >::start(), tim::component::papi_tuple< EventTypes >::start(), tim::component::papi_vector::start(), tim::component::vtune_profiler::start(), tim::sampling::sampler< CompT< Types... >, N, SigIds... >::start(), tim::lightweight_tuple< Types >::start(), tim::bundle< Tag, BundleT, TupleT >::start(), and tim::policy::instance_tracker< Tp, true >::thread_tracker_start().

◆ start() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 339 of file functional.cpp.

340{
341 start<TIMEMORY_API>(obj, std::forward<Args>(args)...);
342}

◆ stop() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 418 of file functional.cpp.

419{
420 using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
425
426 // stop high priority components
427 auto&& _priority_stop =
428 mpl::get_reference_tuple<priority_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
429 invoke_impl::invoke<operation::priority_stop, ApiT>(_priority_stop,
430 std::forward<Args>(args)...);
431
432 // stop non-prioritized components
433 invoke_impl::invoke<operation::standard_stop, ApiT>(std::forward<TupleT<Tp&...>>(obj),
434 std::forward<Args>(args)...);
435
436 // stop low prioritized components
437 auto&& _delayed_stop =
438 mpl::get_reference_tuple<delayed_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
439 invoke_impl::invoke<operation::delayed_stop, ApiT>(_delayed_stop,
440 std::forward<Args>(args)...);
441}

◆ stop() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 445 of file functional.cpp.

446{
447 stop<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
448}

◆ stop() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 386 of file functional.cpp.

387{
388 using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
393
394 // stop high priority components
395 auto&& _priority_stop = mpl::get_reference_tuple<priority_tuple_t>(obj);
396 invoke_impl::invoke<operation::priority_stop, ApiT>(_priority_stop,
397 std::forward<Args>(args)...);
398
399 // stop non-prioritized components
400 invoke_impl::invoke<operation::standard_stop, ApiT>(obj, std::forward<Args>(args)...);
401
402 // stop low prioritized components
403 auto&& _delayed_stop = mpl::get_reference_tuple<delayed_tuple_t>(obj);
404 invoke_impl::invoke<operation::delayed_stop, ApiT>(_delayed_stop,
405 std::forward<Args>(args)...);
406}

Referenced by tim::bundle< Tag, BundleT, TupleT >::~bundle(), tim::lightweight_tuple< Types >::~lightweight_tuple(), tim::component::user_bundle< Idx, Tag >::clear(), tim::component::papi_common::finalize(), tim::auto_base_bundle< Tag, CompT, BundleT >::get_scope_destructor(), tim::bundle< Tag, BundleT, TupleT >::get_scope_destructor(), tim::policy::instance_tracker< Tp, true >::global_tracker_stop(), tim::policy::instance_tracker< Tp, false >::global_tracker_stop(), tim::component::allinea_map::stop(), tim::component::caliper_config::stop(), tim::component::craypat_record::stop(), tim::component::craypat_region::stop(), tim::component::cuda_profiler::stop(), tim::component::memory_allocations::stop(), tim::component::ompt_handle< Api >::stop(), tim::component::papi_array< MaxNumEvents >::stop(), tim::component::papi_tuple< EventTypes >::stop(), tim::component::papi_vector::stop(), tim::component::vtune_profiler::stop(), tim::sampling::sampler< CompT< Types... >, N, SigIds... >::stop(), tim::lightweight_tuple< Types >::stop(), tim::bundle< Tag, BundleT, TupleT >::stop(), and tim::policy::instance_tracker< Tp, true >::thread_tracker_stop().

◆ stop() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 410 of file functional.cpp.

411{
412 stop<TIMEMORY_API>(obj, std::forward<Args>(args)...);
413}

◆ store() [1/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 579 of file functional.cpp.

580{
581 invoke_impl::invoke<operation::store, ApiT>(std::forward<TupleT<Tp&...>>(obj),
582 std::forward<Args>(args)...);
583}

◆ store() [2/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store ( TupleT< Tp &... > &&  obj,
Args &&...  args 
)

Definition at line 587 of file functional.cpp.

588{
589 store<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
590}

◆ store() [3/4]

template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 564 of file functional.cpp.

565{
566 invoke_impl::invoke<operation::store, ApiT>(obj, std::forward<Args>(args)...);
567}

Referenced by tim::lightweight_tuple< Types >::store(), and tim::component::data_tracker< InpT, Tag >::store().

◆ store() [4/4]

template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store ( TupleT< Tp... > &  obj,
Args &&...  args 
)

Definition at line 571 of file functional.cpp.

572{
573 store<TIMEMORY_API>(obj, std::forward<Args>(args)...);
574}