packages feed

c-enum 0.1.1.0 → 0.1.1.2

raw patch · 2 files changed

+22/−10 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Foreign.C.Enum: enumMems :: String -> [(String, Integer)] -> DecsQ

Files

c-enum.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           c-enum-version:        0.1.1.0+version:        0.1.1.2 synopsis:       To make a type corresponding to an enum of C language description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/c-enum#readme> category:       Foreign
src/Foreign/C/Enum.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} -module Foreign.C.Enum (enum) where+module Foreign.C.Enum (enum, enumMems) where  import Language.Haskell.TH ( 	Name, mkName, newName, Lit(..), clause, cxt, normalB,@@ -27,7 +27,7 @@ 	<*> bool (pure id) ((:) <$> mkRead nt ns) br 	<*> bool (pure id) 		((:) <$> deriveStorable (mkName nt) t) bst-	<*> mkMembers nt nvs+	<*> enumMems nt nvs 	where ShowReadClasses bs br bst ds' = showReadClasses ds; ns = fst <$> nvs  {- ^@@ -35,11 +35,11 @@ Write like the following.  @-enum Foo ''Int [''Show, ''Read, ''Eq] [-	("FooError", - 1),-	("FooZero", 0),-	("FooOne", 1),-	("FooTwo", 2) ]+enum \"Foo\" ''Int [''Show, ''Read, ''Eq] [+	(\"FooError\", - 1),+	(\"FooZero\", 0),+	(\"FooOne\", 1),+	(\"FooTwo\", 2) ] @  Then you get like the following.@@ -103,8 +103,20 @@ 			(conT t)]) 	[derivClause Nothing $ conT <$> ds] -mkMembers :: String -> [(String, Integer)] -> DecsQ-mkMembers t nvs = concat <$> uncurry (mkMember (mkName t)) `mapM` nvs+enumMems :: String -> [(String, Integer)] -> DecsQ+enumMems t nvs = concat <$> uncurry (mkMember (mkName t)) `mapM` nvs++{- ^++You can define enum members separately.++@+enumMems \"Foo\" [+	(\"FooThree\", 3),+	(\"FooFour\", 4) ]+@++-}  mkMember :: Name -> String -> Integer -> DecsQ mkMember t n v = sequence [