22 lines
650 B
Haskell
22 lines
650 B
Haskell
module Main (main) where
|
|
|
|
import Foreign
|
|
import Foreign.C
|
|
import GarnetRs
|
|
import GarnetRs.Safe
|
|
import HsBindgen.Runtime.Marshal
|
|
import HsBindgen.Runtime.PtrConst
|
|
|
|
main :: IO ()
|
|
main = do
|
|
withCString "Haskell" $ hello . unsafeFromPtr
|
|
alloca \ptr -> do
|
|
writeRaw ptr T{a = CBool 1, b = 42}
|
|
hello_struct (unsafeFromPtr ptr)
|
|
alloca \ptr -> do
|
|
writeRaw ptr (Shape (Shape_Tag 0) (set_shape_body_circle (Circle_Body 3.14)))
|
|
hello_shape (unsafeFromPtr ptr)
|
|
alloca \ptr -> do
|
|
writeRaw ptr (Shape (Shape_Tag 1) (set_shape_body_rectangle (Rectangle_Body 10.0 5.0)))
|
|
hello_shape (unsafeFromPtr ptr)
|