diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-01-16 22:49:20 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-01-16 22:49:20 -0700 |
| commit | 8436134499c623485aeb20374a9928685db4211e (patch) | |
| tree | 648042f284a82ecdad0499a1de8243285d9b2dfc /lib/std/array_hash_map.zig | |
| parent | 1f65828ec6caa7697b26d9e919112aa1715b57bc (diff) | |
| download | zig-8436134499c623485aeb20374a9928685db4211e.tar.gz zig-8436134499c623485aeb20374a9928685db4211e.zip | |
std.ArrayHashMap: add "AssertDiscard" function variants
* Add `swapRemoveAssertDiscard`
* Add `orderedRemoveAssertDiscard`
* Deprecate `removeAssertDiscard`
Diffstat (limited to 'lib/std/array_hash_map.zig')
| -rw-r--r-- | lib/std/array_hash_map.zig | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/lib/std/array_hash_map.zig b/lib/std/array_hash_map.zig index b6478d4094..5008b3a4af 100644 --- a/lib/std/array_hash_map.zig +++ b/lib/std/array_hash_map.zig @@ -239,12 +239,23 @@ pub fn ArrayHashMap( return self.unmanaged.orderedRemove(key); } - /// Asserts there is an `Entry` with matching key, deletes it from the hash map, - /// and discards it. + /// TODO: deprecated: call swapRemoveAssertDiscard instead. pub fn removeAssertDiscard(self: *Self, key: K) void { return self.unmanaged.removeAssertDiscard(key); } + /// Asserts there is an `Entry` with matching key, deletes it from the hash map + /// by swapping it with the last element, and discards it. + pub fn swapRemoveAssertDiscard(self: *Self, key: K) void { + return self.unmanaged.swapRemoveAssertDiscard(key); + } + + /// Asserts there is an `Entry` with matching key, deletes it from the hash map + /// by by shifting all elements forward thereby maintaining the current ordering. + pub fn orderedRemoveAssertDiscard(self: *Self, key: K) void { + return self.unmanaged.orderedRemoveAssertDiscard(key); + } + pub fn items(self: Self) []Entry { return self.unmanaged.items(); } @@ -602,12 +613,23 @@ pub fn ArrayHashMapUnmanaged( return self.removeInternal(key, .ordered); } - /// Asserts there is an `Entry` with matching key, deletes it from the hash map, - /// and discards it. + /// TODO deprecated: call swapRemoveAssertDiscard instead. pub fn removeAssertDiscard(self: *Self, key: K) void { + return self.swapRemoveAssertDiscard(key); + } + + /// Asserts there is an `Entry` with matching key, deletes it from the hash map + /// by swapping it with the last element, and discards it. + pub fn swapRemoveAssertDiscard(self: *Self, key: K) void { assert(self.swapRemove(key) != null); } + /// Asserts there is an `Entry` with matching key, deletes it from the hash map + /// by by shifting all elements forward thereby maintaining the current ordering. + pub fn orderedRemoveAssertDiscard(self: *Self, key: K) void { + assert(self.orderedRemove(key) != null); + } + pub fn items(self: Self) []Entry { return self.entries.items; } |
