From 6707c8750e951ed6533ab3d4240314cf0bba7147 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Sun, 27 Aug 2017 14:42:19 +0100 Subject: Import cycle checking --- src/ptr_set.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/ptr_set.cpp') diff --git a/src/ptr_set.cpp b/src/ptr_set.cpp index 1eecee33e..7f1c12c17 100644 --- a/src/ptr_set.cpp +++ b/src/ptr_set.cpp @@ -19,7 +19,7 @@ struct PtrSet { template void ptr_set_init (PtrSet *s, gbAllocator a, isize capacity = 16); template void ptr_set_destroy (PtrSet *s); -template void ptr_set_add (PtrSet *s, T ptr); +template bool ptr_set_add (PtrSet *s, T ptr); template bool ptr_set_exists (PtrSet *s, T ptr); template void ptr_set_remove (PtrSet *s, T ptr); template void ptr_set_clear (PtrSet *s); @@ -134,8 +134,10 @@ gb_inline bool ptr_set_exists(PtrSet *s, T ptr) { return index >= 0; } +// Returns true if it already exists template -void ptr_set_add(PtrSet *s, T ptr) { +bool ptr_set_add(PtrSet *s, T ptr) { + bool exists = false; isize index; PtrSetFindResult fr; if (s->hashes.count == 0) { @@ -144,6 +146,7 @@ void ptr_set_add(PtrSet *s, T ptr) { fr = ptr_set__find(s, ptr); if (fr.entry_index >= 0) { index = fr.entry_index; + exists = true; } else { index = ptr_set__add_entry(s, ptr); if (fr.entry_prev >= 0) { @@ -155,6 +158,8 @@ void ptr_set_add(PtrSet *s, T ptr) { if (ptr_set__full(s)) { ptr_set_grow(s); } + + return exists; } -- cgit v1.2.3