tweak: formatting of hash map
This commit is contained in:
		
							parent
							
								
									e99e391ffa
								
							
						
					
					
						commit
						faf0463e37
					
				
							
								
								
									
										14
									
								
								hash_map.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								hash_map.c
									
									
									
									
									
								
							|  | @ -1,5 +1,6 @@ | |||
| #include "hash_map.h" | ||||
| #include "string.h" | ||||
| #include "debug.h" | ||||
| 
 | ||||
| HashMap hash_map_from_sizes(size_t key, size_t value, HashFunc hasher) { | ||||
|     HashMap self = { | ||||
|  | @ -23,9 +24,10 @@ void *hash_map_get_raw(HashMap *self, void *key) { | |||
|     List bucket = self->buckets[hash % CUTES_HASH_MAP_BUCKETS]; // get the bucket to search
 | ||||
|     // linear search through the bucket to find the element
 | ||||
|     for(size_t i = 0; i < bucket.len; ++i) { | ||||
|         uintptr_t *key_at = list_at(&bucket, i); | ||||
|         if(hash == *key_at) | ||||
|             return ((char*)key_at) + sizeof(uintptr_t) + self->key_size; | ||||
|         char *key_at = ((char*)bucket.data) + (bucket.element_size * i); | ||||
|         if(memcmp(&hash, key_at, sizeof(uintptr_t)) == 0) { | ||||
|             return key_at + sizeof(uintptr_t) + self->key_size; | ||||
|         } | ||||
|     } | ||||
|     return NULL; | ||||
| } | ||||
|  | @ -34,11 +36,11 @@ void hash_map_insert(HashMap *self, void *key, void *value) { | |||
|     uintptr_t hash = self->hasher(key); | ||||
|     // stage key-value-pair data
 | ||||
|     char data[self->buckets[0].element_size]; | ||||
|     memcpy(data, &hash, sizeof(uintptr_t)); // copy key hash into start of data
 | ||||
|     memcpy(data + sizeof(uintptr_t), key, self->key_size); // copy key after hash
 | ||||
|     memcpy(data,                                      &hash, sizeof(uintptr_t)); // copy key hash into start of data
 | ||||
|     memcpy(data + sizeof(uintptr_t),                  key,   self->key_size); // copy key after hash
 | ||||
|     memcpy(data + sizeof(uintptr_t) + self->key_size, value, self->value_size); // copy value into end of data
 | ||||
|     // insert staged data into list
 | ||||
|     list_add(self->buckets + (hash % CUTES_HASH_MAP_BUCKETS), data); | ||||
|     list_add(&self->buckets[hash % CUTES_HASH_MAP_BUCKETS], data); | ||||
| } | ||||
| 
 | ||||
| List hash_map_keys(HashMap *self) { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Sara
						Sara