43 values_.add_new_as(std::forward<ForwardKey>(key), value);
51 void *buffer = allocator_.allocate(type);
53 values_.add_new_as(std::forward<ForwardKey>(key),
GMutablePointer{type, buffer});
61 void *buffer = allocator_.allocate(type);
63 values_.add_new_as(std::forward<ForwardKey>(key),
GMutablePointer{type, buffer});
67 template<
typename ForwardKey,
typename T>
void add_new(ForwardKey &&key,
T &&value)
69 if constexpr (std::is_rvalue_reference_v<T>) {
82 return values_.pop_as(key);
87 return values_.lookup_as(key);
91 template<
typename T,
typename ForwardKey>
T extract(
const ForwardKey &key)
101 template<
typename T,
typename ForwardKey>
const T &
lookup(
const ForwardKey &key)
const
106 return *(
const T *)value.
get();
109 template<
typename ForwardKey>
bool contains(
const ForwardKey &key)
const
111 return values_.contains_as(key);
void copy_construct(const void *src, void *dst) const
void move_construct(void *src, void *dst) const
void relocate_assign(void *src, void *dst) const
const CPPType * type() const
const CPPType * type() const
void add_new_by_copy(ForwardKey &&key, GPointer value)
void add_new(ForwardKey &&key, T &&value)
void add_new_by_move(ForwardKey &&key, GMutablePointer value)
const T & lookup(const ForwardKey &key) const
bool contains(const ForwardKey &key) const
void add_new_direct(ForwardKey &&key, GMutablePointer value)
GPointer lookup(const ForwardKey &key) const
GMutablePointer extract(const ForwardKey &key)
GValueMap(LinearAllocator<> &allocator)
T extract(const ForwardKey &key)