Tables2

module Tables2(DTable(..), dtable0, lookupDe, listDe, updateDe) where
import Utils(pair)
import Direction() -- instances
import Path(here,Path(..))
import Sockets(Descriptor)
import Table

type DTable = Table (Descriptor, Path)

updateDe :: Path -> [Descriptor] -> DTable -> DTable
updateDe path' ds dtable =
    table (map (`pair` path') ds ++
           filter ((/= path') . snd) (listTable dtable))

listDe :: DTable -> [Descriptor]
listDe dtable = map fst (listTable dtable)

lookupDe :: DTable -> Descriptor -> Path
lookupDe dtable de =
    tableLookup (error ("Descriptor without path: "++show de)) snd (de, here) dtable

dtable0 :: DTable
dtable0 = table []