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.
types.hpp File Reference
#include "timemory/mpl/concepts.hpp"
#include "timemory/mpl/types.hpp"
#include "timemory/utility/macros.hpp"
#include <cstdint>
#include <iostream>
#include <string>
#include <type_traits>
+ Include dependency graph for types.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tim::concepts::component_type< auto_tuple< Types... > >
 
struct  tim::concepts::component_type< auto_list< Types... > >
 
struct  tim::concepts::component_type< auto_bundle< Types... > >
 
struct  tim::concepts::component_type< auto_hybrid< Types... > >
 
struct  tim::mpl::is_invocable< F, Args >
 
struct  tim::mpl::is_invocable_r< R, F, Args >
 
struct  tim::concepts::tuple_type< component_bundle< T, Types... > >
 
struct  tim::concepts::tuple_type< auto_bundle< T, Types... > >
 

Namespaces

namespace  tim
 
namespace  tim::concepts
 
namespace  tim::mpl
 
namespace  std
 STL namespace.
 

Macros

#define TSTAG(X)   X
 \macro TSTAG More...
 

Typedefs

template<typename... Types>
using tim::concat = typename impl::concat< Types... >::type
 

Functions

template<typename BundleT , typename FuncT , typename... Args>
auto tim::mpl::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 >)
 
template<typename BundleT , typename FuncT , typename... Args>
auto tim::mpl::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 >)
 
template<typename BundleT , typename ValueT >
auto tim::mpl::execute (BundleT &&_bundle, ValueT &&_value, enable_if_t<!is_invocable< ValueT >::value, long >)
 
 TIMEMORY_DEFINE_VARIADIC_CONCEPT (is_variadic, std::tuple, true_type, typename) TIMEMORY_DEFINE_VARIADIC_CONCEPT(is_variadic
 
typename TIMEMORY_DEFINE_TEMPLATE_CONCEPT (is_empty, auto_bundle, true_type, typename) TIMEMORY_DEFINE_TEMPLATE_CONCEPT(is_empty
 
typename typename TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE (tuple_type, std::tuple, typename, std::tuple< T... >) TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE(auto_type
 
typename typename auto_bundle< T... > TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE (component_type, std::tuple, typename, component_bundle< T... >) TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE(tuple_type
 
typename typename auto_bundle< T... > std::tuple< T... > TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE (auto_type, type_list, typename, auto_bundle< T... >) TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE(component_type
 

Variables

 type_list
 
typename component_bundle
 
typename typename typename
 

Class Documentation

◆ tim::concepts::component_type< auto_tuple< Types... > >

struct tim::concepts::component_type< auto_tuple< Types... > >
template<typename... Types>
struct tim::concepts::component_type< auto_tuple< Types... > >

Definition at line 108 of file types.hpp.

+ Collaboration diagram for tim::concepts::component_type< auto_tuple< Types... > >:
Class Members
typedef component_tuple< Types... > type

◆ tim::concepts::component_type< auto_list< Types... > >

struct tim::concepts::component_type< auto_list< Types... > >
template<typename... Types>
struct tim::concepts::component_type< auto_list< Types... > >

Definition at line 114 of file types.hpp.

+ Collaboration diagram for tim::concepts::component_type< auto_list< Types... > >:
Class Members
typedef component_list< Types... > type

◆ tim::concepts::component_type< auto_bundle< Types... > >

struct tim::concepts::component_type< auto_bundle< Types... > >
template<typename... Types>
struct tim::concepts::component_type< auto_bundle< Types... > >

Definition at line 120 of file types.hpp.

+ Collaboration diagram for tim::concepts::component_type< auto_bundle< Types... > >:
Class Members
typedef component_bundle< Types... > type

◆ tim::concepts::component_type< auto_hybrid< Types... > >

struct tim::concepts::component_type< auto_hybrid< Types... > >
template<typename... Types>
struct tim::concepts::component_type< auto_hybrid< Types... > >

Definition at line 126 of file types.hpp.

+ Collaboration diagram for tim::concepts::component_type< auto_hybrid< Types... > >:
Class Members
typedef component_hybrid< Types... > type

◆ tim::concepts::tuple_type< component_bundle< T, Types... > >

struct tim::concepts::tuple_type< component_bundle< T, Types... > >
template<typename T, typename... Types>
struct tim::concepts::tuple_type< component_bundle< T, Types... > >

Definition at line 242 of file types.hpp.

+ Collaboration diagram for tim::concepts::tuple_type< component_bundle< T, Types... > >:
Class Members
typedef tuple< Types... > type

◆ tim::concepts::tuple_type< auto_bundle< T, Types... > >

struct tim::concepts::tuple_type< auto_bundle< T, Types... > >
template<typename T, typename... Types>
struct tim::concepts::tuple_type< auto_bundle< T, Types... > >

Definition at line 250 of file types.hpp.

+ Collaboration diagram for tim::concepts::tuple_type< auto_bundle< T, Types... > >:
Class Members
typedef tuple< Types... > type

Macro Definition Documentation

◆ TSTAG

#define TSTAG (   X)    X

\macro TSTAG

for tuple_size overloads, clang uses 'class tuple_size' while GCC uses 'struct tuple_size'... which results in a lot of mismatches-tag warnings

Definition at line 45 of file types.hpp.

Function Documentation

◆ TIMEMORY_DEFINE_TEMPLATE_CONCEPT()

typename TIMEMORY_DEFINE_TEMPLATE_CONCEPT ( is_empty  ,
auto_bundle  ,
true_type  ,
typename   
)

◆ TIMEMORY_DEFINE_VARIADIC_CONCEPT()

TIMEMORY_DEFINE_VARIADIC_CONCEPT ( is_variadic  ,
std::tuple  ,
true_type  ,
typename   
)

◆ TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE() [1/3]

typename typename auto_bundle< T... > std::tuple< T... > TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE ( auto_type  ,
type_list  ,
typename  ,
auto_bundle< T... >   
)

◆ TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE() [2/3]

typename typename auto_bundle< T... > TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE ( component_type  ,
std::tuple  ,
typename  ,
component_bundle< T... >   
)

◆ TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE() [3/3]

typename typename TIMEMORY_DEFINE_VARIADIC_CONCEPT_TYPE ( tuple_type  ,
std::tuple  ,
typename  ,
std::tuple< T... >   
)

Variable Documentation

◆ component_bundle

typename component_bundle

Definition at line 221 of file types.hpp.

◆ type_list

typename typename auto_bundle< T... > std::tuple< T... > type_list

Definition at line 211 of file types.hpp.

◆ typename

typename typename auto_bundle< T... > std::tuple< T... > typename

Definition at line 226 of file types.hpp.