-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | To make a type corresponding to an enum of C language -- -- Please see the README on GitHub at -- https://github.com/YoshikuniJujo/c-enum#readme @package c-enum @version 0.1.1.2 module Foreign.C.Enum -- | Write like the following. -- --
-- enum "Foo" ''Int [''Show, ''Read, ''Eq] [
-- ("FooError", - 1),
-- ("FooZero", 0),
-- ("FooOne", 1),
-- ("FooTwo", 2) ]
--
--
-- Then you get like the following.
--
-- -- newtype Foo = Foo Int deriving Eq -- -- pattern FooError :: Int -> Foo -- pattern FooError <- Foo (- 1) where -- FooError = Foo (- 1) -- -- pattern FooZero :: Int -> Foo -- ... -- -- -- instance Show Foo where -- showsPrec = ... -- -- instance Read Foo where -- readPrec = ... ---- -- And you can read and show like the following. -- --
-- > Foo $ - 1 -- FooError -- > FooTwo -- FooTwo -- > Foo 3 -- Foo 3 -- > read "Foo (- 1)" :: Foo -- FooError -- > read "FooOne" :: Foo -- FooOne --enum :: String -> Name -> [Name] -> [(String, Integer)] -> DecsQ -- | You can define enum members separately. -- --
-- enumMems "Foo" [
-- ("FooThree", 3),
-- ("FooFour", 4) ]
--
enumMems :: String -> [(String, Integer)] -> DecsQ
instance GHC.Show.Show Foreign.C.Enum.ShowReadClasses