timemory  3.2.1
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

 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<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 971 of file functional.cpp.

972 {
973  invoke_impl::invoke<operation::add_secondary, ApiT>(std::forward<TupleT<Tp&...>>(obj),
974  std::forward<Args>(args)...);
975 }

◆ 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 979 of file functional.cpp.

980 {
981  add_secondary<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
982  std::forward<Args>(args)...);
983 }

◆ 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 956 of file functional.cpp.

957 {
958  invoke_impl::invoke<operation::add_secondary, ApiT>(obj, std::forward<Args>(args)...);
959 }

◆ 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 963 of file functional.cpp.

964 {
965  add_secondary<TIMEMORY_API>(obj, std::forward<Args>(args)...);
966 }

◆ 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 865 of file functional.cpp.

866 {
867  invoke_impl::invoke<operation::assemble, ApiT>(std::forward<TupleT<Tp&...>>(obj),
868  std::forward<Args>(args)...);
869 }

◆ assemble() [2/4]

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

Definition at line 873 of file functional.cpp.

874 {
875  assemble<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
876  std::forward<Args>(args)...);
877 }

◆ 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 850 of file functional.cpp.

851 {
852  invoke_impl::invoke<operation::assemble, ApiT>(obj, std::forward<Args>(args)...);
853 }

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 857 of file functional.cpp.

858 {
859  assemble<TIMEMORY_API>(obj, std::forward<Args>(args)...);
860 }

◆ 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 936 of file functional.cpp.

937 {
938  invoke_impl::invoke<operation::audit, ApiT>(std::forward<TupleT<Tp&...>>(obj),
939  std::forward<Args>(args)...);
940 }

◆ audit() [2/4]

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

Definition at line 944 of file functional.cpp.

945 {
946  audit<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
947 }

◆ 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 921 of file functional.cpp.

922 {
923  invoke_impl::invoke<operation::audit, ApiT>(obj, std::forward<Args>(args)...);
924 }

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 928 of file functional.cpp.

929 {
930  audit<TIMEMORY_API>(obj, std::forward<Args>(args)...);
931 }

◆ construct() [1/2]

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

Definition at line 237 of file functional.cpp.

238 {
239  IF_CONSTEXPR(trait::is_available<ApiT>::value)
240  {
241  {
242  TupleT obj{};
243  invoke_impl::construct(std::ref(obj).get(), std::forward<Args>(args)...);
244  return obj;
245  }
246  }
247  return TupleT{};
248 }
#define IF_CONSTEXPR(...)
Definition: language.hpp:72
auto construct(Args &&... args)
Definition: functional.cpp:253
auto get(TupleT< Tp... > &obj, void *&_ptr, size_t _hash)

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

◆ construct() [2/2]

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

Definition at line 253 of file functional.cpp.

254 {
255  return construct<TupleT, TIMEMORY_API>(std::forward<Args>(args)...);
256 }

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 901 of file functional.cpp.

902 {
903  invoke_impl::invoke<operation::derive, ApiT>(std::forward<TupleT<Tp&...>>(obj),
904  std::forward<Args>(args)...);
905 }

◆ derive() [2/4]

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

Definition at line 909 of file functional.cpp.

910 {
911  derive<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
912 }

◆ 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 886 of file functional.cpp.

887 {
888  invoke_impl::invoke<operation::derive, ApiT>(obj, std::forward<Args>(args)...);
889 }

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 893 of file functional.cpp.

894 {
895  derive<TIMEMORY_API>(obj, std::forward<Args>(args)...);
896 }

◆ destroy() [1/4]

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

Definition at line 278 of file functional.cpp.

279 {
280  invoke_impl::invoke<operation::generic_deleter, ApiT>(
281  std::forward<TupleT<Tp&...>>(obj));
282 }

◆ destroy() [2/4]

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

Definition at line 286 of file functional.cpp.

287 {
288  destroy<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj));
289 }

◆ destroy() [3/4]

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

Definition at line 264 of file functional.cpp.

265 {
266  invoke_impl::invoke<operation::generic_deleter, ApiT>(obj);
267 }

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 271 of file functional.cpp.

272 {
273  destroy<TIMEMORY_API>(obj);
274 }

◆ 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 1015 of file functional.cpp.

1016 {
1017  using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1018  using data_collect_type = mpl::get_data_type_t<data_type>;
1019  using data_value_type = mpl::get_data_value_t<data_type>;
1020 
1021  data_value_type _data{};
1022  auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1023  invoke_impl::invoke_data<operation::get_data, ApiT>(_obj, _data,
1024  std::forward<Args>(args)...);
1025  return _data;
1026 }
std::bitset< scope_count > data_type
Definition: types.hpp:395

◆ get() [2/6]

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

Definition at line 1030 of file functional.cpp.

1031 {
1032  return ::tim::invoke::get<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
1033  std::forward<Args>(args)...);
1034 }

◆ 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 992 of file functional.cpp.

993 {
994  using data_type = TupleT<std::remove_pointer_t<Tp>...>;
995  using data_collect_type = mpl::get_data_type_t<data_type>;
996  using data_value_type = mpl::get_data_value_t<data_type>;
997 
998  data_value_type _data{};
999  auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1000  invoke_impl::invoke_data<operation::get_data, ApiT>(_obj, _data,
1001  std::forward<Args>(args)...);
1002  return _data;
1003 }

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 1007 of file functional.cpp.

1008 {
1009  return ::tim::invoke::get<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1010 }

◆ 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 1038 of file functional.cpp.

1039 {
1040  invoke_impl::invoke<operation::get, ApiT>(obj, _ptr, _hash);
1041 }

◆ 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 1045 of file functional.cpp.

1046 {
1047  return ::tim::invoke::get<TIMEMORY_API>(obj, _ptr, _hash);
1048 }

Referenced by invoke().

◆ get_cache()

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

Definition at line 1139 of file functional.cpp.

1140 {
1141  return operation::construct_cache<std::tuple<BundleT...>>{}();
1142 }

◆ 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 1080 of file functional.cpp.

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

◆ 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 1095 of file functional.cpp.

1096 {
1097  return get_labeled<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1098 }

◆ 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 1057 of file functional.cpp.

1058 {
1059  using data_type = TupleT<std::remove_pointer_t<Tp>...>;
1060  using data_collect_type = mpl::get_data_type_t<data_type>;
1061  using data_label_type = mpl::get_data_label_t<data_type>;
1062 
1063  data_label_type _data{};
1064  auto&& _obj = mpl::get_reference_tuple<data_collect_type>(obj);
1065  invoke_impl::invoke_data<operation::get_labeled_data, ApiT>(
1066  _obj, _data, std::forward<Args>(args)...);
1067  return _data;
1068 }

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 1072 of file functional.cpp.

1073 {
1074  return get_labeled<TIMEMORY_API>(obj, std::forward<Args>(args)...);
1075 }

◆ invoke() [1/6]

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 }

References get().

◆ invoke() [2/6]

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 get().

◆ invoke() [3/6]

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() [4/6]

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() [5/6]

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 }

◆ invoke() [6/6]

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 454 of file functional.cpp.

455 {
456  invoke_impl::invoke<operation::mark, ApiT>(std::forward<TupleT<Tp&...>>(obj),
457  std::forward<Args>(args)...);
458 }

◆ mark() [2/4]

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

Definition at line 462 of file functional.cpp.

463 {
464  mark<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
465 }

◆ 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 439 of file functional.cpp.

440 {
441  invoke_impl::invoke<operation::mark, ApiT>(obj, std::forward<Args>(args)...);
442 }

Referenced by tim::component::nvtx_marker::mark_begin(), and tim::component::nvtx_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 446 of file functional.cpp.

447 {
448  mark<TIMEMORY_API>(obj, std::forward<Args>(args)...);
449 }

◆ 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 489 of file functional.cpp.

490 {
491  invoke_impl::invoke<operation::mark_begin, ApiT>(std::forward<TupleT<Tp&...>>(obj),
492  std::forward<Args>(args)...);
493 }

◆ 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 497 of file functional.cpp.

498 {
499  mark_begin<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
500  std::forward<Args>(args)...);
501 }

◆ 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 474 of file functional.cpp.

475 {
476  invoke_impl::invoke<operation::mark_begin, ApiT>(obj, std::forward<Args>(args)...);
477 }

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 481 of file functional.cpp.

482 {
483  mark_begin<TIMEMORY_API>(obj, std::forward<Args>(args)...);
484 }

◆ 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 525 of file functional.cpp.

526 {
527  invoke_impl::invoke<operation::mark_end, ApiT>(std::forward<TupleT<Tp&...>>(obj),
528  std::forward<Args>(args)...);
529 }

◆ 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 533 of file functional.cpp.

534 {
535  mark_end<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
536  std::forward<Args>(args)...);
537 }

◆ 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 510 of file functional.cpp.

511 {
512  invoke_impl::invoke<operation::mark_end, ApiT>(obj, std::forward<Args>(args)...);
513 }

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 517 of file functional.cpp.

518 {
519  mark_end<TIMEMORY_API>(obj, std::forward<Args>(args)...);
520 }

◆ 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 666 of file functional.cpp.

667 {
668  invoke_impl::invoke<operation::measure, ApiT>(std::forward<TupleT<Tp&...>>(obj),
669  std::forward<Args>(args)...);
670 }

◆ measure() [2/4]

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

Definition at line 674 of file functional.cpp.

675 {
676  measure<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
677 }

◆ 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 651 of file functional.cpp.

652 {
653  invoke_impl::invoke<operation::measure, ApiT>(obj, std::forward<Args>(args)...);
654 }

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 658 of file functional.cpp.

659 {
660  measure<TIMEMORY_API>(obj, std::forward<Args>(args)...);
661 }

◆ 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 736 of file functional.cpp.

737 {
738  invoke_impl::invoke<operation::pop_node, ApiT>(std::forward<TupleT<Tp&...>>(obj),
739  std::forward<Args>(args)...);
740 }

◆ pop() [2/4]

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

Definition at line 744 of file functional.cpp.

745 {
746  pop<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
747 }

◆ 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 721 of file functional.cpp.

722 {
723  invoke_impl::invoke<operation::pop_node, ApiT>(obj, std::forward<Args>(args)...);
724 }

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 728 of file functional.cpp.

729 {
730  pop<TIMEMORY_API>(obj, std::forward<Args>(args)...);
731 }

◆ 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 }
#define TIMEMORY_FOLD_EXPRESSION(...)
Definition: types.hpp:55

References 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 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 701 of file functional.cpp.

702 {
703  invoke_impl::invoke<operation::push_node, ApiT>(std::forward<TupleT<Tp&...>>(obj),
704  std::forward<Args>(args)...);
705 }

◆ push() [2/4]

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

Definition at line 709 of file functional.cpp.

710 {
711  push<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
712 }

◆ 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 686 of file functional.cpp.

687 {
688  invoke_impl::invoke<operation::push_node, ApiT>(obj, std::forward<Args>(args)...);
689 }

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 693 of file functional.cpp.

694 {
695  push<TIMEMORY_API>(obj, std::forward<Args>(args)...);
696 }

◆ 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 631 of file functional.cpp.

632 {
633  invoke_impl::invoke<operation::record, ApiT>(std::forward<TupleT<Tp&...>>(obj),
634  std::forward<Args>(args)...);
635 }

◆ record() [2/4]

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

Definition at line 639 of file functional.cpp.

640 {
641  record<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
642 }

◆ 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 616 of file functional.cpp.

617 {
618  invoke_impl::invoke<operation::record, ApiT>(obj, std::forward<Args>(args)...);
619 }

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 623 of file functional.cpp.

624 {
625  record<TIMEMORY_API>(obj, std::forward<Args>(args)...);
626 }

◆ 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 596 of file functional.cpp.

597 {
598  invoke_impl::invoke<operation::reset, ApiT>(std::forward<TupleT<Tp&...>>(obj),
599  std::forward<Args>(args)...);
600 }

◆ reset() [2/4]

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

Definition at line 604 of file functional.cpp.

605 {
606  reset<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
607 }

◆ 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 581 of file functional.cpp.

582 {
583  invoke_impl::invoke<operation::reset, ApiT>(obj, std::forward<Args>(args)...);
584 }

Referenced by tim::lightweight_tuple< Types >::push(), 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 588 of file functional.cpp.

589 {
590  reset<TIMEMORY_API>(obj, std::forward<Args>(args)...);
591 }

◆ serialize() [1/4]

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

Definition at line 1128 of file functional.cpp.

1129 {
1130  impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1131 }
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

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 1128 of file functional.cpp.

1129 {
1130  impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1131 }

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 1121 of file functional.cpp.

1122 {
1123  impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1124 }

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 1121 of file functional.cpp.

1122 {
1123  impl::serialize(ar, obj, std::make_index_sequence<sizeof...(Tp)>{});
1124 }

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 771 of file functional.cpp.

772 {
773  invoke_impl::invoke<operation::set_prefix, ApiT>(std::forward<TupleT<Tp&...>>(obj),
774  std::forward<Args>(args)...);
775 }

◆ 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 779 of file functional.cpp.

780 {
781  set_prefix<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
782  std::forward<Args>(args)...);
783 }

◆ 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 
)

Definition at line 756 of file functional.cpp.

757 {
758  invoke_impl::invoke<operation::set_prefix, ApiT>(obj, std::forward<Args>(args)...);
759 }

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

◆ 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 763 of file functional.cpp.

764 {
765  set_prefix<TIMEMORY_API>(obj, std::forward<Args>(args)...);
766 }

◆ 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 807 of file functional.cpp.

808 {
809  invoke_impl::invoke<operation::set_scope, ApiT>(std::forward<TupleT<Tp&...>>(obj),
810  std::forward<Args>(args)...);
811 }

◆ 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 815 of file functional.cpp.

816 {
817  set_scope<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj),
818  std::forward<Args>(args)...);
819 }

◆ 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 792 of file functional.cpp.

793 {
794  invoke_impl::invoke<operation::set_scope, ApiT>(obj, std::forward<Args>(args)...);
795 }

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 799 of file functional.cpp.

800 {
801  set_scope<TIMEMORY_API>(obj, std::forward<Args>(args)...);
802 }

◆ 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 837 of file functional.cpp.

838 {
839  invoke_impl::invoke_data<operation::set_state, ApiT>(
840  std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
841 }

◆ 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 828 of file functional.cpp.

829 {
830  invoke_impl::invoke_data<operation::set_state, ApiT>(obj,
831  std::forward<Args>(args)...);
832 }

◆ 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 329 of file functional.cpp.

330 {
331  using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
332  using priority_types_t = mpl::filter_false_t<mpl::negative_start_priority, data_type>;
333  using priority_tuple_t = mpl::sort<trait::start_priority, priority_types_t>;
334  using delayed_types_t = mpl::filter_false_t<mpl::positive_start_priority, data_type>;
335  using delayed_tuple_t = mpl::sort<trait::start_priority, delayed_types_t>;
336 
337  // start high priority components
338  auto&& _priority_start =
339  mpl::get_reference_tuple<priority_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
340  invoke_impl::invoke<operation::priority_start, ApiT>(_priority_start,
341  std::forward<Args>(args)...);
342 
343  // start non-prioritized components
344  invoke_impl::invoke<operation::standard_start, ApiT>(
345  std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
346 
347  // start low prioritized components
348  auto&& _delayed_start =
349  mpl::get_reference_tuple<delayed_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
350  invoke_impl::invoke<operation::delayed_start, ApiT>(_delayed_start,
351  std::forward<Args>(args)...);
352 }

◆ start() [2/4]

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

Definition at line 356 of file functional.cpp.

357 {
358  start<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
359 }

◆ 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 298 of file functional.cpp.

299 {
300  using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
301  using priority_types_t = mpl::filter_false_t<mpl::negative_start_priority, data_type>;
302  using priority_tuple_t = mpl::sort<trait::start_priority, priority_types_t>;
303  using delayed_types_t = mpl::filter_false_t<mpl::positive_start_priority, data_type>;
304  using delayed_tuple_t = mpl::sort<trait::start_priority, delayed_types_t>;
305 
306  // start high priority components
307  auto&& _priority_start = mpl::get_reference_tuple<priority_tuple_t>(obj);
308  invoke_impl::invoke<operation::priority_start, ApiT>(_priority_start,
309  std::forward<Args>(args)...);
310  // start non-prioritized components
311  invoke_impl::invoke<operation::standard_start, ApiT>(obj,
312  std::forward<Args>(args)...);
313  // start low prioritized components
314  auto&& _delayed_start = mpl::get_reference_tuple<delayed_tuple_t>(obj);
315  invoke_impl::invoke<operation::delayed_start, ApiT>(_delayed_start,
316  std::forward<Args>(args)...);
317 }

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::bundle< Tag, BundleT, TupleT >::start(), tim::lightweight_tuple< Types >::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 321 of file functional.cpp.

322 {
323  start<TIMEMORY_API>(obj, std::forward<Args>(args)...);
324 }

◆ 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 400 of file functional.cpp.

401 {
402  using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
403  using priority_types_t = mpl::filter_false_t<mpl::negative_stop_priority, data_type>;
404  using priority_tuple_t = mpl::sort<trait::stop_priority, priority_types_t>;
405  using delayed_types_t = mpl::filter_false_t<mpl::positive_stop_priority, data_type>;
406  using delayed_tuple_t = mpl::sort<trait::stop_priority, delayed_types_t>;
407 
408  // stop high priority components
409  auto&& _priority_stop =
410  mpl::get_reference_tuple<priority_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
411  invoke_impl::invoke<operation::priority_stop, ApiT>(_priority_stop,
412  std::forward<Args>(args)...);
413 
414  // stop non-prioritized components
415  invoke_impl::invoke<operation::standard_stop, ApiT>(std::forward<TupleT<Tp&...>>(obj),
416  std::forward<Args>(args)...);
417 
418  // stop low prioritized components
419  auto&& _delayed_stop =
420  mpl::get_reference_tuple<delayed_tuple_t>(std::forward<TupleT<Tp&...>>(obj));
421  invoke_impl::invoke<operation::delayed_stop, ApiT>(_delayed_stop,
422  std::forward<Args>(args)...);
423 }

◆ stop() [2/4]

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

Definition at line 427 of file functional.cpp.

428 {
429  stop<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
430 }

◆ 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 368 of file functional.cpp.

369 {
370  using data_type = std::tuple<remove_pointer_t<decay_t<Tp>>...>;
371  using priority_types_t = mpl::filter_false_t<mpl::negative_stop_priority, data_type>;
372  using priority_tuple_t = mpl::sort<trait::stop_priority, priority_types_t>;
373  using delayed_types_t = mpl::filter_false_t<mpl::positive_stop_priority, data_type>;
374  using delayed_tuple_t = mpl::sort<trait::stop_priority, delayed_types_t>;
375 
376  // stop high priority components
377  auto&& _priority_stop = mpl::get_reference_tuple<priority_tuple_t>(obj);
378  invoke_impl::invoke<operation::priority_stop, ApiT>(_priority_stop,
379  std::forward<Args>(args)...);
380 
381  // stop non-prioritized components
382  invoke_impl::invoke<operation::standard_stop, ApiT>(obj, std::forward<Args>(args)...);
383 
384  // stop low prioritized components
385  auto&& _delayed_stop = mpl::get_reference_tuple<delayed_tuple_t>(obj);
386  invoke_impl::invoke<operation::delayed_stop, ApiT>(_delayed_stop,
387  std::forward<Args>(args)...);
388 }

Referenced by tim::bundle< Tag, BundleT, TupleT >::~bundle(), tim::lightweight_tuple< Types >::~lightweight_tuple(), 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::bundle< Tag, BundleT, TupleT >::stop(), tim::lightweight_tuple< Types >::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 392 of file functional.cpp.

393 {
394  stop<TIMEMORY_API>(obj, std::forward<Args>(args)...);
395 }

◆ 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 561 of file functional.cpp.

562 {
563  invoke_impl::invoke<operation::store, ApiT>(std::forward<TupleT<Tp&...>>(obj),
564  std::forward<Args>(args)...);
565 }

◆ store() [2/4]

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

Definition at line 569 of file functional.cpp.

570 {
571  store<TIMEMORY_API>(std::forward<TupleT<Tp&...>>(obj), std::forward<Args>(args)...);
572 }

◆ 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 546 of file functional.cpp.

547 {
548  invoke_impl::invoke<operation::store, ApiT>(obj, std::forward<Args>(args)...);
549 }

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 553 of file functional.cpp.

554 {
555  store<TIMEMORY_API>(obj, std::forward<Args>(args)...);
556 }