Switch the package id types to use FastString (rather than String)
[ghc.git] / compiler / basicTypes / Module.lhs
index 8f21d66..d403c87 100644 (file)
@@ -84,6 +84,7 @@ import FastString
 import Binary
 import Util
 import {-# SOURCE #-} Packages
+import GHC.PackageDb (BinaryStringRep(..))
 
 import Data.Data
 import Data.Map (Map)
@@ -181,6 +182,10 @@ instance Binary ModuleName where
   put_ bh (ModuleName fs) = put_ bh fs
   get bh = do fs <- get bh; return (ModuleName fs)
 
+instance BinaryStringRep ModuleName where
+  fromStringRep = mkModuleNameFS . mkFastStringByteString
+  toStringRep   = fastStringToByteString . moduleNameFS
+
 instance Data ModuleName where
   -- don't traverse?
   toConstr _   = abstractConstr "ModuleName"
@@ -332,6 +337,10 @@ instance Binary PackageKey where
   put_ bh pid = put_ bh (packageKeyFS pid)
   get bh = do { fs <- get bh; return (fsToPackageKey fs) }
 
+instance BinaryStringRep PackageKey where
+  fromStringRep = fsToPackageKey . mkFastStringByteString
+  toStringRep   = fastStringToByteString . packageKeyFS
+
 fsToPackageKey :: FastString -> PackageKey
 fsToPackageKey = PId