From d499436acfeac2cb64db89cc8ae1219a91d5fc1e Mon Sep 17 00:00:00 2001 From: Fabrice Date: Sun, 22 Mar 2026 21:33:45 +0100 Subject: remove readme --- README | 81 ------------------------------------------------------------------ 1 file changed, 81 deletions(-) delete mode 100644 README (limited to 'README') diff --git a/README b/README deleted file mode 100644 index 7823fa7..0000000 --- a/README +++ /dev/null @@ -1,81 +0,0 @@ -``` -Cheesemap -==== - -Cheesemap is a swiss-table like HashMap implementation in C. It's designed to be fast but also easy to understand and improve. -The HashMap might be a little memory efficient especially right after resizes and doesn't yet provide a shrink method. The HashMap -is not yet production tested but fully working. - -* Example - -#include -#include -#include "cheesemap.h" - -// Convenience macro for array length -#define countof(arr) (sizeof(arr) / sizeof(*(arr))) - -// Simple hash function for string keys -uint64_t hash_string(const uint8_t* key, uint8_t* user) { - (void)user; - const char* str = *(const char**)key; - uint64_t hash = 5381; - int c; - while ((c = *str++)) - hash = ((hash << 5) + hash) + c; // hash * 33 + c - return hash; -} - -// Compare function for string keys -bool compare_string(const uint8_t* key1, const uint8_t* key2, uint8_t* user) { - (void)user; - return strcmp(*(const char**)key1, *(const char**)key2) == 0; -} - -int main(void) { - // Create a map: string -> int (word frequency counter) - struct cheesemap map; - cm_new_(&map, const char*, int, NULL, hash_string, compare_string); - - // Count word frequencies - const char* words[] = {"hello", "world", "hello", "cheesemap", "world", "hello"}; - for (size_t i = 0; i < countof(words); i++) { - int* count; - if (cm_lookup_(&map, words[i], &count)) { - (*count)++; // Word exists, increment - } else { - int initial = 1; - cm_insert_(&map, words[i], initial); - } - } - - // Iterate and print all word counts - printf("Word frequencies:\n"); - struct cheesemap_iter iter; - cm_iter_init(&iter, &map); - const char** word; - int* count; - while (cm_iter_next(&iter, &map, (uint8_t**)&word, (uint8_t**)&count)) { - printf(" %s: %d\n", *word, *count); - } - - // Lookup a specific word - const char* search = "hello"; - if (cm_lookup_(&map, search, &count)) { - printf("\n'%s' appears %d times\n", search, *count); - } - - // Remove a word - const char* remove = "world"; - cm_remove_(&map, remove, NULL); - printf("Removed '%s'\n", remove); - - // Verify removal - if (!cm_lookup_(&map, remove, &count)) { - printf("'%s' no longer in map\n", remove); - } - - cm_drop(&map); - return 0; -} -``` -- cgit v1.2.3