{-# LANGUAGE DeriveGeneric #-}
-- |
-- Module       : Data.Text.Encoding.Base64.Error
-- Copyright    : (c) 2019-2023 Emily Pillmore
-- License      : BSD-style
--
-- Maintainer   : Emily Pillmore <emilypi@cohomolo.gy>
-- Stability    : stable
-- Portability  : non-portable
--
-- This module contains the error types raised (not as exceptions!)
-- in the decoding process.
--
module Data.Text.Encoding.Base64.Error
( Base64Error(..)
) where


import Control.DeepSeq (NFData(..))
import Control.Exception (Exception(..))

import Data.Text (Text)

import GHC.Generics

-- | This data type represents the type of decoding errors of
-- various kinds as they pertain to decoding 'Text' values.
-- Namely, to distinguish between decoding errors from opaque
-- unicode exceptions caught in the unicode decoding process.
--
data Base64Error e
  = DecodeError !Text
    -- ^ The error associated with decoding failure
    -- as a result of the Base64 decoding process
  | ConversionError !e
    -- ^ The error associated with the decoding failure
    -- as a result of the conversion process
  deriving
    ( Base64Error e -> Base64Error e -> Bool
(Base64Error e -> Base64Error e -> Bool)
-> (Base64Error e -> Base64Error e -> Bool) -> Eq (Base64Error e)
forall e. Eq e => Base64Error e -> Base64Error e -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall e. Eq e => Base64Error e -> Base64Error e -> Bool
== :: Base64Error e -> Base64Error e -> Bool
$c/= :: forall e. Eq e => Base64Error e -> Base64Error e -> Bool
/= :: Base64Error e -> Base64Error e -> Bool
Eq, Int -> Base64Error e -> ShowS
[Base64Error e] -> ShowS
Base64Error e -> String
(Int -> Base64Error e -> ShowS)
-> (Base64Error e -> String)
-> ([Base64Error e] -> ShowS)
-> Show (Base64Error e)
forall e. Show e => Int -> Base64Error e -> ShowS
forall e. Show e => [Base64Error e] -> ShowS
forall e. Show e => Base64Error e -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall e. Show e => Int -> Base64Error e -> ShowS
showsPrec :: Int -> Base64Error e -> ShowS
$cshow :: forall e. Show e => Base64Error e -> String
show :: Base64Error e -> String
$cshowList :: forall e. Show e => [Base64Error e] -> ShowS
showList :: [Base64Error e] -> ShowS
Show
    , (forall x. Base64Error e -> Rep (Base64Error e) x)
-> (forall x. Rep (Base64Error e) x -> Base64Error e)
-> Generic (Base64Error e)
forall x. Rep (Base64Error e) x -> Base64Error e
forall x. Base64Error e -> Rep (Base64Error e) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall e x. Rep (Base64Error e) x -> Base64Error e
forall e x. Base64Error e -> Rep (Base64Error e) x
$cfrom :: forall e x. Base64Error e -> Rep (Base64Error e) x
from :: forall x. Base64Error e -> Rep (Base64Error e) x
$cto :: forall e x. Rep (Base64Error e) x -> Base64Error e
to :: forall x. Rep (Base64Error e) x -> Base64Error e
Generic
      -- ^ @since 4.2.2
    )

-- |
--
-- @since 4.2.2
--
instance Exception e => Exception (Base64Error e)


-- |
--
-- @since 4.2.2
--
instance NFData e => NFData (Base64Error e)