12#include <unordered_map>
21 return std::hash<std::string_view>{}(sv);
30 bool operator()(std::string_view a, std::string_view b)
const
50 return get(std::string_view(s));
56 get(std::string_view(
""));
61 const char *
c_str(
size_t no)
const
86 typedef std::unordered_map<
104 unsigned get(std::string_view s);
Definition string_pool.h:45
const char * c_str(size_t no) const
Definition string_pool.h:61
std::atomic< size_t > published_size
Definition string_pool.h:100
unsigned get(std::string_view s)
Definition string_pool.cpp:7
string_pool()
Definition string_pool.h:53
unsigned operator[](const T &s)
Definition string_pool.h:48
static constexpr size_t MAX_CHUNKS
Definition string_pool.h:79
std::unordered_map< std::string_view, unsigned, string_view_hash, string_view_equal > hash_tablet
Definition string_pool.h:91
const std::string & get_string(size_t no) const
Definition string_pool.h:67
std::array< std::unique_ptr< chunk_t >, MAX_CHUNKS > chunk_storage
Definition string_pool.h:95
std::array< std::atomic< chunk_t * >, MAX_CHUNKS > chunks
Definition string_pool.h:99
static constexpr size_t CHUNK_SIZE
Definition string_pool.h:76
hash_tablet hash_table
Definition string_pool.h:94
static constexpr size_t CHUNK_SHIFT
Definition string_pool.h:75
static constexpr size_t CHUNK_MASK
Definition string_pool.h:77
std::shared_mutex pool_mutex
Definition string_pool.h:102
Definition string_pool.h:26
bool operator()(std::string_view a, std::string_view b) const
Definition string_pool.h:30
void is_transparent
Definition string_pool.h:28
Definition string_pool.h:15
void is_transparent
Definition string_pool.h:17
size_t operator()(std::string_view sv) const
Definition string_pool.h:19
#define T
Definition exp2f.c:24
string_pool & get_string_pool()
Definition string_pool.h:107
Definition string_pool.h:82
std::string data[CHUNK_SIZE]
Definition string_pool.h:83