diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-08-28 16:59:35 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-08-28 16:59:35 -0400 |
| commit | 928ce5e326ccd1b7456002c28f34975b5bc4b13f (patch) | |
| tree | 5706376fe74103223511f5a4954ce2dff0b08d0e /std/hash_map.zig | |
| parent | 2f3ad48c9b35ccac377e710a4eee6b35f60b119f (diff) | |
| parent | e8a9caa3dd0aef7b745b8197afecec90598b2cdd (diff) | |
| download | zig-928ce5e326ccd1b7456002c28f34975b5bc4b13f.tar.gz zig-928ce5e326ccd1b7456002c28f34975b5bc4b13f.zip | |
Merge remote-tracking branch 'origin/master' into llvm9
Diffstat (limited to 'std/hash_map.zig')
| -rw-r--r-- | std/hash_map.zig | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/std/hash_map.zig b/std/hash_map.zig index ab3c4c248d..5a852d4302 100644 --- a/std/hash_map.zig +++ b/std/hash_map.zig @@ -17,6 +17,21 @@ pub fn AutoHashMap(comptime K: type, comptime V: type) type { return HashMap(K, V, getAutoHashFn(K), getAutoEqlFn(K)); } +/// Builtin hashmap for strings as keys. +pub fn StringHashMap(comptime V: type) type { + return HashMap([]const u8, V, hashString, eqlString); +} + +pub fn eqlString(a: []const u8, b: []const u8) bool { + if (a.len != b.len) return false; + if (a.ptr == b.ptr) return true; + return mem.compare(u8, a, b) == .Equal; +} + +pub fn hashString(s: []const u8) u32 { + return @truncate(u32, std.hash.Wyhash.hash(0, s)); +} + pub fn HashMap(comptime K: type, comptime V: type, comptime hash: fn (key: K) u32, comptime eql: fn (a: K, b: K) bool) type { return struct { entries: []Entry, |
