#define GS_IMPL
#define GS_NO_HIJACK_MAIN
#include <gs.h>
typedef struct SomeData {
int value;
} SomeData;
int32_t main(int32_t argv, char** argc) {
gs_println("Start");
{
gs_println("32-bit key:");
gs_hash_table(u32, SomeData) ht = gs_hash_table_new(u32, SomeData);
gs_hash_table_init(ht, u32, SomeData);
gs_hash_table_insert(ht, gs_hash_str("d1"), (SomeData){.value = 32});
gs_hash_table_insert(ht, gs_hash_str("d2"), (SomeData){.value = 42});
gs_hash_table_insert(ht, gs_hash_str("d3"), (SomeData){.value = 0});
gs_hash_table_insert(ht, gs_hash_str("d4"), (SomeData){.value = 1});
gs_println("\tgs_hash_table_iter_new(ht) = %u", gs_hash_table_iter_new(ht));
for (gs_hash_table_iter it = gs_hash_table_iter_new(ht);
gs_hash_table_iter_valid(ht, it);
gs_hash_table_iter_advance(ht, it)) {
SomeData someData = gs_hash_table_iter_get(ht, it);
u32 key = gs_hash_table_iter_get_key(ht, it);
gs_println("\tit = %u, key = %u, value = %d", it, key, someData.value);
}
gs_println("Manual fetch:");
gs_println("\tkey = %u, value = %d", gs_hash_str("d1"), gs_hash_table_get(ht, gs_hash_str("d1")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str("d2"), gs_hash_table_get(ht, gs_hash_str("d2")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str("d3"), gs_hash_table_get(ht, gs_hash_str("d3")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str("d4"), gs_hash_table_get(ht, gs_hash_str("d4")).value);
gs_hash_table_free(ht);
}
{
gs_println("64-bit key:");
gs_hash_table(u64, SomeData) ht = gs_hash_table_new(u64, SomeData);
gs_hash_table_init(ht, u64, SomeData);
gs_hash_table_insert(ht, gs_hash_str64("d1"), (SomeData){.value = 32});
gs_hash_table_insert(ht, gs_hash_str64("d2"), (SomeData){.value = 42});
gs_hash_table_insert(ht, gs_hash_str64("d3"), (SomeData){.value = 0});
gs_hash_table_insert(ht, gs_hash_str64("d4"), (SomeData){.value = 1});
gs_println("\tgs_hash_table_iter_new(ht) = %u", gs_hash_table_iter_new(ht));
for (gs_hash_table_iter it = gs_hash_table_iter_new(ht);
gs_hash_table_iter_valid(ht, it);
gs_hash_table_iter_advance(ht, it)) {
SomeData someData = gs_hash_table_iter_get(ht, it);
u64 key = gs_hash_table_iter_get_key(ht, it);
gs_println("\tit = %u, key = %u, value = %d", it, key, someData.value);
}
gs_println("Manual fetch:");
gs_println("\tkey = %u, value = %d", gs_hash_str64("d1"), gs_hash_table_get(ht, gs_hash_str64("d1")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str64("d2"), gs_hash_table_get(ht, gs_hash_str64("d2")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str64("d3"), gs_hash_table_get(ht, gs_hash_str64("d3")).value);
gs_println("\tkey = %u, value = %d", gs_hash_str64("d4"), gs_hash_table_get(ht, gs_hash_str64("d4")).value);
gs_hash_table_free(ht);
}
gs_println("Finish");
return 0;
}
Start
32-bit key:
gs_hash_table_iter_new(ht) = 0
it = 0, key = 5863258, value = 32
it = 3, key = 5863259, value = 42
it = 6, key = 5863260, value = 0
it = 7, key = 5863261, value = 1
Manual fetch:
key = 5863258, value = 32
key = 5863259, value = 42
key = 5863260, value = 0
key = 5863261, value = 1
64-bit key:
gs_hash_table_iter_new(ht) = 8
Manual fetch:
key = 2582833618, value = 32
key = 2582452721, value = 42
key = 2582579472, value = 0
key = 2582198583, value = 1
Finish
Start
32-bit key:
gs_hash_table_iter_new(ht) = 0
it = 0, key = 5863258, value = 32
it = 3, key = 5863259, value = 42
it = 6, key = 5863260, value = 0
it = 7, key = 5863261, value = 1
Manual fetch:
key = 5863258, value = 32
key = 5863259, value = 42
key = 5863260, value = 0
key = 5863261, value = 1
64-bit key:
gs_hash_table_iter_new(ht) = 4
it = 4, key = 0, value = 5863260
Manual fetch:
key = 2582833618, value = 32
key = 2582452721, value = 42
key = 2582579472, value = 0
key = 2582198583, value = 1
Finish
Used MSVS and release compile flags from examples. Hope this will give some info on what might be wrong.