ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Serialized

Contents

- Main Serialized data type
- Going into and out of `Serialized`
- Handy serialization functions

Synopsis

- data Serialized = Serialized TypeRep [Word8]
- toSerialized :: Typeable a => (a -> [Word8]) -> a -> Serialized
- fromSerialized :: Typeable a => ([Word8] -> a) -> Serialized -> Maybe a
- serializeWithData :: Data a => a -> [Word8]
- deserializeWithData :: Data a => [Word8] -> a

# Main Serialized data type

data Serialized #

Represents a serialized value of a particular type. Attempts can be made to deserialize it at certain types

Constructors

Serialized TypeRep [Word8] |

#### Instances

Instances details

Binary Serialized # |
Instance details Defined in GHCi.TH.Binary Methods put :: Serialized -> Put # get :: Get Serialized # putList :: [Serialized] -> Put #
NFData Serialized # |
Instance details Defined in GHC.Serialized Methods rnf :: Serialized -> () #
Binary Serialized # |
Instance details Defined in GHC.Utils.Binary.Typeable Methods put_ :: WriteBinHandle -> Serialized -> IO () # put :: WriteBinHandle -> Serialized -> IO (Bin Serialized) # get :: ReadBinHandle -> IO Serialized #
Outputable Serialized # |
Instance details Defined in GHC.Utils.Outputable Methods ppr :: Serialized -> SDoc #

# Going into and out of `Serialized`

toSerialized :: Typeable a => (a -> [Word8]) -> a -> Serialized #

Put a Typeable value that we are able to actually turn into bytes into a `Serialized` value ready for deserialization later

fromSerialized :: Typeable a => ([Word8] -> a) -> Serialized -> Maybe a #

If the `Serialized` value contains something of the given type, then use the specified deserializer to return `Just` that. Otherwise return `Nothing`.

# Handy serialization functions

serializeWithData :: Data a => a -> [Word8] #

Use a `Data` instance to implement a serialization scheme dual to that of `deserializeWithData`

deserializeWithData :: Data a => [Word8] -> a #

Use a `Data` instance to implement a deserialization scheme dual to that of `serializeWithData`