Home | History | Annotate | Download | only in base

Lines Matching refs:TValue

37 //   template <typename TValue>
38 // TValue* Get(Key<T> key); // null if the value was never set, otherwise the value.
40 // template <typename TValue>
41 // void Set(Key<T> key, TValue value);
50 // template <typename TValue>
51 // struct FruitMapKey : VariantMapKey<TValue> {
60 // template <typename TValue>
61 // using Key = FruitMapKey<TValue>;
99 // Delete a value whose runtime type is that of the non-erased key's TValue.
102 // Clone a value whose runtime type is that of the non-erased key's TValue.
136 template <typename TValue>
139 // then that is used. Otherwise, the default value for the type TValue{} is returned.
140 TValue CreateDefaultValue() const {
142 return TValue{};
144 return TValue(*default_value_);
150 explicit VariantMapKey(const TValue& default_value)
151 : default_value_(std::make_shared<TValue>(default_value)) {}
152 explicit VariantMapKey(TValue&& default_value)
153 : default_value_(std::make_shared<TValue>(default_value)) {}
159 return new VariantMapKey<TValue>(*this);
167 TValue* strong_value = reinterpret_cast<TValue*>(value);
168 return new TValue(*strong_value);
177 const std::default_delete<TValue> deleter = std::default_delete<TValue>();
178 deleter(reinterpret_cast<TValue*>(value));
187 std::shared_ptr<TValue> default_value_;
198 template <typename TValue>
199 struct VariantMapStringKey : VariantMapKey<TValue> {
215 template <typename TValue>
216 using Key = TKey<TValue>;
220 template <typename TValue>
221 const TValue* Get(const TKey<TValue>& key) const {
227 template <typename TValue>
228 TValue* Get(const TKey<TValue>& key) {
233 // The default value is either the key's default, or TValue{} if the key doesn't have a default.
234 template <typename TValue>
235 TValue GetOrDefault(const TKey<TValue>& key) const {
250 template <typename TValue>
252 ScopedRemove(VariantMap& map, const TKey<TValue>& key) : map_(map), key_(key) {}
258 const TKey<TValue>& key_;
264 template <typename TValue>
265 TValue ReleaseOrDefault(const TKey<TValue>& key) {
266 ScopedRemove<TValue> remove_on_return(*this, key);
268 TValue* ptr = Get(key);
277 template <typename TValue>
278 bool Exists(const TKey<TValue>& key) const {
283 // Note: Omit the `value` from TValue type deduction, deduce only from the `key` argument.
284 template <typename TValue>
285 void Set(const TKey<TValue>& key, const typename Identity<TValue>::type& value) {
287 auto* new_value = new TValue(value);
296 // Note: Omit the `value` from TValue type deduction, deduce only from the `key` argument.
297 template <typename TValue>
298 bool SetIfMissing(const TKey<TValue>& key, const typename Identity<TValue>::type& value) {
299 TValue* ptr = Get(key);
308 template <typename TValue>
309 void Remove(const TKey<TValue>& key) {
310 StaticAssertKeyType<TValue>();
388 template <typename TK, typename TValue, typename ... Rest>
389 void InitializeParameters(const TK& key, const TValue& value, const Rest& ... rest) {
391 std::is_same<TK, TKey<TValue>>::value, "The 0th/2nd/4th/etc parameters must be a key");
393 const TKey<TValue>& key_refined = key;
414 template <typename TValue>
415 typename StorageMap::iterator GetKeyValueIterator(const TKey<TValue>& key) {
416 StaticAssertKeyType<TValue>();
418 const TKey<TValue>* key_ptr = &key;
423 template <typename TValue>
424 typename StorageMap::const_iterator GetKeyValueIterator(const TKey<TValue>& key) const {
425 StaticAssertKeyType<TValue>();
427 const TKey<TValue>* key_ptr = &key;
432 template <typename TValue>
433 TValue* GetValuePtr(const TKey<TValue>& key) {
434 return const_cast<TValue*>(GetValueConstPtr(key));
437 template <typename TValue>
438 const TValue* GetValuePtr(const TKey<TValue>& key) const {
442 template <typename TValue>
443 const TValue* GetValueConstPtr(const TKey<TValue>& key) const {
449 return reinterpret_cast<const TValue*>(it->second);
452 template <typename TValue>
454 static_assert(std::is_base_of<VariantMapKey<TValue>, TKey<TValue>>::value,