packages feed

ron-0.13: lib/RON/Binary/Types.hs

{-# LANGUAGE LambdaCase #-}

-- | Common types for binary format (parser and serializer)
module RON.Binary.Types where

import RON.Prelude

type Size = Word32

-- | Data block descriptor
data Desc
    = -- op descriptors
      DOpClosed
    | DOpReduced
    | DOpHeader
    | DOpQueryHeader
    | -- op key descriptors
      DUuidReducer
    | DUuidObject
    | DUuidOp
    | DUuidRef
    | -- zipped uuid descriptors
      DAtomUuidZip
    | DUuidZipObject
    | DUuidZipOp
    | DUuidZipRef
    | -- atom descriptors
      DAtomUuid
    | DAtomInteger
    | DAtomString
    | DAtomFloat
    deriving (Enum, Eq, Show)

-- | Does the descriptor refer to an op
descIsOp :: Desc -> Bool
descIsOp = \case
    DOpClosed -> True
    DOpReduced -> True
    DOpHeader -> True
    DOpQueryHeader -> True
    _ -> False