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::hash::static_string Struct Reference

#include "timemory/hash/static_string.hpp"

+ Collaboration diagram for tim::hash::static_string:

Public Types

using string_registry_t = std::unordered_set< const char * >
 

Public Member Functions

 static_string (const char *_str)
 
 ~static_string ()=default
 
 static_string (const static_string &)=default
 
 static_string (static_string &&) noexcept=default
 
static_stringoperator= (const static_string &)=default
 
static_stringoperator= (static_string &&) noexcept=default
 
const char * c_str () const
 
std::size_t hash () const
 
std::size_t operator() () const
 
 operator const char * () const
 

Static Public Member Functions

static bool is_registered (const char *)
 
static bool is_registered (std::size_t)
 
static string_registry_t get_registry ()
 

Detailed Description

Definition at line 38 of file static_string.hpp.

Member Typedef Documentation

◆ string_registry_t

using tim::hash::static_string::string_registry_t = std::unordered_set<const char*>

Definition at line 40 of file static_string.hpp.

Constructor & Destructor Documentation

◆ static_string() [1/3]

TIMEMORY_HASH_INLINE tim::hash::static_string::static_string ( const char *  _str)

Definition at line 40 of file static_string.cpp.

41: m_string{ _str }
42{
43 if(get_private_registry())
44 get_private_registry()->emplace(_str);
45}

◆ ~static_string()

tim::hash::static_string::~static_string ( )
default

◆ static_string() [2/3]

tim::hash::static_string::static_string ( const static_string )
default

◆ static_string() [3/3]

tim::hash::static_string::static_string ( static_string &&  )
defaultnoexcept

Member Function Documentation

◆ c_str()

const char * tim::hash::static_string::c_str ( ) const
inline

Definition at line 49 of file static_string.hpp.

49{ return m_string; }

◆ get_registry()

TIMEMORY_HASH_INLINE static_string::string_registry_t tim::hash::static_string::get_registry ( )
static

Definition at line 65 of file static_string.cpp.

66{
67 if(!get_private_registry())
68 return string_registry_t{};
69 return *get_private_registry();
70}
std::unordered_set< const char * > string_registry_t

◆ hash()

std::size_t tim::hash::static_string::hash ( ) const
inline

Definition at line 50 of file static_string.hpp.

50{ return reinterpret_cast<std::size_t>(m_string); }

Referenced by operator()().

◆ is_registered() [1/2]

TIMEMORY_HASH_INLINE bool tim::hash::static_string::is_registered ( const char *  _str)
static

Definition at line 49 of file static_string.cpp.

50{
51 if(!get_private_registry())
52 return false;
53 return get_private_registry()->find(_str) != get_private_registry()->end();
54}

Referenced by is_registered().

◆ is_registered() [2/2]

TIMEMORY_HASH_INLINE bool tim::hash::static_string::is_registered ( std::size_t  _hash)
static

Definition at line 58 of file static_string.cpp.

59{
60 return is_registered(reinterpret_cast<const char*>(_hash));
61}
static bool is_registered(const char *)

References is_registered().

◆ operator const char *()

tim::hash::static_string::operator const char * ( ) const
inline

Definition at line 53 of file static_string.hpp.

53{ return m_string; }

◆ operator()()

std::size_t tim::hash::static_string::operator() ( ) const
inline

Definition at line 51 of file static_string.hpp.

51{ return hash(); }
std::size_t hash() const

References hash().

◆ operator=() [1/2]

static_string & tim::hash::static_string::operator= ( const static_string )
default

◆ operator=() [2/2]

static_string & tim::hash::static_string::operator= ( static_string &&  )
defaultnoexcept

The documentation for this struct was generated from the following files: