module Data.Interned.Internal.ByteString
( InternedByteString(..)
) where
import Data.String
import Data.Interned
import Data.ByteString
import Data.ByteString.Char8 as Char8
import Data.Hashable
data InternedByteString = InternedByteString
{ internedByteStringId :: !Id
, uninternByteString :: !ByteString
}
instance IsString InternedByteString where
fromString = intern . Char8.pack
instance Eq InternedByteString where
InternedByteString i _ == InternedByteString j _ = i == j
instance Ord InternedByteString where
InternedByteString i _ `compare` InternedByteString j _ = i `compare` j
instance Show InternedByteString where
showsPrec d (InternedByteString _ b) = showsPrec d b
instance Interned InternedByteString where
type Uninterned InternedByteString = ByteString
newtype Description InternedByteString = DBS ByteString deriving (Eq,Hashable)
describe = DBS
identify = InternedByteString
cache = ibsCache
instance Uninternable InternedByteString where
unintern = uninternByteString
ibsCache :: Cache InternedByteString
ibsCache = mkCache