static void do_varsz(TdbHdr *dbh) { int i; TestUrl *u; /* Store records. */ for (i = 0, u = urls; i < DATA_N; ++u, ++i) { unsigned long k = tdb_hash_calc(u->data, u->len); size_t copied, to_copy = u->len; TdbVRec *rec; print_bin_url(u); rec = (TdbVRec *)tdb_htrie_insert(dbh, k, u->data, &to_copy); assert((u->len && rec) || (!u->len && !rec)); copied = to_copy; while (copied != u->len) { char *p; rec = tdb_htrie_extend_rec(dbh, rec, u->len - copied); assert(rec); p = (char *)(rec + 1); memcpy(p, u->data + copied, rec->len); copied += rec->len; } } lookup_varsz_records(dbh); }
TdbRec * tdb_entry_create(TDB *db, unsigned long key, void *data, size_t *len) { TdbRec *r = tdb_htrie_insert(db->hdr, key, data, len); if (!r) TDB_ERR("Cannot create cache entry for %.*s, key=%#lx\n", (int)*len, (char *)data, key); return r; }
static void do_fixsz(TdbHdr *dbh) { int i; /* Store records. */ for (i = 0; i < DATA_N; ++i) { size_t copied = sizeof(ints[i]); TdbRec *rec __attribute__((unused)); printf("insert int %u\n", ints[i]); fflush(NULL); rec = tdb_htrie_insert(dbh, ints[i], &ints[i], &copied); assert(rec && copied == sizeof(ints[i])); } lookup_fixsz_records(dbh); }