Skip to content

Commit 3db1f73

Browse files
committed
Non const value access for ordered map.
1 parent 048785c commit 3db1f73

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

Sources/NodeEngine/NE_OrderedMap.hpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ class OrderedMap
2626

2727
bool IsEmpty () const;
2828
bool Contains (const Key& key) const;
29-
const Value& GetValue (const Key& key) const;
3029
size_t Count () const;
3130

31+
Value& GetValue (const Key& key);
32+
const Value& GetValue (const Key& key) const;
33+
3234
bool Insert (const Key& key, const Value& value);
3335
bool InsertBefore (const Key& key, const Value& value, const Key& nextKey);
3436
bool InsertAfter (const Key& key, const Value& value, const Key& prevKey);
@@ -117,17 +119,25 @@ bool OrderedMap<Key, Value>::Contains (const Key& key) const
117119
}
118120

119121
template <typename Key, typename Value>
120-
const Value& OrderedMap<Key, Value>::GetValue (const Key& key) const
122+
size_t OrderedMap<Key, Value>::Count () const
121123
{
122-
const Iterator& iterator = keyToValueMap.at (key);
123-
const KeyValue& keyValue = *iterator;
124+
return keyToValueMap.size ();
125+
}
126+
127+
template <typename Key, typename Value>
128+
Value& OrderedMap<Key, Value>::GetValue (const Key& key)
129+
{
130+
Iterator& iterator = keyToValueMap.at (key);
131+
KeyValue& keyValue = *iterator;
124132
return keyValue.second;
125133
}
126134

127135
template <typename Key, typename Value>
128-
size_t OrderedMap<Key, Value>::Count () const
136+
const Value& OrderedMap<Key, Value>::GetValue (const Key& key) const
129137
{
130-
return keyToValueMap.size ();
138+
const Iterator& iterator = keyToValueMap.at (key);
139+
const KeyValue& keyValue = *iterator;
140+
return keyValue.second;
131141
}
132142

133143
template <typename Key, typename Value>

Sources/NodeEngineTest/OrderedMapTest.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ TEST (OrderedMapConstEnumerateTest)
8080
ASSERT (numbers == enumeratedNumbers);
8181
}
8282

83-
TEST (OrderedMapNonConstEnumerateTest)
83+
TEST (OrderedMapNonConstTest)
8484
{
8585
OrderedMap<int, std::string> map;
8686
std::vector<std::string> numbers = { "one", "two", "three", "four", "five" };
@@ -105,6 +105,16 @@ TEST (OrderedMapNonConstEnumerateTest)
105105
});
106106

107107
ASSERT (enumeratedNumbers == std::vector<std::string> ({ "reset", "reset", "reset", "reset", "reset" }));
108+
109+
std::string& threeVal = map.GetValue (3);
110+
threeVal = "newThreeVal";
111+
ASSERT (map.GetValue (3) == "newThreeVal");
112+
enumeratedNumbers.clear ();
113+
map.Enumerate ([&] (const std::string& number) {
114+
enumeratedNumbers.push_back (number);
115+
return true;
116+
});
117+
ASSERT (enumeratedNumbers == std::vector<std::string> ({ "reset", "reset", "newThreeVal", "reset", "reset" }));
108118
}
109119

110120
TEST (OrderedMapOrderAfterDeleteTest)

0 commit comments

Comments
 (0)