-- | Maps of places
module PlaceMap
( PlaceMap
, fromList
, toList
, empty
, lookup
, insert
, delete
) where
import Place
import qualified Data.IntMap as M
import Prelude hiding (lookup)
-------------
-- | Map of places.
type PlaceMap = M.IntMap
fromList :: [(Place, a)] -> PlaceMap a
fromList = M.fromList . map (\(p, a) -> (hashPlace p, a))
toList :: PlaceMap a -> [(Place, a)]
toList = map (\(p, a)-> (unHashPlace p, a)) . M.toList
empty :: PlaceMap a
empty = M.empty
lookup :: Place -> PlaceMap a -> Maybe a
lookup p m = M.lookup (hashPlace p) m
insert :: Place -> a -> PlaceMap a -> PlaceMap a
insert p a m = M.insert (hashPlace p) a m
delete :: Place -> PlaceMap a -> PlaceMap a
delete p m = M.delete (hashPlace p) m