{-# LANGUAGE DeriveDataTypeable #-}
module Data.Encoding.Exception where

import Control.Exception.Extensible
import Data.Word
import Data.Typeable
import Control.Monad.Identity

-- | This exception type is thrown whenever something went wrong during the
--   encoding-process.
data EncodingException
    = HasNoRepresentation Char	-- ^ Thrown if a specific character
				--   is not representable in an encoding.
    deriving (EncodingException -> EncodingException -> Bool
(EncodingException -> EncodingException -> Bool)
-> (EncodingException -> EncodingException -> Bool)
-> Eq EncodingException
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EncodingException -> EncodingException -> Bool
$c/= :: EncodingException -> EncodingException -> Bool
== :: EncodingException -> EncodingException -> Bool
$c== :: EncodingException -> EncodingException -> Bool
Eq,Eq EncodingException
Eq EncodingException
-> (EncodingException -> EncodingException -> Ordering)
-> (EncodingException -> EncodingException -> Bool)
-> (EncodingException -> EncodingException -> Bool)
-> (EncodingException -> EncodingException -> Bool)
-> (EncodingException -> EncodingException -> Bool)
-> (EncodingException -> EncodingException -> EncodingException)
-> (EncodingException -> EncodingException -> EncodingException)
-> Ord EncodingException
EncodingException -> EncodingException -> Bool
EncodingException -> EncodingException -> Ordering
EncodingException -> EncodingException -> EncodingException
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: EncodingException -> EncodingException -> EncodingException
$cmin :: EncodingException -> EncodingException -> EncodingException
max :: EncodingException -> EncodingException -> EncodingException
$cmax :: EncodingException -> EncodingException -> EncodingException
>= :: EncodingException -> EncodingException -> Bool
$c>= :: EncodingException -> EncodingException -> Bool
> :: EncodingException -> EncodingException -> Bool
$c> :: EncodingException -> EncodingException -> Bool
<= :: EncodingException -> EncodingException -> Bool
$c<= :: EncodingException -> EncodingException -> Bool
< :: EncodingException -> EncodingException -> Bool
$c< :: EncodingException -> EncodingException -> Bool
compare :: EncodingException -> EncodingException -> Ordering
$ccompare :: EncodingException -> EncodingException -> Ordering
Ord,Int -> EncodingException -> ShowS
[EncodingException] -> ShowS
EncodingException -> String
(Int -> EncodingException -> ShowS)
-> (EncodingException -> String)
-> ([EncodingException] -> ShowS)
-> Show EncodingException
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EncodingException] -> ShowS
$cshowList :: [EncodingException] -> ShowS
show :: EncodingException -> String
$cshow :: EncodingException -> String
showsPrec :: Int -> EncodingException -> ShowS
$cshowsPrec :: Int -> EncodingException -> ShowS
Show,ReadPrec [EncodingException]
ReadPrec EncodingException
Int -> ReadS EncodingException
ReadS [EncodingException]
(Int -> ReadS EncodingException)
-> ReadS [EncodingException]
-> ReadPrec EncodingException
-> ReadPrec [EncodingException]
-> Read EncodingException
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EncodingException]
$creadListPrec :: ReadPrec [EncodingException]
readPrec :: ReadPrec EncodingException
$creadPrec :: ReadPrec EncodingException
readList :: ReadS [EncodingException]
$creadList :: ReadS [EncodingException]
readsPrec :: Int -> ReadS EncodingException
$creadsPrec :: Int -> ReadS EncodingException
Read,Typeable)

instance Exception EncodingException

-- | This exception type is thrown whenever something went wrong during the
--   decoding-process.
data DecodingException
    = IllegalCharacter Word8	-- ^ The sequence contained an illegal
				--   byte that couldn't be decoded.
    | UnexpectedEnd		-- ^ more bytes were needed to allow a
				--   successfull decoding.
    | OutOfRange		-- ^ the decoded value was out of the unicode range
    | IllegalRepresentation [Word8]	-- ^ The character sequence encodes a
					--   character, but is illegal.
    deriving (DecodingException -> DecodingException -> Bool
(DecodingException -> DecodingException -> Bool)
-> (DecodingException -> DecodingException -> Bool)
-> Eq DecodingException
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DecodingException -> DecodingException -> Bool
$c/= :: DecodingException -> DecodingException -> Bool
== :: DecodingException -> DecodingException -> Bool
$c== :: DecodingException -> DecodingException -> Bool
Eq,Eq DecodingException
Eq DecodingException
-> (DecodingException -> DecodingException -> Ordering)
-> (DecodingException -> DecodingException -> Bool)
-> (DecodingException -> DecodingException -> Bool)
-> (DecodingException -> DecodingException -> Bool)
-> (DecodingException -> DecodingException -> Bool)
-> (DecodingException -> DecodingException -> DecodingException)
-> (DecodingException -> DecodingException -> DecodingException)
-> Ord DecodingException
DecodingException -> DecodingException -> Bool
DecodingException -> DecodingException -> Ordering
DecodingException -> DecodingException -> DecodingException
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: DecodingException -> DecodingException -> DecodingException
$cmin :: DecodingException -> DecodingException -> DecodingException
max :: DecodingException -> DecodingException -> DecodingException
$cmax :: DecodingException -> DecodingException -> DecodingException
>= :: DecodingException -> DecodingException -> Bool
$c>= :: DecodingException -> DecodingException -> Bool
> :: DecodingException -> DecodingException -> Bool
$c> :: DecodingException -> DecodingException -> Bool
<= :: DecodingException -> DecodingException -> Bool
$c<= :: DecodingException -> DecodingException -> Bool
< :: DecodingException -> DecodingException -> Bool
$c< :: DecodingException -> DecodingException -> Bool
compare :: DecodingException -> DecodingException -> Ordering
$ccompare :: DecodingException -> DecodingException -> Ordering
Ord,Int -> DecodingException -> ShowS
[DecodingException] -> ShowS
DecodingException -> String
(Int -> DecodingException -> ShowS)
-> (DecodingException -> String)
-> ([DecodingException] -> ShowS)
-> Show DecodingException
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DecodingException] -> ShowS
$cshowList :: [DecodingException] -> ShowS
show :: DecodingException -> String
$cshow :: DecodingException -> String
showsPrec :: Int -> DecodingException -> ShowS
$cshowsPrec :: Int -> DecodingException -> ShowS
Show,ReadPrec [DecodingException]
ReadPrec DecodingException
Int -> ReadS DecodingException
ReadS [DecodingException]
(Int -> ReadS DecodingException)
-> ReadS [DecodingException]
-> ReadPrec DecodingException
-> ReadPrec [DecodingException]
-> Read DecodingException
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DecodingException]
$creadListPrec :: ReadPrec [DecodingException]
readPrec :: ReadPrec DecodingException
$creadPrec :: ReadPrec DecodingException
readList :: ReadS [DecodingException]
$creadList :: ReadS [DecodingException]
readsPrec :: Int -> ReadS DecodingException
$creadsPrec :: Int -> ReadS DecodingException
Read,Typeable)

instance Exception DecodingException