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.
functional.cpp File Reference
+ Include dependency graph for functional.cpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  tim
 
namespace  tim::invoke
 
namespace  tim::invoke::disjoint
 

Macros

#define TIMEMORY_VARIADIC_FUNCTIONAL_CPP_   1
 
#define TIMEMORY_DEFINE_DISJOINT_FUNCTION(FUNC)
 

Functions

template<typename... Args>
void tim::invoke::print (std::ostream &os, Args &&... args)
 
template<typename... Args>
void tim::invoke::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 tim::invoke::invoke (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class OpT, typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class OpT, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::invoke (TupleT< Tp &... > &&obj, Args &&... args)
 
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)
 
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)
 
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)
 
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)
 
template<typename TupleT , typename ApiT , typename... Args>
auto tim::invoke::construct (Args &&... args)
 
template<typename TupleT , typename... Args>
auto tim::invoke::construct (Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy (TupleT< Tp... > &obj)
 
template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy (TupleT< Tp... > &obj)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy (TupleT< Tp &... > &&obj)
 
template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::destroy (TupleT< Tp &... > &&obj)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::start (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::stop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_begin (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::mark_end (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::store (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::reset (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::record (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::measure (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::push (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::pop (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_prefix (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_scope (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::assemble (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::derive (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::audit (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::add_secondary (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::get (TupleT< Tp... > &obj, void *&_ptr, size_t _hash)
 
template<template< typename... > class TupleT, typename... Tp>
auto tim::invoke::get (TupleT< Tp... > &obj, void *&_ptr, size_t _hash)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled (TupleT< Tp... > &obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled (TupleT< Tp... > &obj, Args &&... args)
 
template<typename ApiT , template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled (TupleT< Tp &... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
auto tim::invoke::get_labeled (TupleT< Tp &... > &&obj, Args &&... args)
 
template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize (ArchiveT &ar, TupleT< Tp... > &obj)
 
template<typename ArchiveT , template< typename... > class TupleT, typename... Tp>
auto tim::invoke::serialize (ArchiveT &ar, TupleT< Tp &... > &&obj)
 
template<typename... BundleT>
auto tim::invoke::get_cache ()
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::push (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::pop (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::start (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::stop (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::mark (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::mark_begin (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::mark_end (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::store (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::reset (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::record (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::measure (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::set_prefix (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::set_scope (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::assemble (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::derive (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::audit (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::disjoint::add_secondary (TupleT< Tp... > &&obj, Args &&... args)
 
template<template< typename... > class TupleT, typename... Tp, typename FuncT , typename... Args>
void tim::invoke::disjoint::invoke (TupleT< Tp... > &&obj, FuncT &&func, Args &&... args)
 

Macro Definition Documentation

◆ TIMEMORY_DEFINE_DISJOINT_FUNCTION

#define TIMEMORY_DEFINE_DISJOINT_FUNCTION (   FUNC)
Value:
namespace disjoint_impl \
{ \
template <template <typename...> class TupleT, typename... Tp, size_t... Idx, \
typename... Args> \
void FUNC(TupleT<Tp...>&& obj, index_sequence<Idx...>, Args&&... args) \
{ \
TIMEMORY_FOLD_EXPRESSION(std::get<Idx>(obj).FUNC(std::forward<Args>(args)...)); \
} \
} \
\
template <template <typename...> class TupleT, typename... Tp, typename... Args> \
void FUNC(TupleT<Tp...>&& obj, Args&&... args) \
{ \
disjoint_impl::FUNC(std::forward<TupleT<Tp...>>(obj), \
make_index_sequence<sizeof...(Tp)>{}, \
std::forward<Args>(args)...); \
}
std::make_integer_sequence< size_t, Num > make_index_sequence
Alias template make_index_sequence.
Definition: types.hpp:182

Definition at line 1175 of file functional.cpp.

◆ TIMEMORY_VARIADIC_FUNCTIONAL_CPP_

#define TIMEMORY_VARIADIC_FUNCTIONAL_CPP_   1

Definition at line 26 of file functional.cpp.