From 12120167a9acc34a6cacf4153dc67b0fceba78a0 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 27 May 2019 13:07:20 +0200 Subject: [PATCH] AK: Add ensure_capacity() for HashMap and HashTable. These functions make sure that the underlying table can accomodate at least 'capacity' entries before needing a rehash. --- AK/HashMap.h | 2 ++ AK/HashTable.h | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/AK/HashMap.h b/AK/HashMap.h index a2f54cf216..828a9017e1 100644 --- a/AK/HashMap.h +++ b/AK/HashMap.h @@ -69,6 +69,8 @@ public: ConstIteratorType end() const { return m_table.end(); } ConstIteratorType find(const K&) const; + void ensure_capacity(int capacity) { m_table.ensure_capacity(capacity); } + void dump() const { m_table.dump(); } V get(const K& key) const diff --git a/AK/HashTable.h b/AK/HashTable.h index 7a02060141..8a4b5f847d 100644 --- a/AK/HashTable.h +++ b/AK/HashTable.h @@ -49,6 +49,12 @@ public: int size() const { return m_size; } int capacity() const { return m_capacity; } + void ensure_capacity(int capacity) + { + ASSERT(capacity >= size()); + rehash(capacity); + } + void set(const T&); void set(T&&); bool contains(const T&) const;