1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 19:28:11 +00:00

AK: Sprinkle [[nodiscard]] on HashMap and HashTable

This commit is contained in:
Andreas Kling 2021-07-21 18:18:29 +02:00
parent 3d0c5814d2
commit f65b039c44
2 changed files with 23 additions and 23 deletions

View file

@ -71,26 +71,26 @@ public:
using IteratorType = typename HashTableType::Iterator; using IteratorType = typename HashTableType::Iterator;
using ConstIteratorType = typename HashTableType::ConstIterator; using ConstIteratorType = typename HashTableType::ConstIterator;
IteratorType begin() { return m_table.begin(); } [[nodiscard]] IteratorType begin() { return m_table.begin(); }
IteratorType end() { return m_table.end(); } [[nodiscard]] IteratorType end() { return m_table.end(); }
IteratorType find(const K& key) [[nodiscard]] IteratorType find(const K& key)
{ {
return m_table.find(KeyTraits::hash(key), [&](auto& entry) { return KeyTraits::equals(key, entry.key); }); return m_table.find(KeyTraits::hash(key), [&](auto& entry) { return KeyTraits::equals(key, entry.key); });
} }
template<typename TUnaryPredicate> template<typename TUnaryPredicate>
IteratorType find(unsigned hash, TUnaryPredicate predicate) [[nodiscard]] IteratorType find(unsigned hash, TUnaryPredicate predicate)
{ {
return m_table.find(hash, predicate); return m_table.find(hash, predicate);
} }
ConstIteratorType begin() const { return m_table.begin(); } [[nodiscard]] ConstIteratorType begin() const { return m_table.begin(); }
ConstIteratorType end() const { return m_table.end(); } [[nodiscard]] ConstIteratorType end() const { return m_table.end(); }
ConstIteratorType find(const K& key) const [[nodiscard]] ConstIteratorType find(const K& key) const
{ {
return m_table.find(KeyTraits::hash(key), [&](auto& entry) { return KeyTraits::equals(key, entry.key); }); return m_table.find(KeyTraits::hash(key), [&](auto& entry) { return KeyTraits::equals(key, entry.key); });
} }
template<typename TUnaryPredicate> template<typename TUnaryPredicate>
ConstIteratorType find(unsigned hash, TUnaryPredicate predicate) const [[nodiscard]] ConstIteratorType find(unsigned hash, TUnaryPredicate predicate) const
{ {
return m_table.find(hash, predicate); return m_table.find(hash, predicate);
} }
@ -121,7 +121,7 @@ public:
return (*it).value; return (*it).value;
} }
bool contains(const K& key) const [[nodiscard]] bool contains(const K& key) const
{ {
return find(key) != end(); return find(key) != end();
} }
@ -139,7 +139,7 @@ public:
return find(key)->value; return find(key)->value;
} }
Vector<K> keys() const [[nodiscard]] Vector<K> keys() const
{ {
Vector<K> list; Vector<K> list;
list.ensure_capacity(size()); list.ensure_capacity(size());

View file

@ -197,7 +197,7 @@ public:
rehash(capacity * 2); rehash(capacity * 2);
} }
bool contains(const T& value) const [[nodiscard]] bool contains(T const& value) const
{ {
return find(value) != end(); return find(value) != end();
} }
@ -206,7 +206,7 @@ public:
OrderedHashTableIterator<HashTable, T, BucketType>, OrderedHashTableIterator<HashTable, T, BucketType>,
HashTableIterator<HashTable, T, BucketType>>; HashTableIterator<HashTable, T, BucketType>>;
Iterator begin() [[nodiscard]] Iterator begin()
{ {
if constexpr (IsOrdered) if constexpr (IsOrdered)
return Iterator(m_collection_data.head); return Iterator(m_collection_data.head);
@ -218,7 +218,7 @@ public:
return end(); return end();
} }
Iterator end() [[nodiscard]] Iterator end()
{ {
return Iterator(nullptr); return Iterator(nullptr);
} }
@ -227,7 +227,7 @@ public:
OrderedHashTableIterator<const HashTable, const T, const BucketType>, OrderedHashTableIterator<const HashTable, const T, const BucketType>,
HashTableIterator<const HashTable, const T, const BucketType>>; HashTableIterator<const HashTable, const T, const BucketType>>;
ConstIterator begin() const [[nodiscard]] ConstIterator begin() const
{ {
if constexpr (IsOrdered) if constexpr (IsOrdered)
return ConstIterator(m_collection_data.head); return ConstIterator(m_collection_data.head);
@ -239,7 +239,7 @@ public:
return end(); return end();
} }
ConstIterator end() const [[nodiscard]] ConstIterator end() const
{ {
return ConstIterator(nullptr); return ConstIterator(nullptr);
} }
@ -282,23 +282,23 @@ public:
} }
template<typename TUnaryPredicate> template<typename TUnaryPredicate>
Iterator find(unsigned hash, TUnaryPredicate predicate) [[nodiscard]] Iterator find(unsigned hash, TUnaryPredicate predicate)
{ {
return Iterator(lookup_with_hash(hash, move(predicate))); return Iterator(lookup_with_hash(hash, move(predicate)));
} }
Iterator find(const T& value) [[nodiscard]] Iterator find(T const& value)
{ {
return find(TraitsForT::hash(value), [&](auto& other) { return TraitsForT::equals(value, other); }); return find(TraitsForT::hash(value), [&](auto& other) { return TraitsForT::equals(value, other); });
} }
template<typename TUnaryPredicate> template<typename TUnaryPredicate>
ConstIterator find(unsigned hash, TUnaryPredicate predicate) const [[nodiscard]] ConstIterator find(unsigned hash, TUnaryPredicate predicate) const
{ {
return ConstIterator(lookup_with_hash(hash, move(predicate))); return ConstIterator(lookup_with_hash(hash, move(predicate)));
} }
ConstIterator find(const T& value) const [[nodiscard]] ConstIterator find(T const& value) const
{ {
return find(TraitsForT::hash(value), [&](auto& other) { return TraitsForT::equals(value, other); }); return find(TraitsForT::hash(value), [&](auto& other) { return TraitsForT::equals(value, other); });
} }
@ -360,7 +360,7 @@ private:
} }
} }
static size_t size_in_bytes(size_t capacity) [[nodiscard]] static size_t size_in_bytes(size_t capacity)
{ {
if constexpr (IsOrdered) { if constexpr (IsOrdered) {
return sizeof(BucketType) * capacity; return sizeof(BucketType) * capacity;
@ -406,7 +406,7 @@ private:
} }
template<typename TUnaryPredicate> template<typename TUnaryPredicate>
BucketType* lookup_with_hash(unsigned hash, TUnaryPredicate predicate) const [[nodiscard]] BucketType* lookup_with_hash(unsigned hash, TUnaryPredicate predicate) const
{ {
if (is_empty()) if (is_empty())
return nullptr; return nullptr;
@ -424,12 +424,12 @@ private:
} }
} }
const BucketType* lookup_for_reading(const T& value) const [[nodiscard]] BucketType const* lookup_for_reading(T const& value) const
{ {
return lookup_with_hash(TraitsForT::hash(value), [&value](auto& entry) { return TraitsForT::equals(entry, value); }); return lookup_with_hash(TraitsForT::hash(value), [&value](auto& entry) { return TraitsForT::equals(entry, value); });
} }
BucketType& lookup_for_writing(const T& value) [[nodiscard]] BucketType& lookup_for_writing(T const& value)
{ {
if (should_grow()) if (should_grow())
rehash(capacity() * 2); rehash(capacity() * 2);