Fix len, cap, comparison against nil for map

This commit is contained in:
gingerBill
2017-12-18 20:43:02 +00:00
parent b509946b13
commit a17310a83c
2 changed files with 34 additions and 20 deletions
+14 -4
View File
@@ -921,6 +921,20 @@ __dynamic_map_check_init :: proc(h: __Map_Header) {
}
}
__dynamic_map_len :: inline proc "contextless" (p: rawptr) -> int {
if m := transmute(raw.Map)p; m.internal != nil {
return m.internal.entries.len;
}
return 0;
}
__dynamic_map_cap :: inline proc "contextless" (p: rawptr) -> int {
if m := transmute(raw.Map)p; m.internal != nil {
return m.internal.entries.cap;
}
return 0;
}
__dynamic_map_reserve :: proc(using header: __Map_Header, cap: int, loc := #caller_location) {
__dynamic_map_check_init(header);
__dynamic_array_reserve(&m.hashes, size_of(int), align_of(int), cap, loc);
@@ -1094,7 +1108,3 @@ __dynamic_map_erase :: proc(using h: __Map_Header, fr: __Map_Find_Result) {
m.hashes[last.hash_index] = fr.entry_index;
}
}
__map_for_test :: proc "c" (s: string) {
fmt.printf("__map_for_test '%s'\n", s);
}