Compare commits

...

2 Commits

2 changed files with 30 additions and 8 deletions

16
debug.h
View File

@ -11,6 +11,20 @@
extern int g_debug_error_abort; extern int g_debug_error_abort;
extern int g_debug_log_lvl; extern int g_debug_log_lvl;
#ifdef NDEBUG
#define LOG_INFO(...)
#define LOG_ERROR(...)
#define LOG_WARNING(...)
#define RETURN_ERROR(...)
#define RETURN_WARNING(...)
#define ASSERT_RETURN(...)
#define CHECK(...)
#define ASSERT_RETURN_WARN(...)
#define UNREACHABLE(...)
#else
#define LOG_INFO(...) do {\ #define LOG_INFO(...) do {\
if(g_debug_log_lvl < 3) break;\ if(g_debug_log_lvl < 3) break;\
printf("[%s:%d] INFO | ", __FILE__, __LINE__);\ printf("[%s:%d] INFO | ", __FILE__, __LINE__);\
@ -71,4 +85,6 @@ extern int g_debug_log_lvl;
abort();\ abort();\
} while(0) } while(0)
#endif
#endif // !CUTES_DEBUG_H #endif // !CUTES_DEBUG_H

View File

@ -42,17 +42,23 @@ void hash_map_insert(HashMap *self, void *key, void *value) {
} }
List hash_map_keys(HashMap *self) { List hash_map_keys(HashMap *self) {
List keys = list_init(self->key_size); List keys = list_from_type(void*);
for(size_t bucket_index = 0; bucket_index < CUTES_HASH_MAP_BUCKETS; ++bucket_index) for(size_t bucket_index = 0; bucket_index < CUTES_HASH_MAP_BUCKETS; ++bucket_index) {
for(size_t key_index = 0; key_index < self->buckets[bucket_index].len; ++key_index) for(size_t key_index = 0; key_index < self->buckets[bucket_index].len; ++key_index) {
list_add(&keys, list_at(self->buckets + bucket_index, key_index)); void *key = list_at(self->buckets + bucket_index, key_index) + sizeof(uintptr_t);
list_add(&keys, &key);
}
}
return keys; return keys;
} }
List hash_map_values(HashMap *self) { List hash_map_values(HashMap *self) {
List values = list_init(self->value_size); List values = list_from_type(void*);
for(size_t bucket_index = 0; bucket_index < CUTES_HASH_MAP_BUCKETS; ++bucket_index) for(size_t bucket_index = 0; bucket_index < CUTES_HASH_MAP_BUCKETS; ++bucket_index) {
for(size_t value_index = 0; value_index < self->buckets[bucket_index].len; ++value_index) for(size_t value_index = 0; value_index < self->buckets[bucket_index].len; ++value_index) {
list_add(&values, ((char*)list_at(self->buckets + bucket_index, value_index)) + (sizeof(uintptr_t) + self->key_size)); void *value = ((char*)list_at(self->buckets + bucket_index, value_index)) + (sizeof(uintptr_t) + self->key_size);
list_add(&values, &value);
}
}
return values; return values;
} }