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::env_settings Class Reference

#include "timemory/environment/declaration.hpp"

+ Collaboration diagram for tim::env_settings:

Public Types

using string_t = std::string
 
using env_map_t = std::map< string_t, string_t >
 
using env_uomap_t = std::map< string_t, string_t >
 
using env_pair_t = std::pair< string_t, string_t >
 
using iterator = typename env_map_t::iterator
 
using const_iterator = typename env_map_t::const_iterator
 
using filter_func_t = std::function< bool(const std::string &)>
 

Public Member Functions

template<typename Tp >
void insert (const std::string &env_id, Tp val)
 
env_map_t get () const
 
iterator get (const string_t &_entry)
 
const_iterator get (const string_t &_entry) const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
void print (std::ostream &, filter_func_t &&_filter=[](const std::string &) { return true;}) const
 
template<typename Archive >
void serialize (Archive &ar, unsigned int)
 

Static Public Member Functions

static env_settingsinstance ()
 
template<typename Archive >
static void serialize_environment (Archive &ar)
 

Friends

std::ostream & operator<< (std::ostream &os, const env_settings &env)
 

Detailed Description

Definition at line 54 of file declaration.hpp.

Member Typedef Documentation

◆ const_iterator

using tim::env_settings::const_iterator = typename env_map_t::const_iterator

Definition at line 62 of file declaration.hpp.

◆ env_map_t

Definition at line 58 of file declaration.hpp.

◆ env_pair_t

Definition at line 60 of file declaration.hpp.

◆ env_uomap_t

Definition at line 59 of file declaration.hpp.

◆ filter_func_t

using tim::env_settings::filter_func_t = std::function<bool(const std::string&)>

Definition at line 63 of file declaration.hpp.

◆ iterator

using tim::env_settings::iterator = typename env_map_t::iterator

Definition at line 61 of file declaration.hpp.

◆ string_t

using tim::env_settings::string_t = std::string

Definition at line 57 of file declaration.hpp.

Member Function Documentation

◆ begin() [1/2]

iterator tim::env_settings::begin ( )
inline

Definition at line 82 of file declaration.hpp.

82{ return m_env->begin(); }

◆ begin() [2/2]

const_iterator tim::env_settings::begin ( ) const
inline

Definition at line 84 of file declaration.hpp.

84{ return m_env->begin(); }

◆ end() [1/2]

iterator tim::env_settings::end ( )
inline

Definition at line 83 of file declaration.hpp.

83{ return m_env->end(); }

◆ end() [2/2]

const_iterator tim::env_settings::end ( ) const
inline

Definition at line 85 of file declaration.hpp.

85{ return m_env->end(); }

◆ get() [1/3]

env_map_t tim::env_settings::get ( ) const

◆ get() [2/3]

iterator tim::env_settings::get ( const string_t _entry)
inline

Definition at line 80 of file declaration.hpp.

80{ return m_env->find(_entry); }

◆ get() [3/3]

const_iterator tim::env_settings::get ( const string_t _entry) const
inline

Definition at line 81 of file declaration.hpp.

81{ return m_env->find(_entry); }

◆ insert()

template<typename Tp >
void tim::env_settings::insert ( const std::string &  env_id,
Tp  val 
)

Definition at line 128 of file declaration.hpp.

129{
130#if !defined(TIMEMORY_DISABLE_STORE_ENVIRONMENT)
131 std::stringstream ss;
132 ss << std::boolalpha << val;
133
134 auto_lock_t lk(type_mutex<env_settings>(), std::defer_lock);
135 if(lock_flag().load() && !lk.owns_lock())
136 lk.lock();
137
138 if(m_env &&
139 (m_env->find(env_id) == m_env->end() || m_env->find(env_id)->second != ss.str()))
140 (*m_env)[env_id] = ss.str();
141#else
142 consume_parameters(env_id, val);
143#endif
144}
void load(Archive &ar, tim::node::graph< Tp > &d)
Definition: node.hpp:520
std::unique_lock< mutex_t > auto_lock_t
Unique lock type around mutex_t.
Definition: locking.hpp:42
void consume_parameters(ArgsT &&...)
Definition: types.hpp:285

References tim::consume_parameters(), and tim::cereal::load().

◆ instance()

static env_settings * tim::env_settings::instance ( )
static

◆ print()

void tim::env_settings::print ( std::ostream &  ,
filter_func_t &&  _filter = [](const std::string &) { return true;} 
) const

Referenced by tim::print_env().

◆ serialize()

template<typename Archive >
void tim::env_settings::serialize ( Archive &  ar,
unsigned int   
)

Definition at line 150 of file declaration.hpp.

151{
152 auto _tmp = env_uomap_t{};
153 if(!m_env)
154 m_env = &_tmp;
155
156 collapse();
157
158 auto_lock_t lk(type_mutex<env_settings>(), std::defer_lock);
159 lock_flag().store(true);
160
161 if(!lk.owns_lock())
162 lk.lock();
163
164 ar(cereal::make_nvp("environment", *m_env));
165
166 if(m_env == &_tmp)
167 m_env = nullptr;
168
169 lock_flag().store(false);
170}
std::map< string_t, string_t > env_uomap_t
Definition: declaration.hpp:59

Referenced by serialize_environment().

◆ serialize_environment()

template<typename Archive >
static void tim::env_settings::serialize_environment ( Archive &  ar)
inlinestatic

Definition at line 103 of file declaration.hpp.

104 {
105 if(instance())
107 }
void serialize(Archive &ar, unsigned int)
static env_settings * instance()
#define TIMEMORY_GET_CLASS_VERSION(...)
Definition: types.hpp:844

References instance(), serialize(), and TIMEMORY_GET_CLASS_VERSION.

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const env_settings env 
)
friend

Definition at line 90 of file declaration.hpp.

91 {
92 env.print(os);
93 return os;
94 }
const std::string std::ostream * os

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