16#include <unordered_map>
26 std::unordered_map<keyT, std::string, hashT<keyT>> storage_;
36 return storage_.count(key) != 0;
44 const char *
find(
const keyT &key)
46 if (storage_.count(key) != 0) {
47 return storage_[key].c_str();
59 const char *
insert(
const keyT &key, std::string alloc_string)
62 assert(storage_.count(key) == 0);
64 return (storage_[key] = std::move(alloc_string)).c_str();
74 std::unordered_map<std::string, std::any> storage_;
83 template<
typename keyT,
template<
typename>
typename hashT>
86 if (storage_.count(storage_identifier) == 0) {
89 std::move(storage_for_identifier)));
91 return storage_[storage_identifier];
110template<
typename keyT,
template<
typename>
typename hashT>
114 std::any &storage = storage_container.
ensure_storage<keyT, hashT>(storage_identifier);
115 return std::any_cast<AllocStringStorage<keyT, hashT> &>(storage);
const char * insert(const keyT &key, std::string alloc_string)
bool contains(const keyT &key)
const char * find(const keyT &key)
std::any & ensure_storage(const std::string &storage_identifier)
AllocStringStorageContainer & ensure_storage_container()
AllocStringStorage< keyT, hashT > & alloc_string_storage_get(const std::string &storage_identifier)