Copyright | (c) Duncan Coutts 2015-2017 |
---|---|
License | BSD3-style (see LICENSE.txt) |
Maintainer | duncan@community.haskell.org |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
High level API for decoding values that were encoded with the
Codec.CBOR.Encoding module, using a
based interface.Monad
- data Decoder s a
- data DecodeAction s a
- = ConsumeWord (Word# -> ST s (DecodeAction s a))
- | ConsumeWord8 (Word# -> ST s (DecodeAction s a))
- | ConsumeWord16 (Word# -> ST s (DecodeAction s a))
- | ConsumeWord32 (Word# -> ST s (DecodeAction s a))
- | ConsumeNegWord (Word# -> ST s (DecodeAction s a))
- | ConsumeInt (Int# -> ST s (DecodeAction s a))
- | ConsumeInt8 (Int# -> ST s (DecodeAction s a))
- | ConsumeInt16 (Int# -> ST s (DecodeAction s a))
- | ConsumeInt32 (Int# -> ST s (DecodeAction s a))
- | ConsumeListLen (Int# -> ST s (DecodeAction s a))
- | ConsumeMapLen (Int# -> ST s (DecodeAction s a))
- | ConsumeTag (Word# -> ST s (DecodeAction s a))
- | ConsumeInteger (Integer -> ST s (DecodeAction s a))
- | ConsumeFloat (Float# -> ST s (DecodeAction s a))
- | ConsumeDouble (Double# -> ST s (DecodeAction s a))
- | ConsumeBytes (ByteString -> ST s (DecodeAction s a))
- | ConsumeString (Text -> ST s (DecodeAction s a))
- | ConsumeBool (Bool -> ST s (DecodeAction s a))
- | ConsumeSimple (Word# -> ST s (DecodeAction s a))
- | ConsumeBytesIndef (ST s (DecodeAction s a))
- | ConsumeStringIndef (ST s (DecodeAction s a))
- | ConsumeListLenIndef (ST s (DecodeAction s a))
- | ConsumeMapLenIndef (ST s (DecodeAction s a))
- | ConsumeNull (ST s (DecodeAction s a))
- | ConsumeListLenOrIndef (Int# -> ST s (DecodeAction s a))
- | ConsumeMapLenOrIndef (Int# -> ST s (DecodeAction s a))
- | ConsumeBreakOr (Bool -> ST s (DecodeAction s a))
- | PeekTokenType (TokenType -> ST s (DecodeAction s a))
- | PeekAvailable (Int# -> ST s (DecodeAction s a))
- | Fail String
- | Done a
- liftST :: ST s a -> Decoder s a
- getDecodeAction :: Decoder s a -> ST s (DecodeAction s a)
- decodeWord :: Decoder s Word
- decodeWord8 :: Decoder s Word8
- decodeWord16 :: Decoder s Word16
- decodeWord32 :: Decoder s Word32
- decodeWord64 :: Decoder s Word64
- decodeNegWord :: Decoder s Word
- decodeNegWord64 :: Decoder s Word64
- decodeInt :: Decoder s Int
- decodeInt8 :: Decoder s Int8
- decodeInt16 :: Decoder s Int16
- decodeInt32 :: Decoder s Int32
- decodeInt64 :: Decoder s Int64
- decodeInteger :: Decoder s Integer
- decodeFloat :: Decoder s Float
- decodeDouble :: Decoder s Double
- decodeBytes :: Decoder s ByteString
- decodeBytesIndef :: Decoder s ()
- decodeString :: Decoder s Text
- decodeStringIndef :: Decoder s ()
- decodeListLen :: Decoder s Int
- decodeListLenIndef :: Decoder s ()
- decodeMapLen :: Decoder s Int
- decodeMapLenIndef :: Decoder s ()
- decodeTag :: Decoder s Word
- decodeTag64 :: Decoder s Word64
- decodeBool :: Decoder s Bool
- decodeNull :: Decoder s ()
- decodeSimple :: Decoder s Word8
- decodeWordOf :: Word -> Decoder s ()
- decodeListLenOf :: Int -> Decoder s ()
- decodeListLenOrIndef :: Decoder s (Maybe Int)
- decodeMapLenOrIndef :: Decoder s (Maybe Int)
- decodeBreakOr :: Decoder s Bool
- peekTokenType :: Decoder s TokenType
- peekAvailable :: Decoder s Int
- data TokenType
- = TypeUInt
- | TypeUInt64
- | TypeNInt
- | TypeNInt64
- | TypeInteger
- | TypeFloat16
- | TypeFloat32
- | TypeFloat64
- | TypeBytes
- | TypeBytesIndef
- | TypeString
- | TypeStringIndef
- | TypeListLen
- | TypeListLen64
- | TypeListLenIndef
- | TypeMapLen
- | TypeMapLen64
- | TypeMapLenIndef
- | TypeTag
- | TypeTag64
- | TypeBool
- | TypeNull
- | TypeSimple
- | TypeBreak
- | TypeInvalid
- decodeSequenceLenIndef :: (r -> a -> r) -> r -> (r -> r') -> Decoder s a -> Decoder s r'
- decodeSequenceLenN :: (r -> a -> r) -> r -> (r -> r') -> Int -> Decoder s a -> Decoder s r'
Decode primitive operations
A continuation-based decoder, used for decoding values that were
previously encoded using the Codec.CBOR.Encoding
module. As
has a Decoder
instance, you can easily
write Monad
s monadically for building your deserialisation
logic.Decoder
Since: 0.2.0.0
data DecodeAction s a Source #
An action, representing a step for a decoder to taken and a continuation to invoke with the expected value.
Since: 0.2.0.0
getDecodeAction :: Decoder s a -> ST s (DecodeAction s a) Source #
Given a
, give us the Decoder
DecodeAction
Since: 0.2.0.0
Read input tokens
decodeBytes :: Decoder s ByteString Source #
Decode a string of bytes as a
.ByteString
Since: 0.2.0.0
decodeBytesIndef :: Decoder s () Source #
Decode a token marking the beginning of an indefinite length set of bytes.
Since: 0.2.0.0
decodeString :: Decoder s Text Source #
Decode a textual string as a piece of
.Text
Since: 0.2.0.0
decodeStringIndef :: Decoder s () Source #
Decode a token marking the beginning of an indefinite length string.
Since: 0.2.0.0
decodeListLen :: Decoder s Int Source #
Decode the length of a list.
Since: 0.2.0.0
decodeListLenIndef :: Decoder s () Source #
Decode a token marking the beginning of a list of indefinite length.
Since: 0.2.0.0
decodeMapLen :: Decoder s Int Source #
Decode the length of a map.
Since: 0.2.0.0
decodeMapLenIndef :: Decoder s () Source #
Decode a token marking the beginning of a map of indefinite length.
Since: 0.2.0.0
decodeTag64 :: Decoder s Word64 Source #
Decode an arbitrary 64-bit tag and return it as a
.Word64
Since: 0.2.0.0
decodeBool :: Decoder s Bool Source #
Decode a bool.
Since: 0.2.0.0
decodeNull :: Decoder s () Source #
Decode a nullary value, and return a unit value.
Since: 0.2.0.0
decodeSimple :: Decoder s Word8 Source #
Decode a simple
CBOR value and give back a
. You
probably don't ever need to use this.Word8
Since: 0.2.0.0
Specialised Read input token operations
Attempt to decode a word with
, and ensure the word
is exactly as expected, or fail.decodeWord
Since: 0.2.0.0
decodeListLenOf :: Int -> Decoder s () Source #
Attempt to decode a list length using
, and
ensure it is exactly the specified length, or fail.decodeListLen
Since: 0.2.0.0
Branching operations
decodeBreakOr :: Decoder s Bool Source #
Inspecting the token type
peekTokenType :: Decoder s TokenType Source #
Peek at the current token we're about to decode, and return a
specifying what it is.TokenType
Since: 0.2.0.0
peekAvailable :: Decoder s Int Source #
Peek and return the length of the current buffer that we're running our decoder on.
Since: 0.2.0.0
The type of a token, which a decoder can ask for at an arbitrary time.
Since: 0.2.0.0
Special operations
Sequence operations
decodeSequenceLenIndef :: (r -> a -> r) -> r -> (r -> r') -> Decoder s a -> Decoder s r' Source #
Decode an indefinite sequence length.
Since: 0.2.0.0