Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
	    }
	}
    }
}