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

Go to the source code of this file.

Namespaces

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

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<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 = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state (TupleT< Tp... > &obj, Args &&...)
 
template<typename ApiT = TIMEMORY_API, template< typename... > class TupleT, typename... Tp, typename... Args>
void tim::invoke::set_state (TupleT< Tp &... > &&obj, 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 ApiT , 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 ApiT , 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::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::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::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)