module Numeric.LAPACK.FFI.Enumeration where

import Foreign.C.Types (CChar)
import Foreign.C.String (castCharToCChar)


($$) :: (CChar -> a) -> Char -> a
cons $$ c = cons $ castCharToCChar c

newtype Transposed = Transposed CChar

transposed, nonTransposed :: Transposed
transposed = Transposed $$ 'T'
nonTransposed = Transposed $$ 'N'


newtype UpperLower = UpperLower CChar

upper, lower :: UpperLower
upper = UpperLower $$ 'U'
lower = UpperLower $$ 'L'


newtype Side = Side CChar

left, right, bothSides :: Side
left = Side $$ 'L'
right = Side $$ 'R'
bothSides = Side $$ 'B'


newtype Diagonal = Diagonal CChar

unitDiagonal, nonUnitDiagonal :: Diagonal
unitDiagonal = Diagonal $$ 'U'
nonUnitDiagonal = Diagonal $$ 'N'