zm-0.2: src/ZM/Type/BLOB.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
-- |Binary Large OBjects (BLOBs)
module ZM.Type.BLOB (
BLOB(..),
UTF8Encoding(..),
UTF16LEEncoding(..),
FlatEncoding(..),
NoEncoding(..),
) where
import Control.DeepSeq
import Data.Flat
import Data.Model
import ZM.Type.Array
-- |A BLOB is binary value encoded according to a specified encoding (e.g. UTF8)
data BLOB encoding = BLOB {encoding::encoding,content::Bytes} deriving Generic
instance Model encoding => Model (BLOB encoding)
-- |UTF-8 Encoding
data UTF8Encoding = UTF8Encoding
deriving (Eq, Ord, Show, NFData, Generic, Flat, Model)
-- |UTF-16 Little Endian Encoding
data UTF16LEEncoding = UTF16LEEncoding
deriving (Eq, Ord, Show, NFData, Generic, Flat, Model)
-- |Flat encoding
data FlatEncoding = FlatEncoding deriving (Eq, Ord, Show, NFData, Generic, Flat, Model)
-- |Unspecified encoding
data NoEncoding = NoEncoding deriving (Eq, Ord, Show, NFData, Generic, Flat, Model)