void Table::Insert (void* k, void* v) { register TableEntry* e; register TableEntry** a; e = new TableEntry; e->key = k; e->value = v; a = ProbeAddr(k); e->chain = *a; *a = e; }
void NameTable::Insert (char *k, long v) { register NameTableEntry *e; register NameTableEntry **a; e = new NameTableEntry; e->key = strdup (k); e->value = v; a = ProbeAddr (k); e->next = *a; *a = e; }
void Table::Remove (void* k) { register TableEntry* e, * prev; TableEntry** a; a = ProbeAddr(k); e = *a; if (e != nil) { if (e->key == k) { *a = e->chain; delete e; } else { do { prev = e; e = e->chain; } while (e != nil && e->key != k); if (e != nil) { prev->chain = e->chain; delete e; } } } }