aboutsummaryrefslogtreecommitdiff
path: root/src/ptr_set.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2017-12-12 23:39:20 +0000
committergingerBill <bill@gingerbill.org>2017-12-12 23:39:20 +0000
commit367013f589b2ae87a0b83410bc4ea770e1263157 (patch)
tree74683b63a606055a6fd8ae172de428c5fd4c2ece /src/ptr_set.cpp
parentc980a30bad9fc98c21e4ea36b4e27568650cd601 (diff)
Change Map and PtrSet grow rate
Diffstat (limited to 'src/ptr_set.cpp')
-rw-r--r--src/ptr_set.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/ptr_set.cpp b/src/ptr_set.cpp
index d16002b3e..317b8e68c 100644
--- a/src/ptr_set.cpp
+++ b/src/ptr_set.cpp
@@ -17,14 +17,14 @@ struct PtrSet {
Array<PtrSetEntry<T>> entries;
};
-template <typename T> void ptr_set_init (PtrSet<T> *s, gbAllocator a, isize capacity = 16);
-template <typename T> void ptr_set_destroy (PtrSet<T> *s);
-template <typename T> T ptr_set_add (PtrSet<T> *s, T ptr);
-template <typename T> bool ptr_set_exists (PtrSet<T> *s, T ptr);
-template <typename T> void ptr_set_remove (PtrSet<T> *s, T ptr);
-template <typename T> void ptr_set_clear (PtrSet<T> *s);
-template <typename T> void ptr_set_grow (PtrSet<T> *s);
-template <typename T> void ptr_set_rehash (PtrSet<T> *s, isize new_count);
+template <typename T> void ptr_set_init (PtrSet<T> *s, gbAllocator a, isize capacity = 16);
+template <typename T> void ptr_set_destroy(PtrSet<T> *s);
+template <typename T> T ptr_set_add (PtrSet<T> *s, T ptr);
+template <typename T> bool ptr_set_exists (PtrSet<T> *s, T ptr);
+template <typename T> void ptr_set_remove (PtrSet<T> *s, T ptr);
+template <typename T> void ptr_set_clear (PtrSet<T> *s);
+template <typename T> void ptr_set_grow (PtrSet<T> *s);
+template <typename T> void ptr_set_rehash (PtrSet<T> *s, isize new_count);
template <typename T>
@@ -88,9 +88,12 @@ gb_internal b32 ptr_set__full(PtrSet<T> *s) {
return 0.75f * s->hashes.count <= s->entries.count;
}
+#define PTR_ARRAY_GROW_FORMULA(x) (4*(x) + 7)
+GB_STATIC_ASSERT(PTR_ARRAY_GROW_FORMULA(0) > 0);
+
template <typename T>
gb_inline void ptr_set_grow(PtrSet<T> *s) {
- isize new_count = ARRAY_GROW_FORMULA(s->entries.count);
+ isize new_count = PTR_ARRAY_GROW_FORMULA(s->entries.count);
ptr_set_rehash(s, new_count);
}