module PackedString (
PackedString,
packString,
unpackPS,
) where
import Data.Binary
import Data.Generics
import Data.Monoid
import GHC.Exts
import qualified Data.ByteString as BS
import qualified Data.ByteString.UTF8 as BSU
newtype PackedString = PS BS.ByteString
deriving(Typeable,Binary,Eq,Ord,Monoid,Data)
instance Show PackedString where
showsPrec p ps r = showsPrec p (unpackPS ps) r
packString :: String -> PackedString
packString str = PS (BSU.fromString str)
unpackPS :: PackedString -> String
unpackPS (PS bs) = BSU.toString bs
instance IsString PackedString where
fromString = packString