-- This Source Code Form is subject to the terms of the Mozilla Public
-- License, v. 2.0. If a copy of the MPL was not distributed with this
-- file, You can obtain one at http://mozilla.org/MPL/2.0/.

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Data.ByteString.Conversion.Internal where

import Control.Applicative
import Data.Bits (Bits)
import Text.Printf (PrintfArg)

-- | Newtype wrapper to parse and produce integral numbers in
-- hexadecimal format
newtype Hex a = Hex { fromHex :: a }
    deriving ( Eq
             , Ord
             , Num
             , Read
             , Show
             , Bounded
             , Integral
             , Bits
             , PrintfArg
             , Enum
             , Real
             )

-- | Newtype wrapper to parse and produce a comma separated list
-- of values.
newtype List a = List { fromList :: [a] }
    deriving ( Eq
             , Show
             , Functor
             , Applicative
             , Monad
             )