aboutsummaryrefslogtreecommitdiff
path: root/src/common.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-11-23 12:03:26 +0000
committerGinger Bill <bill@gingerbill.org>2016-11-23 12:03:26 +0000
commitef8563a818812493c33e34a259189757d0e7612b (patch)
tree0f83027c0d8238d8132a53b8ccfdb3b5055e2b8b /src/common.cpp
parentaa2bcb166f2f0356dceb4e9424223ccbd483faf0 (diff)
Remove auto
Diffstat (limited to 'src/common.cpp')
-rw-r--r--src/common.cpp303
1 files changed, 0 insertions, 303 deletions
diff --git a/src/common.cpp b/src/common.cpp
index 93f5e6d00..db946d5f3 100644
--- a/src/common.cpp
+++ b/src/common.cpp
@@ -246,306 +246,3 @@ i16 f32_to_f16(f32 value) {
#define MAP_FUNC map_isize_
#define MAP_NAME MapIsize
#include "map.c"
-
-
-#if 0
-#ifndef MAP_FIND_RESULT
-#define MAP_FIND_RESULT
-typedef struct MapFindResult {
- isize hash_index;
- isize entry_prev;
- isize entry_index;
-} MapFindResult;
-#endif
-
-
-template <typename T>
-struct MapEntry {
- HashKey key;
- isize next;
- T value;
-};
-
-template <typename T>
-struct Map {
- Array(isize) hashes;
- Array(MapEntry<T>) entries;
-};
-
-template <typename T> void map_init (Map<T> *h, gbAllocator a);
-template <typename T> void map_init_with_reserve(Map<T> *h, gbAllocator a, isize capacity);
-template <typename T> void map_destroy (Map<T> *h);
-template <typename T> T * map_get (Map<T> *h, HashKey key);
-template <typename T> void map_set (Map<T> *h, HashKey key, T value);
-template <typename T> void map_remove (Map<T> *h, HashKey key);
-template <typename T> void map_clear (Map<T> *h);
-template <typename T> void map_grow (Map<T> *h);
-template <typename T> void map_rehash (Map<T> *h, isize new_count);
-
-template <typename T> MapEntry<T> *multi_map_find_first(Map<T> *h, HashKey key);
-template <typename T> MapEntry<T> *multi_map_find_next (Map<T> *h, MapEntry<T> *e);
-
-template <typename T> isize multi_map_count (Map<T> *h, HashKey key);
-template <typename T> void multi_map_get_all (Map<T> *h, HashKey key, T *items);
-template <typename T> void multi_map_insert (Map<T> *h, HashKey key, T value);
-template <typename T> void multi_map_remove (Map<T> *h, HashKey key, MapEntry<T> *e);
-template <typename T> void multi_map_remove_all(Map<T> *h, HashKey key);
-
-
-
-
-template <typename T>
-gb_inline void map_init(Map<T> *h, gbAllocator a) {
- array_init(&h->hashes, a);
- array_init(&h->entries, a);
-}
-
-template <typename T>
-gb_inline void map_init_with_reserve(Map<T> *h, gbAllocator a, isize capacity) {
- array_init_reserve(&h->hashes, a, capacity);
- array_init_reserve(&h->entries, a, capacity);
-}
-
-template <typename T>
-gb_inline void map_destroy(Map<T> *h) {
- array_free(&h->entries);
- array_free(&h->hashes);
-}
-
-template <typename T>
-gb_internal isize map__add_entry(Map<T> *h, HashKey key) {
- MapEntry<T> e = {};
- e.key = key;
- e.next = -1;
- array_add(&h->entries, e);
- return h->entries.count-1;
-}
-
-template <typename T>
-gb_internal MapFindResult map__find(Map<T> *h, HashKey key) {
- MapFindResult fr = {-1, -1, -1};
- if (h->hashes.count > 0) {
- fr.hash_index = key.key % h->hashes.count;
- fr.entry_index = h->hashes.e[fr.hash_index];
- while (fr.entry_index >= 0) {
- if (hash_key_equal(h->entries.e[fr.entry_index].key, key)) {
- return fr;
- }
- fr.entry_prev = fr.entry_index;
- fr.entry_index = h->entries.e[fr.entry_index].next;
- }
- }
- return fr;
-}
-
-template <typename T>
-gb_internal MapFindResult map__find(Map<T> *h, MapEntry<T> *e) {
- MapFindResult fr = {-1, -1, -1};
- if (h->hashes.count > 0) {
- fr.hash_index = e->key.key % h->hashes.count;
- fr.entry_index = h->hashes.e[fr.hash_index];
- while (fr.entry_index >= 0) {
- if (&h->entries.e[fr.entry_index] == e) {
- return fr;
- }
- fr.entry_prev = fr.entry_index;
- fr.entry_index = h->entries.e[fr.entry_index].next;
- }
- }
- return fr;
-}
-
-
-template <typename T>
-gb_internal bool map__full(Map<T> *h) {
- return 0.75f * h->hashes.count <= h->entries.count;
-}
-
-template <typename T>
-gb_inline void map_grow(Map<T> *h) {
- isize new_count = GB_ARRAY_GROW_FORMULA(h->entries.count);
- map_rehash(h, new_count);
-}
-
-template <typename T>
-void map_rehash(Map<T> *h, isize new_count) {
- isize i, j;
- Map<T> nh = {0};
- map_init(&nh, h->hashes.allocator);
- array_resize(&nh.hashes, new_count);
- array_reserve(&nh.entries, h->entries.count);
- for (i = 0; i < new_count; i++) {
- nh.hashes.e[i] = -1;
- }
- for (i = 0; i < h->entries.count; i++) {
- MapEntry<T> *e = &h->entries.e[i];
- MapFindResult fr;
- if (nh.hashes.count == 0) {
- map_grow(&nh);
- }
- fr = map__find(&nh, e->key);
- j = map__add_entry(&nh, e->key);
- if (fr.entry_prev < 0) {
- nh.hashes.e[fr.hash_index] = j;
- } else {
- nh.entries.e[fr.entry_prev].next = j;
- }
- nh.entries.e[j].next = fr.entry_index;
- nh.entries.e[j].value = e->value;
- if (map__full(&nh)) {
- map_grow(&nh);
- }
- }
- map_destroy(h);
- *h = nh;
-}
-
-template <typename T>
-gb_inline T *map_get(Map<T> *h, HashKey key) {
- isize index = map__find(h, key).entry_index;
- if (index >= 0)
- return &h->entries.e[index].value;
- return NULL;
-}
-
-template <typename T>
-void map_set(Map<T> *h, HashKey key, T value) {
- isize index;
- MapFindResult fr;
- if (h->hashes.count == 0)
- map_grow(h);
- fr = map__find(h, key);
- if (fr.entry_index >= 0) {
- index = fr.entry_index;
- } else {
- index = map__add_entry(h, key);
- if (fr.entry_prev >= 0) {
- h->entries.e[fr.entry_prev].next = index;
- } else {
- h->hashes.e[fr.hash_index] = index;
- }
- }
- h->entries.e[index].value = value;
-
- if (map__full(h))
- map_grow(h);
-}
-
-
-
-template <typename T>
-void map__erase(Map<T> *h, MapFindResult fr) {
- if (fr.entry_prev < 0) {
- h->hashes.e[fr.hash_index] = h->entries.e[fr.entry_index].next;
- } else {
- h->entries.e[fr.entry_prev].next = h->entries.e[fr.entry_index].next;
- }
- if (fr.entry_index == h->entries.count-1) {
- array_pop(&h->entries);
- return;
- }
- h->entries.e[fr.entry_index] = h->entries.e[h->entries.count-1];
- MapFindResult last = map__find(h, h->entries.e[fr.entry_index].key);
- if (last.entry_prev >= 0) {
- h->entries.e[last.entry_prev].next = fr.entry_index;
- } else {
- h->hashes.e[last.hash_index] = fr.entry_index;
- }
-}
-
-template <typename T>
-void map_remove(Map<T> *h, HashKey key) {
- MapFindResult fr = map__find(h, key);
- if (fr.entry_index >= 0) {
- map__erase(h, fr);
- }
-}
-
-template <typename T>
-gb_inline void map_clear(Map<T> *h) {
- gb_array_clear(h->hashes);
- gb_array_clear(h->entries);
-}
-
-
-
-template <typename T>
-MapEntry<T> *multi_map_find_first(Map<T> *h, HashKey key) {
- isize i = map__find(h, key).entry_index;
- if (i < 0) {
- return NULL;
- }
- return &h->entries.e[i];
-}
-
-template <typename T>
-MapEntry<T> *multi_map_find_next(Map<T> *h, MapEntry<T> *e) {
- isize i = e->next;
- while (i >= 0) {
- if (hash_key_equal(h->entries.e[i].key, e->key)) {
- return &h->entries.e[i];
- }
- i = h->entries.e[i].next;
- }
- return NULL;
-}
-
-template <typename T>
-isize multi_map_count(Map<T> *h, HashKey key) {
- isize count = 0;
- auto *e = multi_map_find_first(h, key);
- while (e != NULL) {
- count++;
- e = multi_map_find_next(h, e);
- }
- return count;
-}
-
-template <typename T>
-void multi_map_get_all(Map<T> *h, HashKey key, T *items) {
- isize i = 0;
- auto *e = multi_map_find_first(h, key);
- while (e != NULL) {
- items[i++] = e->value;
- e = multi_map_find_next(h, e);
- }
-}
-
-template <typename T>
-void multi_map_insert(Map<T> *h, HashKey key, T value) {
- if (h->hashes.count == 0) {
- map_grow(h);
- }
- MapFindResult fr = map__find(h, key);
- isize i = map__add_entry(h, key);
- if (fr.entry_prev < 0) {
- h->hashes.e[fr.hash_index] = i;
- } else {
- h->entries.e[fr.entry_prev].next = i;
- }
- h->entries.e[i].next = fr.entry_index;
- h->entries.e[i].value = value;
- if (map__full(h)) {
- map_grow(h);
- }
-}
-
-template <typename T>
-void multi_map_remove(Map<T> *h, HashKey key, MapEntry<T> *e) {
- MapFindResult fr = map__find(h, e);
- if (fr.entry_index >= 0) {
- map__erase(h, fr);
- }
-}
-
-template <typename T>
-void multi_map_remove_all(Map<T> *h, HashKey key) {
- while (map_get(h, key) != NULL) {
- map_remove(h, key);
- }
-}
-
-
-
-
-#endif