content: -- |
  -- Module      : Codec.Serialise.Decoding
  -- Copyright   : (c) Duncan Coutts 2015-2017
  -- License     : BSD3-style (see LICENSE.txt)
  --
  -- Maintainer  : duncan@community.haskell.org
  -- Stability   : experimental
  -- Portability : non-portable (GHC extensions)
  --
  -- High level API for decoding values that were encoded with the
  -- "Codec.Serialise.Encoding" module, using a @'Monad'@
  -- based interface.
  --
  module Codec.Serialise.Decoding
    ( -- * Decode primitive operations
      Decoder
    , DecodeAction(..)
    , getDecodeAction
  
    -- ** Read input tokens
    , 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 ()
    , decodeByteArray     -- :: Decoder s ByteArray
    , decodeString        -- :: Decoder s Text
    , decodeStringIndef   -- :: Decoder s ()
    , decodeUtf8ByteArray -- :: Decoder s ByteArray
    , 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
  
    -- ** Specialised Read input token operations
    , decodeWordOf        -- :: Word -> Decoder s ()
    , decodeListLenOf     -- :: Int  -> Decoder s ()
  
    -- ** Branching operations
  --, decodeBytesOrIndef
  --, decodeStringOrIndef
    , decodeListLenOrIndef -- :: Decoder s (Maybe Int)
    , decodeMapLenOrIndef  -- :: Decoder s (Maybe Int)
    , decodeBreakOr        -- :: Decoder s Bool
  
    -- ** Inspecting the token type
    , peekTokenType        -- :: Decoder s TokenType
    , peekAvailable        -- :: Decoder s Int
    , TokenType(..)
  
    -- ** Special operations
  --, ignoreTerms
  --, decodeTrace
  
    -- * Sequence operations
    , decodeSequenceLenIndef -- :: ...
    , decodeSequenceLenN     -- :: ...
    ) where
  
  import           Codec.CBOR.Decoding
  
  import           Prelude         hiding (decodeFloat)
  