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

Go to the source code of this file.

Namespaces

namespace  tim
 

Macros

#define TIMEMORY_MACROS
 
#define TIMEMORY_OS_PATH_DELIMITER   '/'
 
#define TIMEMORY_JOIN(delim, ...)   ::tim::string::join(delim, __VA_ARGS__)
 
#define TIMEMORY_BLANK_LABEL(...)   ::tim::string::join("", __VA_ARGS__)
 
#define TIMEMORY_BASIC_LABEL(...)   ::tim::string::join("", _TIM_FUNC, __VA_ARGS__)
 
#define TIMEMORY_FULL_LABEL   ::tim::string::join('/', _TIM_FUNC, _TIM_FILELINE)
 
#define TIMEMORY_LABEL(...)   TIMEMORY_JOIN("", TIMEMORY_FULL_LABEL, __VA_ARGS__)
 
#define TIMEMORY_AUTO_TYPE(TYPE)   ::tim::concepts::auto_type_t<TYPE>
 
#define TIMEMORY_COMP_TYPE(TYPE)   ::tim::concepts::component_type_t<TYPE>
 
#define TIMEMORY_BLANK_MARKER(TYPE, ...)
 
#define TIMEMORY_BASIC_MARKER(TYPE, ...)
 
#define TIMEMORY_MARKER(TYPE, ...)
 
#define TIMEMORY_CONDITIONAL_BLANK_MARKER(COND, TYPE, ...)
 
#define TIMEMORY_CONDITIONAL_BASIC_MARKER(COND, TYPE, ...)
 
#define TIMEMORY_CONDITIONAL_MARKER(COND, TYPE, ...)
 
#define TIMEMORY_BLANK_POINTER(TYPE, ...)    TIMEMORY_CONDITIONAL_BLANK_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)
 
#define TIMEMORY_BASIC_POINTER(TYPE, ...)    TIMEMORY_CONDITIONAL_BASIC_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)
 
#define TIMEMORY_POINTER(TYPE, ...)    TIMEMORY_CONDITIONAL_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)
 
#define TIMEMORY_BLANK_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_BASIC_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_STATIC_BLANK_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_STATIC_BASIC_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_STATIC_CALIPER(ID, TYPE, ...)
 
#define TIMEMORY_CALIPER_REFERENCE(ID)   std::ref(_TIM_VARIABLE(ID)).get()
 
#define TIMEMORY_CALIPER_APPLY(ID, FUNC, ...)   _TIM_VARIABLE(ID).FUNC(__VA_ARGS__)
 
#define TIMEMORY_CALIPER_TYPE_APPLY(ID, TYPE, FUNC, ...)    _TIM_VARIABLE(ID).type_apply<TYPE>(FUNC, __VA_ARGS__)
 
#define TIMEMORY_CALIPER_APPLY0(ID, FUNC)   _TIM_VARIABLE(ID).FUNC()
 
#define TIMEMORY_CALIPER_TYPE_APPLY0(ID, TYPE, FUNC)    _TIM_VARIABLE(ID).type_apply<TYPE>(FUNC)
 
#define TIMEMORY_CALIPER_LAMBDA(ID, LAMBDA, ...)    LAMBDA(_TIM_VARIABLE(ID), __VA_ARGS__)
 
#define TIMEMORY_CALIPER_TYPE_LAMBDA(ID, TYPE, LAMBDA, ...)    LAMBDA(_TIM_VARIABLE(ID).get<TYPE>(), __VA_ARGS__)
 
#define TIMEMORY_BLANK_HANDLE(TYPE, ...)    TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(blank, __VA_ARGS__))
 
#define TIMEMORY_BASIC_HANDLE(TYPE, ...)    TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(basic, __VA_ARGS__))
 
#define TIMEMORY_HANDLE(TYPE, ...)    TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(full, __VA_ARGS__))
 
#define TIMEMORY_BLANK_RAW_POINTER(TYPE, ...)
 
#define TIMEMORY_BASIC_RAW_POINTER(TYPE, ...)
 
#define TIMEMORY_RAW_POINTER(TYPE, ...)
 
#define TIMEMORY_DEBUG_BLANK_MARKER(TYPE, ...)
 
#define TIMEMORY_DEBUG_BASIC_MARKER(TYPE, ...)
 
#define TIMEMORY_DEBUG_MARKER(TYPE, ...)
 
#define TIMEMORY_CONFIGURE(TYPE, ...)   TYPE::configure(__VA_ARGS__)
 

Typedefs

using tim::string = tim::mpl::apply< std::string >
 

Macro Definition Documentation

◆ TIMEMORY_AUTO_TYPE

#define TIMEMORY_AUTO_TYPE (   TYPE)    ::tim::concepts::auto_type_t<TYPE>

Definition at line 110 of file macros.hpp.

◆ TIMEMORY_BASIC_CALIPER

#define TIMEMORY_BASIC_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(basic, __VA_ARGS__); \
TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))
#define TIMEMORY_CAPTURE_ARGS(...)
Definition: types.hpp:57

Definition at line 206 of file macros.hpp.

◆ TIMEMORY_BASIC_HANDLE

#define TIMEMORY_BASIC_HANDLE (   TYPE,
  ... 
)     TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(basic, __VA_ARGS__))

Definition at line 277 of file macros.hpp.

◆ TIMEMORY_BASIC_LABEL

#define TIMEMORY_BASIC_LABEL (   ...)    ::tim::string::join("", _TIM_FUNC, __VA_ARGS__)

Definition at line 98 of file macros.hpp.

◆ TIMEMORY_BASIC_MARKER

#define TIMEMORY_BASIC_MARKER (   TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(basic, __VA_ARGS__); \
TIMEMORY_AUTO_TYPE(TYPE) \
_TIM_VARIABLE(__LINE__)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 129 of file macros.hpp.

◆ TIMEMORY_BASIC_POINTER

#define TIMEMORY_BASIC_POINTER (   TYPE,
  ... 
)     TIMEMORY_CONDITIONAL_BASIC_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)

Definition at line 186 of file macros.hpp.

◆ TIMEMORY_BASIC_RAW_POINTER

#define TIMEMORY_BASIC_RAW_POINTER (   TYPE,
  ... 
)
Value:
? new TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(basic, __VA_ARGS__)) \
: nullptr
#define TIMEMORY_INLINE_SOURCE_LOCATION(MODE,...)
Definition: types.hpp:59

Definition at line 294 of file macros.hpp.

◆ TIMEMORY_BLANK_CALIPER

#define TIMEMORY_BLANK_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(blank, __VA_ARGS__); \
TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 200 of file macros.hpp.

◆ TIMEMORY_BLANK_HANDLE

#define TIMEMORY_BLANK_HANDLE (   TYPE,
  ... 
)     TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(blank, __VA_ARGS__))

Definition at line 272 of file macros.hpp.

◆ TIMEMORY_BLANK_LABEL

#define TIMEMORY_BLANK_LABEL (   ...)    ::tim::string::join("", __VA_ARGS__)

Definition at line 94 of file macros.hpp.

◆ TIMEMORY_BLANK_MARKER

#define TIMEMORY_BLANK_MARKER (   TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(blank, __VA_ARGS__); \
TIMEMORY_AUTO_TYPE(TYPE) \
_TIM_VARIABLE(__LINE__)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 122 of file macros.hpp.

◆ TIMEMORY_BLANK_POINTER

#define TIMEMORY_BLANK_POINTER (   TYPE,
  ... 
)     TIMEMORY_CONDITIONAL_BLANK_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)

Definition at line 181 of file macros.hpp.

◆ TIMEMORY_BLANK_RAW_POINTER

#define TIMEMORY_BLANK_RAW_POINTER (   TYPE,
  ... 
)
Value:
? new TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(blank, __VA_ARGS__)) \
: nullptr

Definition at line 287 of file macros.hpp.

◆ TIMEMORY_CALIPER

#define TIMEMORY_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(full, __VA_ARGS__); \
TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 212 of file macros.hpp.

◆ TIMEMORY_CALIPER_APPLY

#define TIMEMORY_CALIPER_APPLY (   ID,
  FUNC,
  ... 
)    _TIM_VARIABLE(ID).FUNC(__VA_ARGS__)

Definition at line 240 of file macros.hpp.

◆ TIMEMORY_CALIPER_APPLY0

#define TIMEMORY_CALIPER_APPLY0 (   ID,
  FUNC 
)    _TIM_VARIABLE(ID).FUNC()

Definition at line 249 of file macros.hpp.

◆ TIMEMORY_CALIPER_LAMBDA

#define TIMEMORY_CALIPER_LAMBDA (   ID,
  LAMBDA,
  ... 
)     LAMBDA(_TIM_VARIABLE(ID), __VA_ARGS__)

Definition at line 258 of file macros.hpp.

◆ TIMEMORY_CALIPER_REFERENCE

#define TIMEMORY_CALIPER_REFERENCE (   ID)    std::ref(_TIM_VARIABLE(ID)).get()

Definition at line 236 of file macros.hpp.

◆ TIMEMORY_CALIPER_TYPE_APPLY

#define TIMEMORY_CALIPER_TYPE_APPLY (   ID,
  TYPE,
  FUNC,
  ... 
)     _TIM_VARIABLE(ID).type_apply<TYPE>(FUNC, __VA_ARGS__)

Definition at line 244 of file macros.hpp.

◆ TIMEMORY_CALIPER_TYPE_APPLY0

#define TIMEMORY_CALIPER_TYPE_APPLY0 (   ID,
  TYPE,
  FUNC 
)     _TIM_VARIABLE(ID).type_apply<TYPE>(FUNC)

Definition at line 253 of file macros.hpp.

◆ TIMEMORY_CALIPER_TYPE_LAMBDA

#define TIMEMORY_CALIPER_TYPE_LAMBDA (   ID,
  TYPE,
  LAMBDA,
  ... 
)     LAMBDA(_TIM_VARIABLE(ID).get<TYPE>(), __VA_ARGS__)

Definition at line 263 of file macros.hpp.

◆ TIMEMORY_COMP_TYPE

#define TIMEMORY_COMP_TYPE (   TYPE)    ::tim::concepts::component_type_t<TYPE>

Definition at line 114 of file macros.hpp.

◆ TIMEMORY_CONDITIONAL_BASIC_MARKER

#define TIMEMORY_CONDITIONAL_BASIC_MARKER (   COND,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(basic, __VA_ARGS__); \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)> _TIM_VARIABLE(__LINE__) = \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)>( \
((COND)) \
? new TIMEMORY_AUTO_TYPE(TYPE)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__)) \
: nullptr)
#define TIMEMORY_AUTO_TYPE(TYPE)
Definition: macros.hpp:110

Definition at line 157 of file macros.hpp.

◆ TIMEMORY_CONDITIONAL_BLANK_MARKER

#define TIMEMORY_CONDITIONAL_BLANK_MARKER (   COND,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(blank, __VA_ARGS__); \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)> _TIM_VARIABLE(__LINE__) = \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)>( \
((COND)) \
? new TIMEMORY_AUTO_TYPE(TYPE)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__)) \
: nullptr)

Definition at line 147 of file macros.hpp.

◆ TIMEMORY_CONDITIONAL_MARKER

#define TIMEMORY_CONDITIONAL_MARKER (   COND,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(full, __VA_ARGS__); \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)> _TIM_VARIABLE(__LINE__) = \
std::unique_ptr<TIMEMORY_AUTO_TYPE(TYPE)>( \
((COND)) \
? new TIMEMORY_AUTO_TYPE(TYPE)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__)) \
: nullptr)

Definition at line 167 of file macros.hpp.

◆ TIMEMORY_CONFIGURE

#define TIMEMORY_CONFIGURE (   TYPE,
  ... 
)    TYPE::configure(__VA_ARGS__)

Definition at line 338 of file macros.hpp.

◆ TIMEMORY_DEBUG_BASIC_MARKER

#define TIMEMORY_DEBUG_BASIC_MARKER (   TYPE,
  ... 
)

Definition at line 332 of file macros.hpp.

◆ TIMEMORY_DEBUG_BLANK_MARKER

#define TIMEMORY_DEBUG_BLANK_MARKER (   TYPE,
  ... 
)

Definition at line 331 of file macros.hpp.

◆ TIMEMORY_DEBUG_MARKER

#define TIMEMORY_DEBUG_MARKER (   TYPE,
  ... 
)

Definition at line 333 of file macros.hpp.

◆ TIMEMORY_FULL_LABEL

#define TIMEMORY_FULL_LABEL   ::tim::string::join('/', _TIM_FUNC, _TIM_FILELINE)

Definition at line 102 of file macros.hpp.

◆ TIMEMORY_HANDLE

#define TIMEMORY_HANDLE (   TYPE,
  ... 
)     TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(full, __VA_ARGS__))

Definition at line 282 of file macros.hpp.

◆ TIMEMORY_JOIN

#define TIMEMORY_JOIN (   delim,
  ... 
)    ::tim::string::join(delim, __VA_ARGS__)

Definition at line 90 of file macros.hpp.

◆ TIMEMORY_LABEL

#define TIMEMORY_LABEL (   ...)    TIMEMORY_JOIN("", TIMEMORY_FULL_LABEL, __VA_ARGS__)

Definition at line 106 of file macros.hpp.

◆ TIMEMORY_MACROS

#define TIMEMORY_MACROS

Definition at line 60 of file macros.hpp.

◆ TIMEMORY_MARKER

#define TIMEMORY_MARKER (   TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(full, __VA_ARGS__); \
TIMEMORY_AUTO_TYPE(TYPE) \
_TIM_VARIABLE(__LINE__)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 136 of file macros.hpp.

◆ TIMEMORY_OS_PATH_DELIMITER

#define TIMEMORY_OS_PATH_DELIMITER   '/'

Definition at line 69 of file macros.hpp.

◆ TIMEMORY_POINTER

#define TIMEMORY_POINTER (   TYPE,
  ... 
)     TIMEMORY_CONDITIONAL_MARKER(::tim::settings::enabled(), TYPE, __VA_ARGS__)

Definition at line 191 of file macros.hpp.

◆ TIMEMORY_RAW_POINTER

#define TIMEMORY_RAW_POINTER (   TYPE,
  ... 
)
Value:
? new TYPE(TIMEMORY_INLINE_SOURCE_LOCATION(full, __VA_ARGS__)) \
: nullptr

Definition at line 301 of file macros.hpp.

◆ TIMEMORY_STATIC_BASIC_CALIPER

#define TIMEMORY_STATIC_BASIC_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(basic, __VA_ARGS__); \
static TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 224 of file macros.hpp.

◆ TIMEMORY_STATIC_BLANK_CALIPER

#define TIMEMORY_STATIC_BLANK_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(blank, __VA_ARGS__); \
static TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 218 of file macros.hpp.

◆ TIMEMORY_STATIC_CALIPER

#define TIMEMORY_STATIC_CALIPER (   ID,
  TYPE,
  ... 
)
Value:
_TIM_STATIC_SRC_LOCATION(full, __VA_ARGS__); \
static TYPE _TIM_VARIABLE(ID)(TIMEMORY_CAPTURE_ARGS(__VA_ARGS__))

Definition at line 230 of file macros.hpp.