Skip to content

ValidateMap

Description

Validate whether a given Map object is valid. Aborts if provided map is uninitialized or corrupted.

Parameters

Name Direction Description
m in Pointer to Map object to validate.

Success

Continue execution, meaning given map is most probably valid.

Failure

abort

Usage example (Cross-references)

Usage examples (Cross-references)
        size        hash_offset
    ) {
        ValidateMap(map);
    
        clear_map(map, entry_size, key_offset, key_size, value_offset, value_size, hash_offset);
        size idx;
    
        ValidateMap(map);
    
        for (idx = 0; idx < map->capacity; idx++) {
        size  new_capacity;
        size  idx;
        ValidateMap(map);
        validate_map_policy(&policy);
        size target_capacity;
    
        ValidateMap(map);
    
        target_capacity = map->policy.next_capacity(map->length, map->capacity, map->tombstones, n);
        u64  hash;
    
        ValidateMap(map);
    
        if (!map->capacity) {
    
    bool map_contains(GenericMap *map, const void *key, size entry_size, size key_offset, size key_size, size hash_offset) {
        ValidateMap(map);
    
        return map->capacity && (map_find_index(map, key, entry_size, key_offset, key_size, hash_offset) < map->capacity);
        size idx;
    
        ValidateMap(map);
    
        if (!map->value_compare) {
        size count = 0;
    
        ValidateMap(map);
    
        for (idx = 0; idx < map->capacity; idx++) {
        bool previous_seen = false;
    
        ValidateMap(map);
    
        if (!map->capacity || previous_index >= map->capacity) {
        size count = 0;
    
        ValidateMap(map);
    
        if (!map->capacity) {
        size idx;
    
        ValidateMap(map);
    
        if (!map->capacity) {
        void *value_ptr = NULL;
    
        ValidateMap(map);
    
        if (!key || !default_value || !out_value) {
        size idx;
    
        ValidateMap(map);
    
        if (cursor.__index == (size)-1) {
    
    void *map_value_ptr_from_cursor(GenericMap *map, MapValueCursor cursor, size entry_size, size value_offset) {
        ValidateMap(map);
    
        if (cursor.__index == (size)-1 || cursor.__index >= map->capacity ||
        u64  hash;
    
        ValidateMap(map);
    
        if (map->capacity == 0) {
        u64   hash;
    
        ValidateMap(map);
    
        existing_idx = map_find_index(map, key, entry_size, key_offset, key_size, hash_offset);
        void *temp_value;
    
        ValidateMap(map);
    
        if (!map->capacity) {
        size idx;
    
        ValidateMap(map);
    
        if (!map->capacity) {
        size idx;
    
        ValidateMap(map);
    
        if (!map->value_compare) {
        size removed = 0;
    
        ValidateMap(map);
    
        if (!map->capacity) {
        size removed = 0;
    
        ValidateMap(map);
    
        if (!predicate) {
        size removed = 0;
    
        ValidateMap(map);
    
        if (!predicate) {
        }
    
        ValidateMap(cfg);
    
        char c;
    
    static bool test_validate_uninitialized_map_fails(void) {
        WriteFmt("Testing ValidateMap on uninitialized map\n");
    
        Map(int, int) map = {0};
    
        Map(int, int) map = {0};
        ValidateMap(&map);
    
        return false;
    #define MapSwap(lhs, rhs)                                                                                              \
        do {                                                                                                               \
            ValidateMap(lhs);                                                                                              \
            ValidateMap(rhs);                                                                                              \
            TYPE_OF(*(lhs)) UNPL(tmp) = *(lhs);                                                                            \
        do {                                                                                                               \
            ValidateMap(lhs);                                                                                              \
            ValidateMap(rhs);                                                                                              \
            TYPE_OF(*(lhs)) UNPL(tmp) = *(lhs);                                                                            \
            *(lhs)                    = *(rhs);                                                                            \
    #define MapForeachPairPtr(m, key_ptr, value_ptr)                                                                                   \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                                     \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                                    \
                for (size UNPL(slot) = 0; UNPL(slot) < UNPL(pm)->capacity; UNPL(slot)++)                                               \
                    if (map_slot_occupied(UNPL(pm), UNPL(slot)))                                                                       \
    #define MapForeachPair(m, key_var, value_var)                                                                                     \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                                    \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                                   \
                for (size UNPL(slot) = 0; UNPL(slot) < UNPL(pm)->capacity; UNPL(slot)++)                                              \
                    if (map_slot_occupied(UNPL(pm), UNPL(slot)))                                                                      \
    #define MapForeachKey(m, key_var)                                                                                      \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                         \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                        \
                for (size UNPL(slot) = 0; UNPL(slot) < UNPL(pm)->capacity; UNPL(slot)++)                                   \
                    if (map_slot_occupied(UNPL(pm), UNPL(slot)) && (map_find_index(                                        \
    #define MapForeachValue(m, value_var)                                                                                  \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                         \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                        \
                for (size UNPL(slot) = 0; UNPL(slot) < UNPL(pm)->capacity; UNPL(slot)++)                                   \
                    if (map_slot_occupied(UNPL(pm), UNPL(slot)))                                                           \
    #define MapForeachValuePtr(m, value_ptr)                                                                               \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                         \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                        \
                for (size UNPL(slot) = 0; UNPL(slot) < UNPL(pm)->capacity; UNPL(slot)++)                                   \
                    if (map_slot_occupied(UNPL(pm), UNPL(slot)))                                                           \
    #define MapForeachValueForKey(m, lookup_key, value_var)                                                                \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                         \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                        \
                for (bool UNPL(_key_once) = true; UNPL(_key_once); UNPL(_key_once) = false)                                \
                    for (MAP_KEY_TYPE(UNPL(pm)) UNPL(find_key) = (lookup_key); UNPL(_key_once); UNPL(_key_once) = false)   \
    #define MapForeachValuePtrForKey(m, lookup_key, value_ptr)                                                             \
        for (TYPE_OF(m) UNPL(pm) = (m); UNPL(pm); UNPL(pm) = NULL)                                                         \
            if ((ValidateMap(UNPL(pm)), 1) && UNPL(pm)->length > 0)                                                        \
                for (bool UNPL(_key_once) = true; UNPL(_key_once); UNPL(_key_once) = false)                                \
                    for (MAP_KEY_TYPE(UNPL(pm)) UNPL(find_key) = (lookup_key); UNPL(_key_once); UNPL(_key_once) = false)   \
    ///
    #define MapInsertL(m, in_key, in_value)                                                                                \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(in_key), MAP_KEY_TYPE(m)),                                                         \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(in_value), MAP_VALUE_TYPE(m)),                                                     \
    ///
    #define MapInsertR(m, in_key, in_value)                                                                                \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(MAP_KEY_TYPE(m), in_key),                                                                  \
         CHECK_TYPE_CONVERTIBLE(MAP_VALUE_TYPE(m), in_value),                                                              \
    ///
    #define MapSetFirstL(m, in_key, in_value)                                                                              \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(MAP_KEY_TYPE(m), in_key),                                                                  \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(in_value), MAP_VALUE_TYPE(m)),                                                     \
    ///
    #define MapSetFirstR(m, in_key, in_value)                                                                              \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(MAP_KEY_TYPE(m), in_key),                                                                  \
         CHECK_TYPE_CONVERTIBLE(MAP_VALUE_TYPE(m), in_value),                                                              \
    ///
    #define MapSetOnlyL(m, in_key, in_value)                                                                               \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(in_key), MAP_KEY_TYPE(m)),                                                         \
         CHECK_TYPE_EQUIVALENCE(TYPE_OF(in_value), MAP_VALUE_TYPE(m)),                                                     \
    ///
    #define MapSetOnlyR(m, in_key, in_value)                                                                               \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(MAP_KEY_TYPE(m), in_key),                                                                  \
         CHECK_TYPE_CONVERTIBLE(MAP_VALUE_TYPE(m), in_value),                                                              \
    ///
    #define MapEnsurePtr(m, lookup_key, default_value)                                                                     \
        (ValidateMap(m),                                                                                                   \
         CHECK_TYPE_CONVERTIBLE(MAP_KEY_TYPE(m), lookup_key),                                                              \
         CHECK_TYPE_CONVERTIBLE(MAP_VALUE_TYPE(m), default_value),                                                         \
Last updated on