authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-06 06:10:03+00:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-07-06 06:10:03+00:00
logad2ed457dd925c65d7d2bcac9208cee5619c523d
treeb873229684321c6330d131e121806986eb8ee7b6
parenta2fd8f72c155d9c3ffeb3f625598fa81ed9629dc

std: expose unmanaged hash maps

These are useful when you have many of them in memory, and already have the allocator stored elsewhere.

2 files changed, 9 insertions(+), 3 deletions(-)

lib/std/hash_map.zig+4
...@@ -15,6 +15,10 @@ pub fn AutoHashMap(comptime K: type, comptime V: type) type {...@@ -15,6 +15,10 @@ pub fn AutoHashMap(comptime K: type, comptime V: type) type {
15 return HashMap(K, V, getAutoHashFn(K), getAutoEqlFn(K), autoEqlIsCheap(K));15 return HashMap(K, V, getAutoHashFn(K), getAutoEqlFn(K), autoEqlIsCheap(K));
16}16}
1717
18pub fn AutoHashMapUnmanaged(comptime K: type, comptime V: type) type {
19 return HashMapUnmanaged(K, V, getAutoHashFn(K), getAutoEqlFn(K), autoEqlIsCheap(K));
20}
21
18/// Builtin hashmap for strings as keys.22/// Builtin hashmap for strings as keys.
19pub fn StringHashMap(comptime V: type) type {23pub fn StringHashMap(comptime V: type) type {
20 return HashMap([]const u8, V, hashString, eqlString, true);24 return HashMap([]const u8, V, hashString, eqlString, true);
lib/std/std.zig+5-3
...@@ -3,14 +3,16 @@ pub const ArrayListAligned = @import("array_list.zig").ArrayListAligned;...@@ -3,14 +3,16 @@ pub const ArrayListAligned = @import("array_list.zig").ArrayListAligned;
3pub const ArrayListAlignedUnmanaged = @import("array_list.zig").ArrayListAlignedUnmanaged;3pub const ArrayListAlignedUnmanaged = @import("array_list.zig").ArrayListAlignedUnmanaged;
4pub const ArrayListSentineled = @import("array_list_sentineled.zig").ArrayListSentineled;4pub const ArrayListSentineled = @import("array_list_sentineled.zig").ArrayListSentineled;
5pub const ArrayListUnmanaged = @import("array_list.zig").ArrayListUnmanaged;5pub const ArrayListUnmanaged = @import("array_list.zig").ArrayListUnmanaged;
6pub const AutoHashMap = @import("hash_map.zig").AutoHashMap;6pub const AutoHashMap = hash_map.AutoHashMap;
7pub const AutoHashMapUnmanaged = hash_map.AutoHashMapUnmanaged;
7pub const BloomFilter = @import("bloom_filter.zig").BloomFilter;8pub const BloomFilter = @import("bloom_filter.zig").BloomFilter;
8pub const BufMap = @import("buf_map.zig").BufMap;9pub const BufMap = @import("buf_map.zig").BufMap;
9pub const BufSet = @import("buf_set.zig").BufSet;10pub const BufSet = @import("buf_set.zig").BufSet;
10pub const ChildProcess = @import("child_process.zig").ChildProcess;11pub const ChildProcess = @import("child_process.zig").ChildProcess;
11pub const ComptimeStringMap = @import("comptime_string_map.zig").ComptimeStringMap;12pub const ComptimeStringMap = @import("comptime_string_map.zig").ComptimeStringMap;
12pub const DynLib = @import("dynamic_library.zig").DynLib;13pub const DynLib = @import("dynamic_library.zig").DynLib;
13pub const HashMap = @import("hash_map.zig").HashMap;14pub const HashMap = hash_map.HashMap;
15pub const HashMapUnmanaged = hash_map.HashMapUnmanaged;
14pub const Mutex = @import("mutex.zig").Mutex;16pub const Mutex = @import("mutex.zig").Mutex;
15pub const PackedIntArray = @import("packed_int_array.zig").PackedIntArray;17pub const PackedIntArray = @import("packed_int_array.zig").PackedIntArray;
16pub const PackedIntArrayEndian = @import("packed_int_array.zig").PackedIntArrayEndian;18pub const PackedIntArrayEndian = @import("packed_int_array.zig").PackedIntArrayEndian;
...@@ -22,7 +24,7 @@ pub const ResetEvent = @import("reset_event.zig").ResetEvent;...@@ -22,7 +24,7 @@ pub const ResetEvent = @import("reset_event.zig").ResetEvent;
22pub const SegmentedList = @import("segmented_list.zig").SegmentedList;24pub const SegmentedList = @import("segmented_list.zig").SegmentedList;
23pub const SinglyLinkedList = @import("linked_list.zig").SinglyLinkedList;25pub const SinglyLinkedList = @import("linked_list.zig").SinglyLinkedList;
24pub const SpinLock = @import("spinlock.zig").SpinLock;26pub const SpinLock = @import("spinlock.zig").SpinLock;
25pub const StringHashMap = @import("hash_map.zig").StringHashMap;27pub const StringHashMap = hash_map.StringHashMap;
26pub const TailQueue = @import("linked_list.zig").TailQueue;28pub const TailQueue = @import("linked_list.zig").TailQueue;
27pub const Target = @import("target.zig").Target;29pub const Target = @import("target.zig").Target;
28pub const Thread = @import("thread.zig").Thread;30pub const Thread = @import("thread.zig").Thread;