added get_ptr to set
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 24 Apr 2022 00:17:54 +0000 (19:17 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 24 Apr 2022 00:17:54 +0000 (19:17 -0500)
core/container/set.onyx

index b181a887bb1c50377a2e86ffb15c4472f1cf2990..bd69c6c0a8f7a21304aefd6734fff1b01ed71feb 100644 (file)
@@ -31,6 +31,7 @@ Set :: struct (Elem_Type: type_expr) where SetValue(Elem_Type) {
     free     :: free
     has      :: has
     get      :: get
+    get_ptr  :: get_ptr
     insert   :: insert
     remove   :: remove
     clear    :: clear
@@ -87,6 +88,11 @@ get :: (use set: ^Set, value: set.Elem_Type) -> set.Elem_Type {
     return entries[lr.entry_index].value if lr.entry_index >= 0 else __zero_value(T);
 }
 
+get_ptr :: (use set: ^Set, value: set.Elem_Type) -> ^set.Elem_Type {
+    lr := lookup(set, value);
+    return entries[lr.entry_index].value if lr.entry_index >= 0 else null;
+}
+
 remove :: (use set: ^Set, value: set.Elem_Type) {
     lr := lookup(set, value);
     if lr.entry_index < 0 do return;