-uint64_t map_cas (map_t *map, const void *key_data, uint32_t key_len, uint64_t expected_val, uint64_t new_val) {
- switch (map->type) {
- case MAP_TYPE_HASHTABLE: return ht_cas(map->impl, key_data, key_len, expected_val, new_val);
- case MAP_TYPE_SKIPLIST: return sl_cas(map->impl, key_data, key_len, expected_val, new_val);
- case MAP_TYPE_LIST: return ll_cas(map->impl, key_data, key_len, expected_val, new_val);
- }
- return ERROR_INVALID_ARGUMENT;
+uint64_t map_cas (map_t *map, void *key, uint64_t expected_val, uint64_t new_val) {
+ return map->impl->cas(map->data, key, expected_val, new_val);