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 "timemory/compat/macros.h"
#include <cassert>
+ 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.

Macros

#define TIMEMORY_SETTINGS_HEADER_MODE
 
#define TIMEMORY_SETTINGS_INLINE   inline
 
#define TIMEMORY_SETTINGS_LINKAGE(...)   inline __VA_ARGS__
 
#define TIMEMORY_SETTINGS_PREFIX   "TIMEMORY_"
 
#define TIMEMORY_SETTINGS_KEY(...)   TIMEMORY_SETTINGS_PREFIX __VA_ARGS__
 
#define TIMEMORY_SETTINGS_MEMBER_DECL(TYPE, FUNC)
 
#define TIMEMORY_SETTINGS_REFERENCE_DECL(TYPE, FUNC)
 
#define TIMEMORY_SETTINGS_MEMBER_DEF(TYPE, FUNC, ENV_VAR)
 
#define TIMEMORY_SETTINGS_REFERENCE_DEF(TYPE, FUNC, ENV_VAR)
 
#define TIMEMORY_SETTINGS_MEMBER_IMPL(TYPE, FUNC, ENV_VAR, DESC, INIT)
 
#define TIMEMORY_SETTINGS_HIDDEN_MEMBER_IMPL(TYPE, ENV_VAR, DESC, INIT)
 
#define TIMEMORY_SETTINGS_MEMBER_ARG_IMPL(TYPE, FUNC, ENV_VAR, DESC, INIT, ...)
 
#define TIMEMORY_SETTINGS_HIDDEN_MEMBER_ARG_IMPL(TYPE, ENV_VAR, DESC, INIT, ...)
 
#define TIMEMORY_SETTINGS_REFERENCE_IMPL(TYPE, FUNC, ENV_VAR, DESC, INIT)
 
#define TIMEMORY_SETTINGS_REFERENCE_ARG_IMPL(TYPE, FUNC, ENV_VAR, DESC, INIT, ...)
 
#define TIMEMORY_ERROR_FUNCTION_MACRO   __FUNCTION__
 
#define TIMEMORY_SETTINGS_TRY_CATCH_NVP(ENV_VAR, FUNC)
 
#define TIMEMORY_SETTINGS_EXTERN_TEMPLATE(...)
 

Macro Definition Documentation

◆ TIMEMORY_ERROR_FUNCTION_MACRO

#define TIMEMORY_ERROR_FUNCTION_MACRO   __FUNCTION__

Definition at line 229 of file macros.hpp.

◆ TIMEMORY_SETTINGS_EXTERN_TEMPLATE

#define TIMEMORY_SETTINGS_EXTERN_TEMPLATE (   ...)

Definition at line 302 of file macros.hpp.

◆ TIMEMORY_SETTINGS_HEADER_MODE

#define TIMEMORY_SETTINGS_HEADER_MODE

Definition at line 50 of file macros.hpp.

◆ TIMEMORY_SETTINGS_HIDDEN_MEMBER_ARG_IMPL

#define TIMEMORY_SETTINGS_HIDDEN_MEMBER_ARG_IMPL (   TYPE,
  ENV_VAR,
  DESC,
  INIT,
  ... 
)
Value:
\
if(m_data \
.insert({ ENV_VAR, std::make_shared<tsettings<TYPE>>( \
INIT, std::string{}, std::string{ ENV_VAR }, \
std::string{ DESC }, __VA_ARGS__) }) \
.second) \
m_order.push_back(ENV_VAR);
_reported insert(_hash_id)
tim::mpl::apply< std::string > string
Definition: macros.hpp:53

Definition at line 187 of file macros.hpp.

◆ TIMEMORY_SETTINGS_HIDDEN_MEMBER_IMPL

#define TIMEMORY_SETTINGS_HIDDEN_MEMBER_IMPL (   TYPE,
  ENV_VAR,
  DESC,
  INIT 
)
Value:
\
if(m_data \
.insert({ ENV_VAR, std::make_shared<tsettings<TYPE>>( \
INIT, std::string{}, std::string{ ENV_VAR }, \
std::string{ DESC }) }) \
.second) \
m_order.push_back(ENV_VAR);

Definition at line 160 of file macros.hpp.

◆ TIMEMORY_SETTINGS_INLINE

#define TIMEMORY_SETTINGS_INLINE   inline

Definition at line 51 of file macros.hpp.

◆ TIMEMORY_SETTINGS_KEY

#define TIMEMORY_SETTINGS_KEY (   ...)    TIMEMORY_SETTINGS_PREFIX __VA_ARGS__

Definition at line 60 of file macros.hpp.

◆ TIMEMORY_SETTINGS_LINKAGE

#define TIMEMORY_SETTINGS_LINKAGE (   ...)    inline __VA_ARGS__

Definition at line 52 of file macros.hpp.

◆ TIMEMORY_SETTINGS_MEMBER_ARG_IMPL

#define TIMEMORY_SETTINGS_MEMBER_ARG_IMPL (   TYPE,
  FUNC,
  ENV_VAR,
  DESC,
  INIT,
  ... 
)
Value:
\
if(m_data \
.insert( \
{ ENV_VAR, std::make_shared<tsettings<TYPE>>( \
INIT, std::string{ #FUNC }, std::string{ ENV_VAR }, \
std::string{ DESC }, __VA_ARGS__) }) \
.second) \
m_order.push_back(ENV_VAR);

Definition at line 173 of file macros.hpp.

◆ TIMEMORY_SETTINGS_MEMBER_DECL

#define TIMEMORY_SETTINGS_MEMBER_DECL (   TYPE,
  FUNC 
)
Value:
public: \
TYPE& get_##FUNC() TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default"); \
TYPE get_##FUNC() \
const TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default"); \
static TYPE& FUNC() TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default");

Definition at line 68 of file macros.hpp.

◆ TIMEMORY_SETTINGS_MEMBER_DEF

#define TIMEMORY_SETTINGS_MEMBER_DEF (   TYPE,
  FUNC,
  ENV_VAR 
)
Value:
TIMEMORY_SETTINGS_INLINE TYPE& settings::get_##FUNC() \
{ \
return static_cast<tsettings<TYPE>*>(m_data.at(ENV_VAR).get())->get(); \
} \
\
TIMEMORY_SETTINGS_INLINE TYPE settings::get_##FUNC() const \
{ \
auto ret = m_data.find(ENV_VAR); \
if(ret == m_data.end()) \
return TYPE{}; \
if(!ret->second) \
return TYPE{}; \
return static_cast<tsettings<TYPE>*>(ret->second.get())->get(); \
} \
\
TIMEMORY_SETTINGS_INLINE TYPE& settings::FUNC() \
{ \
return shared_instance()->get_##FUNC(); \
}
auto get(const auto_bundle< Tag, Types... > &_obj)
#define TIMEMORY_SETTINGS_INLINE
Definition: macros.hpp:51

Definition at line 94 of file macros.hpp.

◆ TIMEMORY_SETTINGS_MEMBER_IMPL

#define TIMEMORY_SETTINGS_MEMBER_IMPL (   TYPE,
  FUNC,
  ENV_VAR,
  DESC,
  INIT 
)
Value:
\
if(m_data \
.insert({ ENV_VAR, std::make_shared<tsettings<TYPE>>( \
INIT, std::string{ #FUNC }, \
std::string{ ENV_VAR }, std::string{ DESC }) }) \
.second) \
m_order.push_back(ENV_VAR);

Definition at line 147 of file macros.hpp.

◆ TIMEMORY_SETTINGS_PREFIX

#define TIMEMORY_SETTINGS_PREFIX   "TIMEMORY_"

Definition at line 56 of file macros.hpp.

◆ TIMEMORY_SETTINGS_REFERENCE_ARG_IMPL

#define TIMEMORY_SETTINGS_REFERENCE_ARG_IMPL (   TYPE,
  FUNC,
  ENV_VAR,
  DESC,
  INIT,
  ... 
)
Value:
if(m_data \
.insert( \
{ ENV_VAR, std::make_shared<tsettings<TYPE, TYPE&>>( \
INIT, std::string{ #FUNC }, std::string{ ENV_VAR }, \
std::string{ DESC }, __VA_ARGS__) }) \
.second) \
m_order.push_back(ENV_VAR);

Definition at line 213 of file macros.hpp.

◆ TIMEMORY_SETTINGS_REFERENCE_DECL

#define TIMEMORY_SETTINGS_REFERENCE_DECL (   TYPE,
  FUNC 
)
Value:
public: \
TYPE& get_##FUNC() TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default"); \
TYPE get_##FUNC() \
const TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default"); \
static TYPE& FUNC() TIMEMORY_NEVER_INSTRUMENT TIMEMORY_VISIBILITY("default");

Definition at line 81 of file macros.hpp.

◆ TIMEMORY_SETTINGS_REFERENCE_DEF

#define TIMEMORY_SETTINGS_REFERENCE_DEF (   TYPE,
  FUNC,
  ENV_VAR 
)
Value:
TIMEMORY_SETTINGS_INLINE TYPE& settings::get_##FUNC() \
{ \
return static_cast<tsettings<TYPE, TYPE&>*>(m_data.at(ENV_VAR).get()) \
->get(); \
} \
\
TIMEMORY_SETTINGS_INLINE TYPE settings::get_##FUNC() const \
{ \
auto ret = m_data.find(ENV_VAR); \
if(ret == m_data.end()) \
return TYPE{}; \
if(!ret->second) \
return TYPE{}; \
return static_cast<tsettings<TYPE, TYPE&>*>(ret->second.get())->get(); \
} \
\
TIMEMORY_SETTINGS_INLINE TYPE& settings::FUNC() \
{ \
return shared_instance()->get_##FUNC(); \
}

Definition at line 121 of file macros.hpp.

◆ TIMEMORY_SETTINGS_REFERENCE_IMPL

#define TIMEMORY_SETTINGS_REFERENCE_IMPL (   TYPE,
  FUNC,
  ENV_VAR,
  DESC,
  INIT 
)
Value:
\
if(m_data \
.insert({ ENV_VAR, std::make_shared<tsettings<TYPE, TYPE&>>( \
INIT, std::string{ #FUNC }, \
std::string{ ENV_VAR }, std::string{ DESC }) }) \
.second) \
m_order.push_back(ENV_VAR);

Definition at line 200 of file macros.hpp.

◆ TIMEMORY_SETTINGS_TRY_CATCH_NVP

#define TIMEMORY_SETTINGS_TRY_CATCH_NVP (   ENV_VAR,
  FUNC 
)
Value:
try \
{ \
ar(cereal::make_nvp(ENV_VAR, FUNC())); \
} catch(...) \
{}

Definition at line 236 of file macros.hpp.