diff options
Diffstat (limited to 'src/thread_safe_hash_map.zig')
-rw-r--r-- | src/thread_safe_hash_map.zig | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/thread_safe_hash_map.zig b/src/thread_safe_hash_map.zig index 40aeff7d6..5c3a8cf51 100644 --- a/src/thread_safe_hash_map.zig +++ b/src/thread_safe_hash_map.zig @@ -1,9 +1,10 @@ const std = @import("std"); const sync = @import("sync.zig"); usingnamespace @import("global.zig"); +const hash_map = @import("hash_map.zig"); pub fn ThreadSafeStringHashMap(comptime Value: type) type { - const HashMapType = std.StringHashMap(Value); + const HashMapType = hash_map.StringHashMap(Value); return struct { backing: HashMapType, lock: sync.RwLock, @@ -22,12 +23,22 @@ pub fn ThreadSafeStringHashMap(comptime Value: type) type { return self.backing.get(key); } + pub fn getHash(key: string) u64 { + return HashMapType.getHash(key); + } + pub fn contains(self: *HashMap, str: string) bool { self.lock.lockShared(); defer self.lock.unlockShared(); return self.backing.contains(str); } + pub fn containsHash(self: *HashMap, hash: u64) bool { + self.lock.lockShared(); + defer self.lock.unlockShared(); + return self.backing.contains(str); + } + pub fn deinit(self: *HashMap, allocator: *std.mem.Allocator) void { self.backing.deinit(); } @@ -37,5 +48,11 @@ pub fn ThreadSafeStringHashMap(comptime Value: type) type { defer self.lock.unlock(); try self.backing.put(key, value); } + + pub fn putWithHash(self: *HashMap, key: string, hash: u64, value: Value) !void { + self.lock.lock(); + defer self.lock.unlock(); + try self.backing.put(key, value); + } }; } |