void kref(char *name, FILE *fp, Table_T identifiers) { char buf[512], *filename = ""; int linenum; if (name) filename = name; for (linenum = 1; fgets(buf, sizeof buf, fp) != NULL; linenum++) { int i, j; for (i = 0; (j = getword(buf, &i, first, rest)) > 0; i = j) { char *id = Str_sub(buf, j, i); const char *ln = Atom_int(linenum); Seq_T seq; Table_T files; files = Table_get(identifiers, id); if (files == NULL) { files = Table_new(0, (int (*)(const void *, const void *))strcmp, strhash); Table_put(identifiers, id, files); } else FREE(id); seq = Table_get(files, filename); if (seq == NULL) { seq = Seq_new(0); Table_put(files, Str_dup(filename, 1, 0, 1), seq); Seq_addlo(seq, (void *)ln); } else if (Seq_get(seq, 0) != ln) Seq_addlo(seq, (void *)ln); } } }
void test_Atom_free(void) { Atom_reset(); atom = Atom_string(msg); Atom_free(atom); CU_ASSERT_EQUAL(Atom_count(), 0); int i; for (i = 0; i < 10000; i++) Atom_int(i); for (i = 0; i < 5000; i += 2) { atom = Atom_int(i); Atom_free(atom); } CU_ASSERT_EQUAL(Atom_count(), 7500); }
void test_Atom_int(void) { const char *str; int i = -123456; str = Atom_int(i); CU_ASSERT_STRING_EQUAL(str, "-123456"); }
void test_Atom_map(void) { Atom_reset(); atom = Atom_string(msg); CU_ASSERT_EQUAL(Atom_count(), 1); Atom_reset(); int i; for (i = 0; i < 10; i++) Atom_int(i); CU_ASSERT_EQUAL(Atom_count(), 10); }
char *stringd(long n) { return (char *)Atom_int(n); }