ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /appl/lib/dict.b/
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;
}