Skip to content

MapDeinit

Description

Release a map’s storage and zero its handle. Calls any configured key / value copy_deinit hooks on each live entry before freeing the entry array.

Parameters

Name Direction Description
m in,out Pointer to a Map handle.

Success

Returns to the caller. The handle is zeroed; all entries reclaimed through the configured allocator.

Failure

ValidateMap aborts via LOG_FATAL when m is NULL or uninitialised.

Usage example (Cross-references)

Usage examples (Cross-references)
        // / fuzz, the memory cost is the documented trade-off.
        if (self->live.allocator)
            MapDeinit(&self->live);
        if (self->freed.allocator)
            VecDeinit(&self->freed);
        }
    
        MapDeinit(&index);
        GraphDeinit(&graph);
        DefaultAllocatorDeinit(&alloc);
        result      = result && *MapGetFirstPtr(&counts, d) == 2;
    
        MapDeinit(&counts);
        GraphDeinit(&graph);
        DefaultAllocatorDeinit(&alloc);
        FloatDeinit(&probe);
        FloatDeinit(&missing);
        MapDeinit(&counts);
        DefaultAllocatorDeinit(&alloc);
        return result;
        BitVecDeinit(&probe);
        BitVecDeinit(&missing);
        MapDeinit(&counts);
        DefaultAllocatorDeinit(&alloc);
        return result;
        IntDeinit(&probe);
        IntDeinit(&missing);
        MapDeinit(&counts);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (value_count == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (red_count == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapPairCount(&second) == 2);
    
        MapDeinit(&first);
        MapDeinit(&second);
        DefaultAllocatorDeinit(&alloc);
    
        MapDeinit(&first);
        MapDeinit(&second);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapPairCount(&map) == 0);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapUniqueKeyCount(&map) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapUniqueKeyCount(&map) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapPairCount(&map) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapValueCountForKey(&map, 0) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 7) && (*MapGetFirstPtr(&map, 7) == 70);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      (MapCapacity(&map) == 0) && (MapTombstones(&map) == 0) && MapEmpty(&map);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 2) && (*MapGetFirstPtr(&map, 2) == 20);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 6) && (*MapGetFirstPtr(&map, 6) == 60);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, "alpha") && (ZstrCompare(*MapGetFirstPtr(&map, "alpha"), "first") == 0);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 3) && (*MapGetFirstPtr(&map, 3) == 30);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && !MapContainsPair(&map, 1, 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 1) && (*MapGetFirstPtr(&map, 1) == 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapPairCount(&map) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 42) && (*MapGetFirstPtr(&map, 42) == 84);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 42) && (*MapGetFirstPtr(&map, 42) == 84);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapGetFirstPtr(&map, 11) && (*MapGetFirstPtr(&map, 11) == 110);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result   = result && (MapPairCount(&map) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapPairCount(&map) == 664);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result    = result && (MapValueCountForKey(&map, 8) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapPairCount(&map) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 1) && (*MapGetFirstPtr(&map, 1) == 11);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 5) && (*MapGetFirstPtr(&map, 5) == 55);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        MapRehashWithPolicy(&map, 1, bad); // real: LOG_FATAL on the stuck-probe check
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        result = result && MapGetFirstPtr(&map, 5) && (*MapGetFirstPtr(&map, 5) == 50);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 7) && (*MapGetFirstPtr(&map, 7) == 70);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 9) && (*MapGetFirstPtr(&map, 9) == 90);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 11) && (*MapGetFirstPtr(&map, 11) == 110);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 3) && (*MapGetFirstPtr(&map, 3) == 30);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        MapRehashWithPolicy(&map, 2, sab); // must LOG_FATAL "insufficient capacity"
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
            result = result && MapGetFirstPtr(&map, k) && (*MapGetFirstPtr(&map, k) == k * 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&inner);
        return result;
            result = result && MapGetFirstPtr(&map, keys[i]) && (*MapGetFirstPtr(&map, keys[i]) == keys[i] + 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 7) && (*MapGetFirstPtr(&map, 7) == 71);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (MapTombstones(&map) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result        = result && (MapCapacity(&map) >= 100);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (MapCapacity(&map) == 16);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 200) && (*MapGetFirstPtr(&map, 200) == 200);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (MapCapacity(&map) == 8);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 7) && (*MapGetFirstPtr(&map, 7) == 700);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
            result = result && MapGetFirstPtr(&map, k) && (*MapGetFirstPtr(&map, k) == k * 100 + 3);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      MapPolicy(&map).max_probe_count == MapPolicyLinear.max_probe_count;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
            MapKeyCompare(&map) == i32_compare && MapValueCompare(&map) == i32_compare && MapKeyHash(&map) == i32_hash;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      MapPolicy(&map).next_index == custom_next_index && MapPolicy(&map).max_probe_count == 11;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      MapPolicy(&map).next_index == custom_next_index && MapPolicy(&map).max_probe_count == 13;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      MapAllocator(&map) == ALLOCATOR_OF(&alloc);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        g->tombstones = real_tombs;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        ValidateMap(&map);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapContainsPair(&map, 1, 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapRemovePair(&map, 1, 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapRemoveIf(&map, NULL, NULL);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapRetainIf(&map, NULL, NULL);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        result           = result && MapGetFirstPtr(&map, 1) && (*MapGetFirstPtr(&map, 1) == 10);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        MapPolicy        policy = make_probe_policy(poly_next_index_stuck_at_cap8);
        IntIntMap        map    = MapInitWithPolicy(i32_hash, i32_compare, policy, &alloc); // must LOG_FATAL
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapPolicy        policy = make_probe_policy(poly_next_index_stuck_at_golden);
        IntIntMap        map    = MapInitWithPolicy(i32_hash, i32_compare, policy, &alloc); // must LOG_FATAL
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        MapPolicy        policy = make_probe_policy(poly_next_index_returns_first);
        IntIntMap        map    = MapInitWithPolicy(i32_hash, i32_compare, policy, &alloc); // must LOG_FATAL
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return false;
        g->length = real_length;
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 2) && (*MapGetFirstPtr(&map, 2) == 20);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapContainsKey(&map, 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapValueCountForKey(&map, 5) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapContainsPair(&map, 5, 51);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result     = result && value && (*value == 51);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapPairCount(&map) == 0);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = (removed == 0) && (MapPairCount(&map) == 0);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapPairCount(&map) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapPairCount(&map) == 1);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && MapContainsKey(&map, 9);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapGetFirstPtr(&map, 11) && (*MapGetFirstPtr(&map, 11) == 111);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && MapContainsKey(&map, "gamma");
    
        MapDeinit(&map);
    
        // After deinit, every clone and the table storage must be freed.
        result  = result && MapGetFirstPtr(&map, 0) && MapGetFirstPtr(&map, 3);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (key_sum == 12) && (value_sum == 125);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (all_value_sum == 292);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (key_sum_again == 12) && (value_sum_again == 125);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (after_sum == before_sum + 20);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (n == 0);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (MapValueCountForKey(&map, 0) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ok && (MapValuePtrFromCursor(&map, cursor) == NULL);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapUniqueKeyCount(&map) == 2);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (MapGetFirstPtr(&map, 999) == NULL);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && !MapContainsPair(&map, 11, 110);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result  = result && !MapContainsKey(&map, 7);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && !MapContainsKey(&map, 999);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
            int *value_ptr = MapValuePtrFromCursor(&map, cursor);
            if (!value_ptr) {
                MapDeinit(&map);
                DefaultAllocatorDeinit(&alloc);
                return false;
        result                = result && !MapValueCursorIsValid(MapFindNextForKey(&map, 9, past));
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        cursor = MapFindFirstForKey(&map, 5);
        if (!MapValueCursorIsValid(cursor)) {
            MapDeinit(&map);
            DefaultAllocatorDeinit(&alloc);
            return false;
        result      = result && MapGetFirstPtr(&map, 5) && (*MapGetFirstPtr(&map, 5) == 51);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && !MapContainsPair(&map, 4, 999);
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        MapDeinit(&map);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
        StrDeinit(&host_copy);
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
        StrDeinit(&k_enabled);
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        StrDeinit(&text);
        MapDeinit(&cfg);
    
        ok = DebugAllocatorLiveCount(&dbg) == 0;
    
        StrDeinit(&text);
        MapDeinit(&cfg);
    
        // The stripped-away old value buffer must already be freed.
    
        StrDeinit(&text);
        MapDeinit(&cfg);
    
        // The parser's local key copy must already be freed.
    
        StrDeinit(&text);
        MapDeinit(&cfg);
    
        // The parser's local value copy must already be freed.
    
        StrDeinit(&text);
        MapDeinit(&cfg);
    
        // Every transient lookup key must already be freed.
Last updated on