#include "HashTable.h" #include "Types.h" #include "Vector.h" #include "String.h" #include "BumpAlloc.h" #include "BigInt.h" #include int main() { MemoryManager g = M_std_tracked(), t = M_bump(KiB(4)); String *hexes = V_new(&g, sizeof(String), 8); Result status = R_Ok; for (usize i = 7; i <= 4830; i += 69) { PRINT_NOTOK(V_pushp((Vector**)&hexes, S_printf(&t, "%x", i))); } String all = S_printf(&g, "Total: %ld\n", V_count(hexes)); for (usize i = 0; i + 4 < V_count(hexes); i += 4) { PRINT_NOTOK( S_append(&all, S_concat(&t, hexes[0+i], " ", hexes[1+i], " ", hexes[2+i], " ", hexes[3+i], "\n", NULL))); } printf("%s|%s|\n", all, S_substr(&t, all, 23, 4)); MemoryManager T = M_std(); HashTable tet = H_new(&T, 16); PRINT_NOTOK(H_insertstr(tet, "Hello", "World")); PRINT_NOTOK(H_insertf(tet, "a", 1.414)); PRINT_NOTOK(H_inserti(tet, "+", 4829)); printf("Table: %s [%p] %f %d\n", H_getstr(tet, "Hello"), H_getstr(tet, "Hello"), H_getf(tet, "a") == NULL ? 0.0 : *H_getf(tet, "a"), H_geti(tet, "+") == NULL ? 0 : *H_geti(tet, "+")); PRINT_NOTOK(H_freevals(&tet)); PRINT_NOTOK(H_free(&tet)); BigInt a = B_new(&g, -1), b = B_new(&g, 1); { uint_fast32_t *aa = a; aa[0] = -1; } B_sum(&a, b); char *astr = B_tostr(&g, a); printf("a + b = %s\n", astr); B_sub(&a, b); B_sub(&a, b); astr = B_tostr(&g, a); printf("a - b = %s\n", astr); B_lshift(&a, 30); astr = B_tostr(&g, a); printf("a << 30 = %s\n", astr); B_rshift(&a, 30); astr = B_tostr(&g, a); printf("a >> 30 = %s\n", astr); PRINT_NOTOK(g.destroy(&g)); PRINT_NOTOK(t.destroy(&t)); PRINT_NOTOK(T.destroy(&T)); return 0; }