{-# LANGUAGE AllowAmbiguousTypes #-} module Telescope.Fits.BitPix where import GHC.Int import Prelude hiding (lookup) data BitPix = BPInt8 | BPInt16 | BPInt32 | BPInt64 | BPFloat | BPDouble deriving (Int -> BitPix -> ShowS [BitPix] -> ShowS BitPix -> String (Int -> BitPix -> ShowS) -> (BitPix -> String) -> ([BitPix] -> ShowS) -> Show BitPix forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> BitPix -> ShowS showsPrec :: Int -> BitPix -> ShowS $cshow :: BitPix -> String show :: BitPix -> String $cshowList :: [BitPix] -> ShowS showList :: [BitPix] -> ShowS Show, BitPix -> BitPix -> Bool (BitPix -> BitPix -> Bool) -> (BitPix -> BitPix -> Bool) -> Eq BitPix forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: BitPix -> BitPix -> Bool == :: BitPix -> BitPix -> Bool $c/= :: BitPix -> BitPix -> Bool /= :: BitPix -> BitPix -> Bool Eq) bitPixBits :: BitPix -> Int bitPixBits :: BitPix -> Int bitPixBits BitPix bp = BitPix -> Int bitPixBytes BitPix bp Int -> Int -> Int forall a. Num a => a -> a -> a * Int 8 bitPixBytes :: BitPix -> Int bitPixBytes :: BitPix -> Int bitPixBytes BitPix bp = case BitPix bp of BitPix BPInt8 -> Int 1 BitPix BPInt16 -> Int 2 BitPix BPInt32 -> Int 4 BitPix BPInt64 -> Int 8 BitPix BPFloat -> Int 4 BitPix BPDouble -> Int 8 class IsBitPix a where bitPix :: BitPix instance IsBitPix Int8 where bitPix :: BitPix bitPix = BitPix BPInt8 instance IsBitPix Int16 where bitPix :: BitPix bitPix = BitPix BPInt16 instance IsBitPix Int32 where bitPix :: BitPix bitPix = BitPix BPInt32 instance IsBitPix Int64 where bitPix :: BitPix bitPix = BitPix BPInt64 instance IsBitPix Float where bitPix :: BitPix bitPix = BitPix BPFloat instance IsBitPix Double where bitPix :: BitPix bitPix = BitPix BPDouble