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.
|
Example: bundle<Tag, component_bundle<Foo>, mixed_wrapper_types<concat<Bar, Baz>>>
will use Tag
+ trait::is_available<Tag>
or trait::runtime_available<Tag>
to disable this bundle at compile-time or run-time, respectively. It will covert component_bundle<Foo>
to component_bundle<Foo, Bar, Baz>
for purposes of function signatures and it will instantiate std::tuple<...>
depending on the compile-time availability of Bar
and Baz
. mixed_wrapper_types
is a dummy type with the appropriate aliases to perform these conversions. Here is a theoretical implementation of mixed_wrapper_types
(which supports allocating components on the stack and the heap):
More...
#include "timemory/variadic/bundle.hpp"
Public Types | |
using | captured_location_t = source_location::captured |
using | this_type = typename TupleT::template this_type< BundleT > |
using | type = typename TupleT::template type< BundleT > |
using | component_type = typename TupleT::template component_type< BundleT > |
using | data_type = typename TupleT::template data_type< Tag > |
using | type_list_type = typename TupleT::type_list_type |
using | value_type = data_type |
using | size_type = typename bundle_type::size_type |
using | initializer_type = std::function< void(this_type &)> |
using | transient_func_t = utility::transient_function< void(this_type &)> |
template<typename T , typename... U> | |
using | quirk_config = tim::variadic::impl::quirk_config< T, reference_type, U... > |
using | base_bundle_type = conditional_t< trait::is_available< Tag >::value, impl::base_bundle< Tag, remove_pointer_t< Types >... >, impl::base_bundle< Tag, std::tuple<> > > |
using | tuple_type = data_type |
using | impl_type = data_type |
Public Member Functions | |
bundle () | |
template<typename... T> | |
bundle (const string_t &_key, quirk::config< T... >, transient_func_t=get_initializer()) | |
template<typename... T> | |
bundle (hash_value_t _hash, quirk::config< T... >, transient_func_t=get_initializer()) | |
template<typename... T> | |
bundle (const captured_location_t &_loc, quirk::config< T... >, transient_func_t=get_initializer()) | |
template<typename... T> | |
bundle (const string_t &_key, bool _store, quirk::config< T... >, transient_func_t=get_initializer()) | |
template<typename... T> | |
bundle (const captured_location_t &_loc, bool _store, quirk::config< T... >, transient_func_t=get_initializer()) | |
bundle (hash_value_t _hash, bool _store=true, scope::config _scope=scope::get_default(), transient_func_t=get_initializer()) | |
bundle (const string_t &_key, bool _store=true, scope::config _scope=scope::get_default(), transient_func_t=get_initializer()) | |
bundle (const captured_location_t &_loc, bool _store=true, scope::config _scope=scope::get_default(), transient_func_t=get_initializer()) | |
bundle (hash_value_t _hash, scope::config _scope, transient_func_t=get_initializer()) | |
bundle (const string_t &_key, scope::config _scope, transient_func_t=get_initializer()) | |
bundle (const captured_location_t &_loc, scope::config _scope, transient_func_t=get_initializer()) | |
~bundle () | |
bundle (const bundle &rhs) | |
bundle (bundle &&)=default | |
bundle & | operator= (const bundle &rhs) |
bundle & | operator= (bundle &&)=default |
this_type & | operator-= (const this_type &rhs) |
this_type & | operator+= (const this_type &rhs) |
template<typename Op , enable_if_t<!is_this_type< Op >()> = 0> | |
this_type & | operator-= (Op &&rhs) |
template<typename Op , enable_if_t<!is_this_type< Op >()> = 0> | |
this_type & | operator+= (Op &&rhs) |
template<typename Op , enable_if_t<!is_this_type< Op >()> = 0> | |
this_type & | operator*= (Op &&rhs) |
template<typename Op , enable_if_t<!is_this_type< Op >()> = 0> | |
this_type & | operator/= (Op &&rhs) |
bundle | clone (bool store, scope::config _scope=scope::get_default()) |
this_type & | push () |
tells each component to push itself into the call-stack hierarchy More... | |
this_type & | pop () |
tells each component to pop itself off of the call-stack hierarchy More... | |
template<typename... Tp> | |
this_type & | push (mpl::piecewise_select< Tp... >) |
selective push More... | |
template<typename... Tp> | |
this_type & | push (mpl::piecewise_ignore< Tp... >) |
selective push More... | |
template<typename... Tp> | |
this_type & | push (mpl::piecewise_select< Tp... >, scope::config) |
selective push with scope configuration More... | |
template<typename... Tp> | |
this_type & | push (mpl::piecewise_ignore< Tp... >, scope::config) |
selective push with scope configuration More... | |
template<typename... Tp> | |
this_type & | pop (mpl::piecewise_select< Tp... >) |
selective pop More... | |
template<typename... Tp> | |
this_type & | pop (mpl::piecewise_ignore< Tp... >) |
selective pop More... | |
template<typename... Args> | |
this_type & | measure (Args &&...) |
requests each component record a measurment More... | |
template<typename... Args> | |
this_type & | sample (Args &&...) |
requests each component take a sample (if supported) More... | |
template<typename... Args> | |
this_type & | start (Args &&...) |
invokes start on all the components More... | |
template<typename... Args> | |
this_type & | stop (Args &&...) |
invokes stop on all the components More... | |
template<typename... Args> | |
this_type & | record (Args &&...) |
requests each component perform a measurement More... | |
template<typename... Args> | |
this_type & | reset (Args &&...) |
invokes reset member function on all the components More... | |
template<typename... Args> | |
this_type & | start (mpl::lightweight, Args &&...) |
variant of start() which excludes push() More... | |
template<typename... Args> | |
this_type & | stop (mpl::lightweight, Args &&...) |
variant of stop() which excludes pop() More... | |
template<typename... Tp, typename... Args> | |
this_type & | start (mpl::piecewise_select< Tp... >, Args &&...) |
variant of start() which only gets applied to Tp types More... | |
template<typename... Tp, typename... Args> | |
this_type & | start (mpl::piecewise_ignore< Tp... >, Args &&...) |
variant of start() which gets applied to non-Tp types More... | |
template<typename... Tp, typename... Args> | |
this_type & | stop (mpl::piecewise_select< Tp... >, Args &&...) |
variant of stop() which only gets applied to Tp types More... | |
template<typename... Tp, typename... Args> | |
this_type & | stop (mpl::piecewise_ignore< Tp... >, Args &&...) |
variant of stop() which gets applied to non-Tp types More... | |
uint64_t | count () |
number of objects that will be performing measurements More... | |
template<typename FuncT , typename... Args> | |
decltype(auto) | execute (FuncT &&func, Args &&... args) |
when chaining together operations, this function enables executing a function inside the chain More... | |
template<typename... Args> | |
this_type & | construct (Args &&... _args) |
construct the objects that have constructors with matching arguments More... | |
template<typename... Args> | |
this_type & | assemble (Args &&... _args) |
provide preliminary info to the objects with matching arguments. This is typically used to notify a component that it has been bundled alongside another component that it can extract data from. More... | |
template<typename... Args> | |
this_type & | derive (Args &&... _args) |
provide conclusive info to the objects with matching arguments. This is typically used by components to extract data from another component it has been bundled alongside, e.g. the cpu_util component can extract data from tim::component::wall_clock and tim::component::cpu_clock More... | |
template<typename... Args> | |
this_type & | mark (Args &&... _args) |
mark an atomic event More... | |
template<typename... Args> | |
this_type & | mark_begin (Args &&... _args) |
mark a beginning position in the execution (typically used by asynchronous structures) More... | |
template<typename... Args> | |
this_type & | mark_end (Args &&... _args) |
mark a beginning position in the execution (typically used by asynchronous structures) More... | |
template<typename... Args> | |
this_type & | store (Args &&... _args) |
store a value More... | |
template<typename... Args> | |
this_type & | audit (Args &&... _args) |
allow the components to inspect the incoming arguments before start or out-going return value before returning (typically using in GOTCHA components) More... | |
template<typename... Args> | |
this_type & | add_secondary (Args &&... _args) |
perform an add_secondary operation. This operation allows components to add additional entries to storage which are their direct descendant More... | |
template<typename... Args> | |
this_type & | update_statistics (Args &&... _args) |
perform an add_secondary operation. This operation allows components to add additional entries to storage which are their direct descendant More... | |
template<template< typename > class OpT, typename... Args> | |
this_type & | invoke (Args &&... _args) |
generic member function for invoking user-provided operations More... | |
template<template< typename > class OpT, typename... Tp, typename... Args> | |
this_type & | invoke (mpl::piecewise_select< Tp... >, Args &&... _args) |
generic member function for invoking user-provided operations on a specific set of component types More... | |
template<template< typename > class OpT, typename... Tp, typename... Args> | |
this_type & | invoke (mpl::piecewise_ignore< Tp... >, Args &&... _args) |
generic member function for invoking user-provided operations on all types that are not listed More... | |
template<bool PrintPrefix = true, bool PrintLaps = true> | |
this_type & | print (std::ostream &os, bool _endl=false) const |
template<typename... Args> | |
auto | get (Args &&...) const |
returns a tuple of invoking get() on all the components More... | |
template<typename... Args> | |
auto | get_labeled (Args &&...) const |
returns a tuple of the component label + invoking get() on all the components More... | |
data_type & | data () |
returns a reference to the underlying tuple of components More... | |
const data_type & | data () const |
returns a const reference to the underlying tuple of components More... | |
template<typename U > | |
decltype(auto) | get () |
get a component from the bundle More... | |
template<typename U > | |
decltype(auto) | get () const |
get a component from the bundle More... | |
template<typename U , typename FuncT > | |
decltype(auto) | get (FuncT &&) |
get a component from the bundle and apply function if the pointer is valid More... | |
template<typename U , typename FuncT > | |
decltype(auto) | get (FuncT &&) const |
get a component from the bundle More... | |
this_type & | get (void *&ptr, hash_value_t _hash) const |
performs an opaque search. Opaque searches are generally provided by user_bundles with a functor such as this: More... | |
template<typename U > | |
auto | get_component (enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U >, data_type >::value, int >=0) |
this is a simple alternative to get<T>() when used from SFINAE in operation namespace which has a struct get also templated. Usage there can cause error with older compilers More... | |
template<typename U > | |
auto | get_component (enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U > *, data_type >::value, int >=0) |
template<typename U > | |
auto & | get_reference (enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U >, data_type >::value, int >=0) |
returns a reference from a stack component instead of a pointer More... | |
template<typename U > | |
auto & | get_reference (enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U > *, data_type >::value, int >=0) |
returns a reference from a heap component instead of a pointer More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, typename... Args> | |
enable_if_t< will_heap_init< T >() &&!will_opaque_init< T >(), bool > | init (Args &&... _args, enable_if_t< is_constructible< T, Args... >(), int >=0) |
create an optional type that is in variadic list AND is available AND accepts arguments More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, typename... Args> | |
enable_if_t< will_heap_init< T >() &&!will_opaque_init< T >(), bool > | init (Args &&..., enable_if_t<!is_constructible< T, Args... >() &&is_default_constructible< T >(), long >=0) |
create an optional type that is in variadic list AND is available but is not constructible with provided arguments More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, typename... Args> | |
bool | init (Args &&... _args, enable_if_t< can_stack_init< T >(), int >=0) |
try to re-create a stack object with provided arguments More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, typename... Args> | |
bool | init (Args &&..., enable_if_t< will_opaque_init< T >(), long >=0) |
if a type is not in variadic list but a tim::component::user_bundle is available, add it in there More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, typename... Args> | |
enable_if_t<!trait::is_available< T >::value||!(is_one_of< T *, data_type >::value||is_one_of< T, data_type >::value||bundle_type::has_user_bundle_v), bool > | init (Args &&...) |
do nothing if type not available, not one of the variadic types, and there is no user bundle available More... | |
template<typename... T, typename... Args> | |
std::array< bool, sizeof...(T)> | initialize (Args &&... args) |
variadic initialization More... | |
template<typename... Tail> | |
this_type & | disable () |
delete any optional types currently allocated More... | |
template<typename T , typename Func , typename... Args, enable_if_t< is_one_of< T, data_type >::value, int > = 0> | |
this_type & | type_apply (Func &&_func, Args &&... _args) |
apply a member function to a stack type that is in variadic list AND is available More... | |
template<typename T , typename Func , typename... Args, enable_if_t< trait::is_available< T >::value, int > = 0> | |
this_type & | type_apply (Func &&_func, Args &&... _args) |
apply a member function to either a heap type or a type that is in a user_bundle More... | |
template<typename T , typename Func , typename... Args, enable_if_t<!trait::is_available< T >::value, int > = 0> | |
this_type & | type_apply (Func &&, Args &&...) |
ignore applying a member function because the type is not present More... | |
void | set_prefix (const string_t &) const |
this_type & | set_prefix (hash_value_t) const |
this_type & | set_prefix (captured_location_t) const |
this_type & | set_scope (scope::config) |
void | rekey (const string_t &_key) |
void | rekey (captured_location_t _loc) |
void | rekey (uint64_t _hash) |
scope::transient_destructor | get_scope_destructor () |
returns a stack-object for calling stop More... | |
scope::transient_destructor | get_scope_destructor (utility::transient_function< void(this_type &)>) |
returns a stack-object for calling some member functions when the scope is exited. More... | |
const data_type & | get_data () const |
template<typename Archive > | |
void | serialize (Archive &ar, const unsigned int) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | push (mpl::piecewise_select< Tp... >) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | push (mpl::piecewise_ignore< Tp... >) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | push (mpl::piecewise_select< Tp... >, scope::config _scope) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | push (mpl::piecewise_ignore< Tp... >, scope::config _scope) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | pop (mpl::piecewise_select< Tp... >) |
template<typename... Tp> | |
bundle< Tag, BundleT, TupleT >::this_type & | pop (mpl::piecewise_ignore< Tp... >) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | measure (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | sample (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | start (mpl::lightweight, Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | stop (mpl::lightweight, Args &&... args) |
template<typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | start (mpl::piecewise_select< Tp... >, Args &&... args) |
template<typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | start (mpl::piecewise_ignore< Tp... >, Args &&... args) |
template<typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | stop (mpl::piecewise_select< Tp... >, Args &&... args) |
template<typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | stop (mpl::piecewise_ignore< Tp... >, Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | start (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | stop (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | record (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | reset (Args &&... args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | construct (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | assemble (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | derive (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | mark (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | mark_begin (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | mark_end (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | store (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | audit (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | add_secondary (Args &&... _args) |
template<typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | update_statistics (Args &&... _args) |
template<template< typename > class OpT, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | invoke (Args &&... _args) |
template<template< typename > class OpT, typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | invoke (mpl::piecewise_select< Tp... >, Args &&... _args) |
template<template< typename > class OpT, typename... Tp, typename... Args> | |
bundle< Tag, BundleT, TupleT >::this_type & | invoke (mpl::piecewise_ignore< Tp... >, Args &&... _args) |
template<typename... Args> | |
auto | get (Args &&... args) const |
template<typename... Args> | |
auto | get_labeled (Args &&... args) const |
template<typename... Tail> | |
bundle< Tag, BundleT, TupleT >::this_type & | disable () |
template<typename T , typename Func , typename... Args, enable_if_t< trait::is_available< T >::value, int > > | |
bundle< Tag, BundleT, TupleT >::this_type & | type_apply (Func &&_func, Args &&... _args) |
template<typename T , typename Func , typename... Args, enable_if_t<!trait::is_available< T >::value, int > > | |
bundle< Tag, BundleT, TupleT >::this_type & | type_apply (Func &&, Args &&...) |
template<bool PrintPrefix, bool PrintLaps> | |
bundle< Tag, BundleT, TupleT >::this_type & | print (std::ostream &os, bool _endl) const |
Static Public Member Functions | |
static initializer_type & | get_initializer () |
template<typename U > | |
static constexpr bool | is_this_type () |
Query whether type matches this_type. More... | |
static constexpr bool | has_user_bundle () |
Query at compile-time whether a user_bundle exists in the set of components. user_bundle are more restricted versions of component bundlers but allow runtime insertion of components. More... | |
template<typename U > | |
static constexpr bool | can_stack_init () |
Query at compile-time whether initialization can occur on the stack. More... | |
template<typename U > | |
static constexpr bool | can_heap_init () |
Query at compile-time whether initialization can occur on the heap. More... | |
template<typename U > | |
static constexpr bool | can_placement_init () |
Query at compile-time whether initialization can occur via a placement new. Placement new init allows for the combination of optional initialization without a heap allocation. Not currently available. More... | |
template<typename U > | |
static constexpr bool | can_init () |
Query at compile-time whether the specified type can be initialized. More... | |
template<typename U > | |
static constexpr bool | will_heap_init () |
Query at compile-time whether initialization will occur on the heap. can_heap_init<T>() && !will_heap_init<T>() will indicate that a stack-allocated instance of the same type exists. More... | |
template<typename U > | |
static constexpr bool | will_opaque_init () |
Query at compile-time whether initialization will happen with an opaque wrapper (i.e. via user bundle). In this situation, initialization arguments are ignored and the component will only be initialized with the tim::scope::config of the bundle. More... | |
template<typename U , typename... Args, typename T = remove_pointer_decay_t<U>, enable_if_t< trait::is_available< T >::value > = 0> | |
static constexpr bool | is_constructible () |
Query at compile-time whether type can be constructed with the given argument types. if type is not available, then it probably won't be defined, so this places the trait::is_available<T> check in the template parameters and the std::is_constructible<T, ...> in the body to avoid undefined behavior. More... | |
template<typename U , typename... Args, typename T = remove_pointer_decay_t<U>, enable_if_t<!trait::is_available< T >::value > = 0> | |
static constexpr bool | is_constructible () |
Return false if the type is not available. More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, enable_if_t< trait::is_available< T >::value > = 0> | |
static constexpr bool | is_default_constructible () |
Query at compile-time whether type supports default construction. If type is not available, then it probably won't be defined, so this places the trait::is_available<T> check in the template parameters and the std::is_constructible<T, ...> in the body to avoid undefined behavior. More... | |
template<typename U , typename T = remove_pointer_decay_t<U>, enable_if_t<!trait::is_available< T >::value > = 0> | |
static constexpr bool | is_default_constructible () |
Return false if the type is not available. More... | |
static void | init_storage () |
requests the component initialize their storage More... | |
static constexpr uint64_t | fixed_count () |
query the number of (compile-time) fixed components More... | |
static constexpr uint64_t | optional_count () |
query the number of (run-time) optional components More... | |
Protected Types | |
using | apply_v = mpl::apply< void > |
using | bundle_type = api_bundle< Tag, typename TupleT::available_type > |
using | string_t = typename bundle_type::string_t |
using | reference_type = typename TupleT::reference_type |
Protected Member Functions | |
template<typename T > | |
void | set_scope (T *obj, internal_tag) const |
template<typename T > | |
void | set_prefix (T *obj, internal_tag) const |
Protected Attributes | |
data_type | m_data {} |
Friends | |
template<typename... Tp> | |
class | impl::base_bundle |
template<typename... Tp> | |
class | auto_base_bundle |
template<typename... Tp> | |
class | auto_bundle |
template<typename... Tp> | |
class | auto_tuple |
template<typename... Tp> | |
class | auto_list |
this_type | operator+ (this_type lhs, const this_type &rhs) |
this_type | operator- (this_type lhs, const this_type &rhs) |
template<typename Op > | |
enable_if_t<!std::is_arithmetic< Op >::value, this_type > | operator* (this_type lhs, const Op &rhs) |
template<typename Op > | |
enable_if_t<!std::is_arithmetic< Op >::value, this_type > | operator/ (this_type lhs, const Op &rhs) |
std::ostream & | operator<< (std::ostream &os, const bundle &obj) |
Example: bundle<Tag, component_bundle<Foo>, mixed_wrapper_types<concat<Bar, Baz>>>
will use Tag
+ trait::is_available<Tag>
or trait::runtime_available<Tag>
to disable this bundle at compile-time or run-time, respectively. It will covert component_bundle<Foo>
to component_bundle<Foo, Bar, Baz>
for purposes of function signatures and it will instantiate std::tuple<...>
depending on the compile-time availability of Bar
and Baz
. mixed_wrapper_types
is a dummy type with the appropriate aliases to perform these conversions. Here is a theoretical implementation of mixed_wrapper_types
(which supports allocating components on the stack and the heap):
Tag | API tag type, e.g. TIMEMORY_API |
BundleT | The empty or empty + tag derived type. |
TupleT | The set of components wrapped in a type which provides the appropriate aliases. |
Definition at line 111 of file bundle.hpp.
|
protected |
Definition at line 143 of file bundle.hpp.
|
inherited |
Definition at line 643 of file base_bundle.hpp.
|
protected |
Definition at line 144 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::captured_location_t = source_location::captured |
Definition at line 149 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::component_type = typename TupleT::template component_type<BundleT> |
Definition at line 152 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::data_type = typename TupleT::template data_type<Tag> |
Definition at line 153 of file bundle.hpp.
|
inherited |
Definition at line 652 of file base_bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::initializer_type = std::function<void(this_type&)> |
Definition at line 157 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::quirk_config = tim::variadic::impl::quirk_config<T, reference_type, U...> |
Definition at line 164 of file bundle.hpp.
|
protected |
Definition at line 146 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::size_type = typename bundle_type::size_type |
Definition at line 156 of file bundle.hpp.
|
protected |
Definition at line 145 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::this_type = typename TupleT::template this_type<BundleT> |
Definition at line 150 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::transient_func_t = utility::transient_function<void(this_type&)> |
Definition at line 158 of file bundle.hpp.
|
inherited |
Definition at line 651 of file base_bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::type = typename TupleT::template type<BundleT> |
Definition at line 151 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::type_list_type = typename TupleT::type_list_type |
Definition at line 154 of file bundle.hpp.
using tim::bundle< Tag, BundleT, TupleT >::value_type = data_type |
Definition at line 155 of file bundle.hpp.
tim::bundle< Tag, BundleT, TupleT >::bundle |
Definition at line 55 of file bundle.cpp.
References IF_CONSTEXPR, and tim::init().
|
explicit |
Definition at line 67 of file bundle.cpp.
|
explicit |
Definition at line 83 of file bundle.cpp.
|
explicit |
Definition at line 99 of file bundle.cpp.
|
explicit |
Definition at line 116 of file bundle.cpp.
|
explicit |
Definition at line 133 of file bundle.cpp.
|
explicit |
Definition at line 149 of file bundle.cpp.
|
explicit |
|
explicit |
|
explicit |
|
explicit |
|
explicit |
tim::bundle< Tag, BundleT, TupleT >::~bundle |
Definition at line 228 of file bundle.cpp.
References tim::debug, IF_CONSTEXPR, PRINT_HERE, tim::invoke::stop(), and tim::verbose.
tim::bundle< Tag, BundleT, TupleT >::bundle | ( | const bundle< Tag, BundleT, TupleT > & | rhs | ) |
|
default |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::add_secondary | ( | Args &&... | _args | ) |
this_type & tim::bundle< Tag, BundleT, TupleT >::add_secondary | ( | Args &&... | _args | ) |
perform an add_secondary operation. This operation allows components to add additional entries to storage which are their direct descendant
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::assemble | ( | Args &&... | _args | ) |
Definition at line 723 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::assemble | ( | Args &&... | _args | ) |
provide preliminary info to the objects with matching arguments. This is typically used to notify a component that it has been bundled alongside another component that it can extract data from.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::audit | ( | Args &&... | _args | ) |
Definition at line 795 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::audit | ( | Args &&... | _args | ) |
allow the components to inspect the incoming arguments before start or out-going return value before returning (typically using in GOTCHA components)
|
inlinestaticconstexpr |
Query at compile-time whether initialization can occur on the heap.
Definition at line 299 of file bundle.hpp.
|
inlinestaticconstexpr |
Query at compile-time whether the specified type can be initialized.
Definition at line 316 of file bundle.hpp.
|
inlinestaticconstexpr |
Query at compile-time whether initialization can occur via a placement new. Placement new init allows for the combination of optional initialization without a heap allocation. Not currently available.
Definition at line 309 of file bundle.hpp.
|
inlinestaticconstexpr |
Query at compile-time whether initialization can occur on the stack.
Definition at line 291 of file bundle.hpp.
bundle< Tag, BundleT, TupleT > tim::bundle< Tag, BundleT, TupleT >::clone | ( | bool | store, |
scope::config | _scope = scope::get_default() |
||
) |
Definition at line 305 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::construct | ( | Args &&... | _args | ) |
Definition at line 710 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::construct | ( | Args &&... | _args | ) |
construct the objects that have constructors with matching arguments
uint64_t tim::bundle< Tag, BundleT, TupleT >::count |
bundle< Tag, BundleT, TupleT >::data_type & tim::bundle< Tag, BundleT, TupleT >::data |
returns a reference to the underlying tuple of components
Definition at line 906 of file bundle.cpp.
const bundle< Tag, BundleT, TupleT >::data_type & tim::bundle< Tag, BundleT, TupleT >::data |
returns a const reference to the underlying tuple of components
Definition at line 915 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::derive | ( | Args &&... | _args | ) |
Definition at line 734 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::derive | ( | Args &&... | _args | ) |
provide conclusive info to the objects with matching arguments. This is typically used by components to extract data from another component it has been bundled alongside, e.g. the cpu_util component can extract data from tim::component::wall_clock and tim::component::cpu_clock
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::disable | ( | ) |
this_type & tim::bundle< Tag, BundleT, TupleT >::disable | ( | ) |
delete any optional types currently allocated
decltype(auto) tim::bundle< Tag, BundleT, TupleT >::execute | ( | FuncT && | func, |
Args &&... | args | ||
) |
when chaining together operations, this function enables executing a function inside the chain
|
staticconstexpr |
query the number of (compile-time) fixed components
Definition at line 886 of file bundle.hpp.
decltype(auto) tim::bundle< Tag, BundleT, TupleT >::get | ( | ) |
get a component from the bundle
decltype(auto) tim::bundle< Tag, BundleT, TupleT >::get | ( | ) | const |
get a component from the bundle
auto tim::bundle< Tag, BundleT, TupleT >::get | ( | Args &&... | args | ) | const |
Definition at line 886 of file bundle.cpp.
auto tim::bundle< Tag, BundleT, TupleT >::get | ( | Args && | ... | ) | const |
returns a tuple of invoking get() on all the components
decltype(auto) tim::bundle< Tag, BundleT, TupleT >::get | ( | FuncT && | ) |
get a component from the bundle and apply function if the pointer is valid
decltype(auto) tim::bundle< Tag, BundleT, TupleT >::get | ( | FuncT && | ) | const |
get a component from the bundle
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::get | ( | void *& | ptr, |
hash_value_t | _hash | ||
) | const |
performs an opaque search. Opaque searches are generally provided by user_bundles with a functor such as this:
And the component provides this function:
Definition at line 925 of file bundle.cpp.
auto tim::bundle< Tag, BundleT, TupleT >::get_component | ( | enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U > *, data_type >::value, int > | = 0 | ) |
Definition at line 996 of file bundle.hpp.
auto tim::bundle< Tag, BundleT, TupleT >::get_component | ( | enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U >, data_type >::value, int > | = 0 | ) |
this is a simple alternative to get<T>() when used from SFINAE in operation namespace which has a struct get also templated. Usage there can cause error with older compilers
Definition at line 984 of file bundle.hpp.
|
inline |
Definition at line 829 of file bundle.hpp.
|
static |
Definition at line 46 of file bundle.cpp.
auto tim::bundle< Tag, BundleT, TupleT >::get_labeled | ( | Args &&... | args | ) | const |
Definition at line 897 of file bundle.cpp.
auto tim::bundle< Tag, BundleT, TupleT >::get_labeled | ( | Args && | ... | ) | const |
returns a tuple of the component label + invoking get() on all the components
auto & tim::bundle< Tag, BundleT, TupleT >::get_reference | ( | enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U > *, data_type >::value, int > | = 0 | ) |
returns a reference from a heap component instead of a pointer
Definition at line 1020 of file bundle.hpp.
auto & tim::bundle< Tag, BundleT, TupleT >::get_reference | ( | enable_if_t< trait::is_available< remove_pointer_decay_t< U > >::value &&is_one_of< remove_pointer_decay_t< U >, data_type >::value, int > | = 0 | ) |
returns a reference from a stack component instead of a pointer
Definition at line 1008 of file bundle.hpp.
scope::transient_destructor tim::bundle< Tag, BundleT, TupleT >::get_scope_destructor |
returns a stack-object for calling stop
Definition at line 1053 of file bundle.cpp.
References tim::invoke::stop().
scope::transient_destructor tim::bundle< Tag, BundleT, TupleT >::get_scope_destructor | ( | utility::transient_function< void(this_type &)> | _func | ) |
returns a stack-object for calling some member functions when the scope is exited.
Definition at line 1062 of file bundle.cpp.
|
inlinestaticconstexpr |
Query at compile-time whether a user_bundle exists in the set of components. user_bundle are more restricted versions of component bundlers but allow runtime insertion of components.
Definition at line 287 of file bundle.hpp.
|
inline |
try to re-create a stack object with provided arguments
Definition at line 732 of file bundle.hpp.
References tim::_args, tim::debug, IF_CONSTEXPR, tim::invoke::set_prefix(), tim::invoke::set_scope(), and tim::verbose.
|
inline |
create an optional type that is in variadic list AND is available AND accepts arguments
Definition at line 650 of file bundle.hpp.
References tim::_args, tim::debug, tim::invoke::set_prefix(), tim::invoke::set_scope(), and tim::verbose.
|
inline |
do nothing if type not available, not one of the variadic types, and there is no user bundle available
Definition at line 778 of file bundle.hpp.
|
inline |
if a type is not in variadic list but a tim::component::user_bundle is available, add it in there
Definition at line 755 of file bundle.hpp.
|
inline |
create an optional type that is in variadic list AND is available but is not constructible with provided arguments
Definition at line 691 of file bundle.hpp.
References tim::debug, tim::invoke::set_prefix(), tim::invoke::set_scope(), and tim::verbose.
|
static |
requests the component initialize their storage
Definition at line 317 of file bundle.cpp.
References tim::consume_parameters().
std::array< bool, sizeof...(T)> tim::bundle< Tag, BundleT, TupleT >::initialize | ( | Args &&... | args | ) |
variadic initialization
T | components to initialize |
Args | arguments to pass to the construction of the component |
Definition at line 953 of file bundle.cpp.
References TIMEMORY_FOLD_EXPANSION.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | Args &&... | _args | ) |
this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | Args &&... | _args | ) |
generic member function for invoking user-provided operations
OpT | Operation struct |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | mpl::piecewise_ignore< Tp... > | , |
Args &&... | _args | ||
) |
Definition at line 858 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | mpl::piecewise_ignore< Tp... > | , |
Args &&... | _args | ||
) |
generic member function for invoking user-provided operations on all types that are not listed
OpT | Operation struct |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | mpl::piecewise_select< Tp... > | , |
Args &&... | _args | ||
) |
Definition at line 843 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::invoke | ( | mpl::piecewise_select< Tp... > | , |
Args &&... | _args | ||
) |
generic member function for invoking user-provided operations on a specific set of component types
OpT | Operation struct |
|
inlinestaticconstexpr |
Query at compile-time whether type can be constructed with the given argument types. if type is not available, then it probably won't be defined, so this places the trait::is_available<T>
check in the template parameters and the std::is_constructible<T, ...>
in the body to avoid undefined behavior.
Definition at line 351 of file bundle.hpp.
|
inlinestaticconstexpr |
Return false if the type is not available.
Definition at line 359 of file bundle.hpp.
|
inlinestaticconstexpr |
Query at compile-time whether type supports default construction. If type is not available, then it probably won't be defined, so this places the trait::is_available<T>
check in the template parameters and the std::is_constructible<T, ...>
in the body to avoid undefined behavior.
Definition at line 370 of file bundle.hpp.
|
inlinestaticconstexpr |
Return false if the type is not available.
Definition at line 378 of file bundle.hpp.
|
inlinestaticconstexpr |
Query whether type matches this_type.
Definition at line 168 of file bundle.hpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::mark | ( | Args &&... | _args | ) |
Definition at line 745 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::mark | ( | Args &&... | _args | ) |
mark an atomic event
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::mark_begin | ( | Args &&... | _args | ) |
Definition at line 756 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::mark_begin | ( | Args &&... | _args | ) |
mark a beginning position in the execution (typically used by asynchronous structures)
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::mark_end | ( | Args &&... | _args | ) |
Definition at line 767 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::mark_end | ( | Args &&... | _args | ) |
mark a beginning position in the execution (typically used by asynchronous structures)
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::measure | ( | Args &&... | args | ) |
Definition at line 484 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::measure | ( | Args && | ... | ) |
requests each component record a measurment
|
inline |
Definition at line 244 of file bundle.hpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::operator+= | ( | const this_type & | rhs | ) |
Definition at line 294 of file bundle.cpp.
References std::operator+=().
|
inline |
Definition at line 237 of file bundle.hpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::operator-= | ( | const this_type & | rhs | ) |
Definition at line 283 of file bundle.cpp.
|
inline |
Definition at line 230 of file bundle.hpp.
|
inline |
Definition at line 251 of file bundle.hpp.
|
default |
bundle< Tag, BundleT, TupleT > & tim::bundle< Tag, BundleT, TupleT >::operator= | ( | const bundle< Tag, BundleT, TupleT > & | rhs | ) |
Definition at line 266 of file bundle.cpp.
|
staticconstexpr |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::pop |
tells each component to pop itself off of the call-stack hierarchy
Definition at line 429 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::pop | ( | mpl::piecewise_ignore< Tp... > | ) |
Definition at line 466 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::pop | ( | mpl::piecewise_ignore< Tp... > | ) |
selective pop
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::pop | ( | mpl::piecewise_select< Tp... > | ) |
Definition at line 449 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::pop | ( | mpl::piecewise_select< Tp... > | ) |
selective pop
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::print | ( | std::ostream & | os, |
bool | _endl | ||
) | const |
this_type & tim::bundle< Tag, BundleT, TupleT >::print | ( | std::ostream & | os, |
bool | _endl = false |
||
) | const |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::push |
tells each component to push itself into the call-stack hierarchy
Definition at line 331 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_ignore< Tp... > | ) |
Definition at line 372 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_ignore< Tp... > | ) |
selective push
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_ignore< Tp... > | , |
scope::config | _scope | ||
) |
Definition at line 411 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_ignore< Tp... > | , |
scope::config | |||
) |
selective push with scope configuration
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_select< Tp... > | ) |
Definition at line 353 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_select< Tp... > | ) |
selective push
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_select< Tp... > | , |
scope::config | _scope | ||
) |
Definition at line 392 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::push | ( | mpl::piecewise_select< Tp... > | , |
scope::config | |||
) |
selective push with scope configuration
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::record | ( | Args &&... | args | ) |
Definition at line 671 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::record | ( | Args && | ... | ) |
requests each component perform a measurement
void tim::bundle< Tag, BundleT, TupleT >::rekey | ( | captured_location_t | _loc | ) |
Definition at line 1042 of file bundle.hpp.
References tim::source_location::captured::get_hash(), and tim::invoke::set_prefix().
void tim::bundle< Tag, BundleT, TupleT >::rekey | ( | const string_t & | _key | ) |
Definition at line 1032 of file bundle.hpp.
References tim::invoke::set_prefix().
void tim::bundle< Tag, BundleT, TupleT >::rekey | ( | uint64_t | _hash | ) |
Definition at line 1052 of file bundle.hpp.
References tim::invoke::set_prefix().
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::reset | ( | Args &&... | args | ) |
Definition at line 686 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::reset | ( | Args && | ... | ) |
invokes reset member function on all the components
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::sample | ( | Args &&... | args | ) |
Definition at line 495 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::sample | ( | Args && | ... | ) |
requests each component take a sample (if supported)
void tim::bundle< Tag, BundleT, TupleT >::serialize | ( | Archive & | ar, |
const unsigned int | |||
) |
Definition at line 1140 of file bundle.cpp.
References PRINT_HERE, and tim::invoke::serialize().
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::set_prefix | ( | captured_location_t | _loc | ) | const |
Definition at line 1030 of file bundle.cpp.
References tim::source_location::captured::get_hash(), and tim::invoke::set_prefix().
void tim::bundle< Tag, BundleT, TupleT >::set_prefix | ( | const string_t & | _key | ) | const |
Definition at line 994 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::set_prefix | ( | hash_value_t | _hash | ) | const |
Definition at line 1006 of file bundle.cpp.
References tim::_prefix, tim::hash::find_hash_identifier(), tim::hash::get_hash_aliases(), tim::hash::get_hash_identifier(), and tim::hash::get_hash_ids().
|
protected |
Definition at line 1073 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::set_scope | ( | scope::config | val | ) |
Definition at line 1039 of file bundle.cpp.
|
protected |
Definition at line 1089 of file bundle.cpp.
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | Args &&... | args | ) |
Definition at line 624 of file bundle.cpp.
References IF_CONSTEXPR, tim::invoke::push(), and tim::invoke::start().
this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | Args && | ... | ) |
invokes start on all the components
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::lightweight | , |
Args &&... | args | ||
) |
Definition at line 506 of file bundle.cpp.
References tim::invoke::assemble().
this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::lightweight | , |
Args && | ... | ||
) |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::piecewise_ignore< Tp... > | , |
Args &&... | args | ||
) |
this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::piecewise_ignore< Tp... > | , |
Args && | ... | ||
) |
variant of start() which gets applied to non-Tp types
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::piecewise_select< Tp... > | , |
Args &&... | args | ||
) |
Definition at line 541 of file bundle.cpp.
References IF_CONSTEXPR.
this_type & tim::bundle< Tag, BundleT, TupleT >::start | ( | mpl::piecewise_select< Tp... > | , |
Args && | ... | ||
) |
variant of start() which only gets applied to Tp types
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | Args &&... | args | ) |
Definition at line 647 of file bundle.cpp.
References IF_CONSTEXPR, tim::invoke::pop(), and tim::invoke::stop().
this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | Args && | ... | ) |
invokes stop on all the components
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::lightweight | , |
Args &&... | args | ||
) |
Definition at line 522 of file bundle.cpp.
References tim::invoke::derive().
this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::lightweight | , |
Args && | ... | ||
) |
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::piecewise_ignore< Tp... > | , |
Args &&... | args | ||
) |
this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::piecewise_ignore< Tp... > | , |
Args && | ... | ||
) |
variant of stop() which gets applied to non-Tp types
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::piecewise_select< Tp... > | , |
Args &&... | args | ||
) |
this_type & tim::bundle< Tag, BundleT, TupleT >::stop | ( | mpl::piecewise_select< Tp... > | , |
Args && | ... | ||
) |
variant of stop() which only gets applied to Tp types
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::store | ( | Args &&... | _args | ) |
this_type & tim::bundle< Tag, BundleT, TupleT >::store | ( | Args &&... | _args | ) |
store a value
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::type_apply | ( | Func && | , |
Args && | ... | ||
) |
Definition at line 985 of file bundle.cpp.
this_type & tim::bundle< Tag, BundleT, TupleT >::type_apply | ( | Func && | , |
Args && | ... | ||
) |
ignore applying a member function because the type is not present
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::type_apply | ( | Func && | _func, |
Args &&... | _args | ||
) |
|
inline |
apply a member function to a stack type that is in variadic list AND is available
Definition at line 796 of file bundle.hpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::type_apply | ( | Func && | _func, |
Args &&... | _args | ||
) |
apply a member function to either a heap type or a type that is in a user_bundle
bundle< Tag, BundleT, TupleT >::this_type & tim::bundle< Tag, BundleT, TupleT >::update_statistics | ( | Args &&... | _args | ) |
Definition at line 817 of file bundle.cpp.
References tim::_args.
this_type & tim::bundle< Tag, BundleT, TupleT >::update_statistics | ( | Args &&... | _args | ) |
perform an add_secondary operation. This operation allows components to add additional entries to storage which are their direct descendant
|
inlinestaticconstexpr |
Query at compile-time whether initialization will occur on the heap. can_heap_init<T>() && !will_heap_init<T>()
will indicate that a stack-allocated instance of the same type exists.
Definition at line 327 of file bundle.hpp.
|
inlinestaticconstexpr |
Query at compile-time whether initialization will happen with an opaque wrapper (i.e. via user bundle). In this situation, initialization arguments are ignored and the component will only be initialized with the tim::scope::config of the bundle.
Definition at line 338 of file bundle.hpp.
|
friend |
Definition at line 121 of file bundle.hpp.
|
friend |
Definition at line 124 of file bundle.hpp.
|
friend |
Definition at line 130 of file bundle.hpp.
|
friend |
Definition at line 127 of file bundle.hpp.
|
friend |
Definition at line 118 of file bundle.hpp.
|
friend |
Definition at line 262 of file bundle.hpp.
Definition at line 258 of file bundle.hpp.
Definition at line 259 of file bundle.hpp.
|
friend |
Definition at line 269 of file bundle.hpp.
|
friend |
Definition at line 275 of file bundle.hpp.
|
mutableprotected |
Definition at line 849 of file bundle.hpp.