shithub: purgatorio

ref: 00c219c7d9c2b9f60c2db0e1ba7289b2301209a7
dir: /appl/lib/dict.b/

View raw version
implement Dictionary;

#
# This is intended to be a simple dictionary of string tuples
# It is not intended for large data sets or efficient deletion of keys
#

include "dict.m";

Dict.add( d: self ref Dict, e: (string, string) )
{
	if (d.entries == nil) 
		d.entries =  e::nil;
	else 
		d.entries = e::d.entries;
}

Dict.delete( d: self ref Dict, k: string )
{
	key : string;
	newlist : list of (string, string);
	temp := d.entries;

	while (temp != nil) {
		(key,nil) = hd temp;
		if (key != k)
			newlist = (hd temp)::newlist;
		temp = tl temp;
	}
	d.entries = newlist;
}

Dict.lookup( d: self ref Dict, k: string ) :string
{
	key, value :string;
	temp := d.entries;
	while (temp != nil) {
		(key,value) = hd temp;
		if (key == k)
			return value;
		temp = tl temp;
	}
	return nil;
}

Dict.keys( d: self ref Dict ) :list of string
{
	key: string;
	keylist : list of string;
	temp := d.entries;
	while (temp != nil) {
		(key, nil) = hd temp;
		keylist = key::keylist;
		temp = tl temp;
	}
	return keylist;
}