Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 3rd Edition (Vita Nuova)

Media Vault

Software Library

Restoration Projects

Artifacts Sought

HASH(2)

NAME

hash, HashTable − hash table

SYNOPSIS

include "hash.m";
hash := load Hash Hash->PATH;
 new: fn(size:int):ref HashTable;
 HashTable: adt{
insert: fn(h:self ref HashTable, key:string, val:HashVal);
find: fn(h:self ref HashTable, key:string):ref HashVal;
delete: fn(h:self ref HashTable, key:string);
all: fn(h:self ref HashTable): list of HashNode;
};
HashVal: adt{
i: int;
r: real;
s: string;
};
HashNode: adt{
key: string;
val: ref HashVal;
};
fun1, fun2: fn(s:string, n:int):int;

DESCRIPTION

The hash module provides support for arrays that are indexed by keys of type string. 
 
The values may be any combination of int, real, or string.  ­New creates and returns a new ­HashTable with ­size slots. The hashing works best if ­size is a prime number. The ­HashVal adt contains the data values of the hash.  The ­HashNode adt contains the key/value pair for each element in the table. 

ht.insert(key, value)
Adds a new key/value pair to the table.  If an element with the same ­key already exists, it will acquire the new value.

ht.find(key)
Search the table for an element with the given ­key and return the value found; return nil if none was found. 

ht.delete(key)
Removes any element with the given ­key from the table. 

ht.all()
Returns a list of all key/value pairs stored in the table.

­Fun1 and ­fun2 provide access to two different string hashing functions.  ­Fun1 is the function used internally; ­fun2 is the same as that used in the Limbo compiler.  They each compute the hash value of ­s and return a value between 0 and n−1.

SOURCE

­/appl/lib/hash.b

BUGS

­HashVal should really be a pick. 

Plan 9  —  June 29, 2000

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026