# # $Id: cltable.icn,v 1.2 2004/09/12 15:43:49 rparlett Exp $ # package util import lang # # This class represents a caseless table() # class ClTable:Object(lookup, names) method insert(key, val) ::insert(lookup, map(key), val) ::insert(names, map(key), key) end method member(key) return ::member(lookup, map(key)) end method delete(key) ::delete(lookup, map(key)) ::delete(names, map(key)) end method get(key) return lookup[map(key)] end method sort() local l l := ::sort(lookup) every e := !l do e[1] := names[e[1]] return l end method keys() local e every e := !::sort(names) do { suspend e[2] } end method to_string(depth, seen) local string_buff, pairs, e string_buff := StringBuff() string_buff.add("ClTable<" || get_id() || ">[") pairs := sort(names) every e := !pairs do { string_buff.add(lang::to_string(e[1], depth - 1, seen)) string_buff.add("=") string_buff.add(lang::to_string(e[2], depth - 1, seen)) string_buff.add(";") } string_buff.drop_last(";") string_buff.add("]") return string_buff.get_string() end initially() lookup := table() names := table() end