{-# LANGUAGE TypeFamilies, TemplateHaskell, UndecidableInstances #-} module Data.TrieMap.Representation (Repr(..)) where import Data.TrieMap.Sized import Data.TrieMap.TrieKey import Data.TrieMap.Class import Data.TrieMap.Rep import Data.TrieMap.Rep.Instances () import Data.TrieMap.Representation.TH import Data.Complex import Data.Tree import Data.Ratio import Foreign.C.Types instance (TKey k, Repr a) => Repr (TMap k a) where type Rep (TMap k a) = [(Rep k, Rep a)] toRep (TMap m) = foldrWithKeyM (\ k (Elem a) xs -> (k, toRep a):xs) m [] fromRep xs = TMap (fromDistAscListM [(k, Elem (fromRep a)) | (k, a) <- xs]) genOrdRepr ''Float genOrdRepr ''Double genRepr ''Bool genRepr ''Tree genRepr ''Ratio genRepr ''Maybe genRepr ''Complex genRepr ''CInt genRepr ''CChar genRepr ''CSChar genRepr ''CUChar genRepr ''CShort genRepr ''CUShort genRepr ''CUInt genRepr ''CLong genRepr ''CULong genRepr ''CLLong genRepr ''CULLong genRepr ''CClock genRepr ''CTime genRepr ''CFloat genRepr ''CDouble