Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(277)

Side by Side Diff: mojo/public/cpp/bindings/map_traits_wtf_hash_map.h

Issue 2339413004: Allow Mojo structs as map keys (Closed)
Patch Set: Address all review comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "mojo/public/cpp/bindings/map_traits.h" 9 #include "mojo/public/cpp/bindings/map_traits.h"
10 #include "third_party/WebKit/Source/wtf/HashMap.h" 10 #include "third_party/WebKit/Source/wtf/HashMap.h"
(...skipping 28 matching lines...) Expand all
39 39
40 static void AdvanceIterator(ConstIterator& iterator) { ++iterator; } 40 static void AdvanceIterator(ConstIterator& iterator) { ++iterator; }
41 static void AdvanceIterator(Iterator& iterator) { ++iterator; } 41 static void AdvanceIterator(Iterator& iterator) { ++iterator; }
42 42
43 static const K& GetKey(Iterator& iterator) { return iterator->key; } 43 static const K& GetKey(Iterator& iterator) { return iterator->key; }
44 static const K& GetKey(ConstIterator& iterator) { return iterator->key; } 44 static const K& GetKey(ConstIterator& iterator) { return iterator->key; }
45 45
46 static V& GetValue(Iterator& iterator) { return iterator->value; } 46 static V& GetValue(Iterator& iterator) { return iterator->value; }
47 static const V& GetValue(ConstIterator& iterator) { return iterator->value; } 47 static const V& GetValue(ConstIterator& iterator) { return iterator->value; }
48 48
49 static bool Insert(WTF::HashMap<K, V>& input, const K& key, V&& value) { 49 template <typename IK, typename IV>
50 static bool Insert(WTF::HashMap<K, V>& input, IK&& key, IV&& value) {
50 if (!WTF::HashMap<K, V>::isValidKey(key)) { 51 if (!WTF::HashMap<K, V>::isValidKey(key)) {
51 LOG(ERROR) << "The key value is disallowed by WTF::HashMap: " << key; 52 LOG(ERROR) << "The key value is disallowed by WTF::HashMap";
52 return false; 53 return false;
53 } 54 }
54 input.add(key, std::forward<V>(value)); 55 input.add(std::forward<IK>(key), std::forward<IV>(value));
55 return true;
56 }
57 static bool Insert(WTF::HashMap<K, V>& input, const K& key, const V& value) {
58 if (!WTF::HashMap<K, V>::isValidKey(key)) {
59 LOG(ERROR) << "The key value is disallowed by WTF::HashMap: " << key;
60 return false;
61 }
62 input.add(key, value);
63 return true; 56 return true;
64 } 57 }
65 58
66 static void SetToEmpty(WTF::HashMap<K, V>* output) { output->clear(); } 59 static void SetToEmpty(WTF::HashMap<K, V>* output) { output->clear(); }
67 }; 60 };
68 61
69 } // namespace mojo 62 } // namespace mojo
70 63
71 #endif // MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_ 64 #endif // MOJO_PUBLIC_CPP_BINDINGS_MAP_TRAITS_WTF_HASH_MAP_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698