packages feed

c2hs-0.16.0: tests/system/Enums.chs

-- -*-haskell-*-
import Monad
import C2HS

{#context prefix="enums"#}

{#enum colour as Colour {upcaseFirstLetter}#}

{#enum weird as Weird {underscoreToCase}#}

{#enum side as Side {underscoreToCase}#}

{#enum other_side as OtherSide {}#}

{#enum enum_net_type as NetType {underscoreToCase}#}

{#enum enums_enums as Enums {underscoreToCase, ENUMS_TWO as Two}#}

colourOfSide :: Side -> Colour
colourOfSide  = 
  cToEnum . {#call fun colourOfSide as colourOfSidePrim#} . cFromEnum

#c
enum ThisThat {
  This = THIS,
  That = THAT
};
#endc
{#enum ThisThat {}#}


main :: IO () 
main  = do
	  const (return ()) discard
	  unless (1 == fromEnum One) $
	    putStrLn "1 /= One!!!"
	  putStrLn "Did it!"
	where
	  -- is not executed, only type checked
	  discard = {#get NET.nettype#} undefined :: IO CInt