27 template<
typename Src1,
typename Src2,
typename Dst1,
typename Dst2>
30 new ((
void *)dst1) Dst1(std::forward<Src1>(src1));
32 new ((
void *)dst2) Dst2(std::forward<Src2>(src2));
71 if (state_ == Occupied) {
72 key_buffer_.
ref().~Key();
73 value_buffer_.
ref().~Value();
83 state_ = other.state_;
84 if (other.state_ == Occupied) {
86 other.value_buffer_.
ref(),
98 std::is_nothrow_move_constructible_v<Key> &&std::is_nothrow_move_constructible_v<Value>)
100 state_ = other.state_;
101 if (other.state_ == Occupied) {
103 std::move(other.value_buffer_.ref()),
105 value_buffer_.
ptr());
130 return value_buffer_;
138 return value_buffer_;
146 return state_ == Occupied;
154 return state_ == Empty;
164 return hash(*key_buffer_);
171 template<
typename ForwardKey,
typename IsEqual>
174 if (state_ == Occupied) {
175 return is_equal(
key, *key_buffer_);
184 template<
typename ForwardKey,
typename... ForwardValue>
188 new (&value_buffer_)
Value(std::forward<ForwardValue>(
value)...);
201 new (&key_buffer_)
Key(std::forward<ForwardKey>(
key));
205 value_buffer_.
ref().~Value();
218 key_buffer_.
ref().~Key();
219 value_buffer_.
ref().~Value();
234 Key key_ = KeyInfo::get_empty();
242 if (KeyInfo::is_not_empty_or_removed(key_)) {
243 value_buffer_.
ref().~Value();
249 if (KeyInfo::is_not_empty_or_removed(key_)) {
250 new (&value_buffer_)
Value(*other.value_buffer_);
256 if (KeyInfo::is_not_empty_or_removed(key_)) {
257 new (&value_buffer_)
Value(std::move(*other.value_buffer_));
273 return value_buffer_;
278 return value_buffer_;
283 return KeyInfo::is_not_empty_or_removed(key_);
288 return KeyInfo::is_empty(key_);
297 template<
typename ForwardKey,
typename IsEqual>
301 return is_equal(
key, key_);
304 template<
typename ForwardKey,
typename... ForwardValue>
309 new (&value_buffer_)
Value(std::forward<ForwardValue>(
value)...);
318 key_ = std::forward<ForwardKey>(
key);
321 value_buffer_.
ref().~Value();
329 value_buffer_.
ref().~Value();
334 template<
typename Key,
typename Value>
struct DefaultMapSlot;
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue Hue Saturation Value
void occupy_no_value(ForwardKey &&key, uint64_t UNUSED(hash))
IntrusiveMapSlot(IntrusiveMapSlot &&other) noexcept
IntrusiveMapSlot(const IntrusiveMapSlot &other)
void occupy(ForwardKey &&key, uint64_t hash, ForwardValue &&...value)
bool contains(const ForwardKey &key, const IsEqual &is_equal, uint64_t UNUSED(hash)) const
uint64_t get_hash(const Hash &hash)
IntrusiveMapSlot()=default
const Value * value() const
SimpleMapSlot(const SimpleMapSlot &other)
const Value * value() const
bool contains(const ForwardKey &key, const IsEqual &is_equal, uint64_t UNUSED(hash)) const
SimpleMapSlot(SimpleMapSlot &&other) noexcept(std::is_nothrow_move_constructible_v< Key > &&std::is_nothrow_move_constructible_v< Value >)
uint64_t get_hash(const Hash &hash)
void occupy(ForwardKey &&key, uint64_t hash, ForwardValue &&...value)
void occupy_no_value(ForwardKey &&key, uint64_t UNUSED(hash))
bool remove(void *owner, const AttributeIDRef &attribute_id)
void initialize_pointer_pair(Src1 &&src1, Src2 &&src2, Dst1 *dst1, Dst2 *dst2)
unsigned __int64 uint64_t