timemory 3.3.0
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
tim::mpl::execution_handler< BundleT, void > Class Template Reference

#include "timemory/variadic/bundle_execute.hpp"

+ Collaboration diagram for tim::mpl::execution_handler< BundleT, void >:

Public Types

using DataT = void
 
using this_type = execution_handler< BundleT, DataT >
 

Public Member Functions

 execution_handler ()=delete
 
 execution_handler (const execution_handler &)=delete
 
execution_handleroperator= (const execution_handler &)=delete
 
 execution_handler (execution_handler &&) noexcept=default
 
execution_handleroperator= (execution_handler &&) noexcept=default
 
 execution_handler (BundleT &_bundle) noexcept
 
 operator BundleT () const
 
auto get_bundle_and_result ()
 
auto & return_bundle () noexcept
 
void return_result () noexcept
 
template<typename... Args>
this_typepush (Args &&... args)
 
template<typename... Args>
this_typepop (Args &&... args)
 
template<typename... Args>
this_typemeasure (Args &&... args)
 
template<typename... Args>
this_typesample (Args &&... args)
 
template<typename... Args>
this_typestart (Args &&... args)
 
template<typename... Args>
this_typestop (Args &&... args)
 
template<typename... Args>
this_typeassemble (Args &&... args)
 
template<typename... Args>
this_typederive (Args &&... args)
 
template<typename... Args>
this_typemark (Args &&... args)
 
template<typename... Args>
this_typemark_begin (Args &&... args)
 
template<typename... Args>
this_typemark_end (Args &&... args)
 
template<typename... Args>
this_typestore (Args &&... args)
 
template<typename... Args>
this_typeaudit (Args &&... args)
 
template<typename... Args>
this_typeadd_secondary (Args &&... args)
 
template<template< typename > class OpT, typename... Args>
this_typeinvoke (Args &&... _args)
 
template<typename... Args>
decltype(auto) get (Args &&... args)
 
template<typename... Args>
decltype(auto) get_labeled (Args &&... args)
 

Detailed Description

template<typename BundleT>
class tim::mpl::execution_handler< BundleT, void >

Definition at line 222 of file bundle_execute.hpp.

Member Typedef Documentation

◆ DataT

template<typename BundleT >
using tim::mpl::execution_handler< BundleT, void >::DataT = void

Definition at line 225 of file bundle_execute.hpp.

◆ this_type

template<typename BundleT >
using tim::mpl::execution_handler< BundleT, void >::this_type = execution_handler<BundleT, DataT>

Definition at line 226 of file bundle_execute.hpp.

Constructor & Destructor Documentation

◆ execution_handler() [1/4]

template<typename BundleT >
tim::mpl::execution_handler< BundleT, void >::execution_handler ( )
delete

◆ execution_handler() [2/4]

template<typename BundleT >
tim::mpl::execution_handler< BundleT, void >::execution_handler ( const execution_handler< BundleT, void > &  )
delete

◆ execution_handler() [3/4]

template<typename BundleT >
tim::mpl::execution_handler< BundleT, void >::execution_handler ( execution_handler< BundleT, void > &&  )
defaultnoexcept

◆ execution_handler() [4/4]

template<typename BundleT >
tim::mpl::execution_handler< BundleT, void >::execution_handler ( BundleT &  _bundle)
inlinenoexcept

Definition at line 235 of file bundle_execute.hpp.

236 : m_bundle(_bundle)
237 {}

Member Function Documentation

◆ add_secondary()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::add_secondary ( Args &&...  args)
inline

Definition at line 340 of file bundle_execute.hpp.

341 {
342 m_bundle.add_secondary(std::forward<Args>(args)...);
343 return *this;
344 }

◆ assemble()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::assemble ( Args &&...  args)
inline

Definition at line 298 of file bundle_execute.hpp.

299 {
300 m_bundle.assemble(std::forward<Args>(args)...);
301 return *this;
302 }

◆ audit()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::audit ( Args &&...  args)
inline

Definition at line 334 of file bundle_execute.hpp.

335 {
336 m_bundle.audit(std::forward<Args>(args)...);
337 return *this;
338 }

◆ derive()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::derive ( Args &&...  args)
inline

Definition at line 304 of file bundle_execute.hpp.

305 {
306 m_bundle.derive(std::forward<Args>(args)...);
307 return *this;
308 }

◆ get()

template<typename BundleT >
template<typename... Args>
decltype(auto) tim::mpl::execution_handler< BundleT, void >::get ( Args &&...  args)
inline

Definition at line 352 of file bundle_execute.hpp.

353 {
354 return execute(*this, m_bundle.get(std::forward<Args>(args)...));
355 }
auto execute(BundleT &&_bundle, FuncT &&_func, Args &&... _args, enable_if_t< is_invocable< FuncT, Args... >::value &&!std::is_void< std::result_of_t< FuncT(Args...)> >::value, int >)

References tim::mpl::execute().

◆ get_bundle_and_result()

template<typename BundleT >
auto tim::mpl::execution_handler< BundleT, void >::get_bundle_and_result ( )
inline

Definition at line 251 of file bundle_execute.hpp.

252 {
253 return std::pair<BundleT, DataT>{ m_bundle, null_type{} };
254 }

◆ get_labeled()

template<typename BundleT >
template<typename... Args>
decltype(auto) tim::mpl::execution_handler< BundleT, void >::get_labeled ( Args &&...  args)
inline

Definition at line 357 of file bundle_execute.hpp.

358 {
359 return execute(*this, m_bundle.get_labeled(std::forward<Args>(args)...));
360 return m_bundle.get_labeled(std::forward<Args>(args)...);
361 }

References tim::mpl::execute().

◆ invoke()

template<typename BundleT >
template<template< typename > class OpT, typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::invoke ( Args &&...  _args)
inline

Definition at line 346 of file bundle_execute.hpp.

347 {
348 m_bundle.template invoke<OpT>(std::forward<Args>(_args)...);
349 return *this;
350 }
std::array< char *, 4 > _args

References tim::_args.

◆ mark()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::mark ( Args &&...  args)
inline

Definition at line 310 of file bundle_execute.hpp.

311 {
312 m_bundle.mark(std::forward<Args>(args)...);
313 return *this;
314 }

◆ mark_begin()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::mark_begin ( Args &&...  args)
inline

Definition at line 316 of file bundle_execute.hpp.

317 {
318 m_bundle.mark_begin(std::forward<Args>(args)...);
319 return *this;
320 }

◆ mark_end()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::mark_end ( Args &&...  args)
inline

Definition at line 322 of file bundle_execute.hpp.

323 {
324 m_bundle.mark_end(std::forward<Args>(args)...);
325 return *this;
326 }

◆ measure()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::measure ( Args &&...  args)
inline

Definition at line 274 of file bundle_execute.hpp.

275 {
276 m_bundle.measure(std::forward<Args>(args)...);
277 return *this;
278 }

◆ operator BundleT()

template<typename BundleT >
tim::mpl::execution_handler< BundleT, void >::operator BundleT ( ) const
inline

Definition at line 239 of file bundle_execute.hpp.

239{ return m_bundle; }

◆ operator=() [1/2]

template<typename BundleT >
execution_handler & tim::mpl::execution_handler< BundleT, void >::operator= ( const execution_handler< BundleT, void > &  )
delete

◆ operator=() [2/2]

template<typename BundleT >
execution_handler & tim::mpl::execution_handler< BundleT, void >::operator= ( execution_handler< BundleT, void > &&  )
defaultnoexcept

◆ pop()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::pop ( Args &&...  args)
inline

Definition at line 268 of file bundle_execute.hpp.

269 {
270 m_bundle.pop(std::forward<Args>(args)...);
271 return *this;
272 }

◆ push()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::push ( Args &&...  args)
inline

Definition at line 262 of file bundle_execute.hpp.

263 {
264 m_bundle.push(std::forward<Args>(args)...);
265 return *this;
266 }

◆ return_bundle()

template<typename BundleT >
auto & tim::mpl::execution_handler< BundleT, void >::return_bundle ( )
inlinenoexcept

Definition at line 256 of file bundle_execute.hpp.

256{ return m_bundle; }

◆ return_result()

template<typename BundleT >
void tim::mpl::execution_handler< BundleT, void >::return_result ( )
inlinenoexcept

Definition at line 257 of file bundle_execute.hpp.

257{}

◆ sample()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::sample ( Args &&...  args)
inline

Definition at line 280 of file bundle_execute.hpp.

281 {
282 m_bundle.sample(std::forward<Args>(args)...);
283 return *this;
284 }

◆ start()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::start ( Args &&...  args)
inline

Definition at line 286 of file bundle_execute.hpp.

287 {
288 m_bundle.start(std::forward<Args>(args)...);
289 return *this;
290 }

◆ stop()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::stop ( Args &&...  args)
inline

Definition at line 292 of file bundle_execute.hpp.

293 {
294 m_bundle.stop(std::forward<Args>(args)...);
295 return *this;
296 }

◆ store()

template<typename BundleT >
template<typename... Args>
this_type & tim::mpl::execution_handler< BundleT, void >::store ( Args &&...  args)
inline

Definition at line 328 of file bundle_execute.hpp.

329 {
330 m_bundle.store(std::forward<Args>(args)...);
331 return *this;
332 }

The documentation for this class was generated from the following file: