/******************************************************************************/ /* HashSet for C99, by LoRd_MuldeR */ /* This work has been released under the CC0 1.0 Universal license! */ /******************************************************************************/ #include #include #include #include "input.h" /* ========================================================================= */ /* MAIN */ /* ========================================================================= */ int main(void) { hash_set64_t *hash_set; uint64_t value; size_t cursor = 0U, offset = 0U; /* print logo */ printf("LibHashSet Example v%" PRIu16 ".%" PRIu16 ".%" PRIu16 " [%s]\n\n", HASHSET_VERSION_MAJOR, HASHSET_VERSION_MINOR, HASHSET_VERSION_PATCH, HASHSET_BUILD_DATE); /* create new hash set instance */ hash_set = hash_set_create64(0U, -1.0); if (!hash_set) { fputs("Allocation has failed!\n", stderr); return EXIT_FAILURE; } /* add a number of items to the hash set, the set will grow as needed */ puts("Inserting items into hash set, please wait..."); while (have_more_items(offset)) { const errno_t error = hash_set_insert64(hash_set, get_next_item(offset++)); if (error) { fprintf(stderr, "Insert operation failed! (error: %d)\n", error); return EXIT_FAILURE; } } puts("Done.\n"); /* print total number of items in the hash set*/ printf("Total number of items in the set: %zu\n\n", hash_set_size64(hash_set)); /* print all items in the set */ while (hash_set_iterate64(hash_set, &cursor, &value) == 0) { printf("Item: 0x%016" PRIX64 "\n", value); } /* destroy the hash set, when it is no longer needed! */ hash_set_destroy64(hash_set); return EXIT_SUCCESS; }