George Thomas 9ca4f615d8 Use simpler tagged union translation
Avoids the worst part of the header hack, and makes Haskell wrapper simpler.
2026-02-19 17:22:15 +00:00

156 lines
3.9 KiB
Haskell

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_HADDOCK prune #-}
module GarnetRs.Safe where
import qualified Foreign as F
import qualified Foreign.C as FC
import qualified GHC.Int
import qualified GHC.Ptr as Ptr
import qualified HsBindgen.Runtime.Internal.CAPI
import qualified HsBindgen.Runtime.Internal.HasFFIType
import qualified HsBindgen.Runtime.LibC
import qualified HsBindgen.Runtime.PtrConst
import Data.Void (Void)
import GarnetRs
import Prelude (IO)
$(HsBindgen.Runtime.Internal.CAPI.addCSource (HsBindgen.Runtime.Internal.CAPI.unlines
[ "#include <garnet_rs.h>"
, "void hs_bindgen_433ea2a26af4e593 ("
, " char const *arg1"
, ")"
, "{"
, " hello(arg1);"
, "}"
, "void hs_bindgen_51157946af5519c9 ("
, " struct T *arg1"
, ")"
, "{"
, " hello_struct(*arg1);"
, "}"
, "void hs_bindgen_7de06f1fd827ca60 ("
, " struct Shape *arg1"
, ")"
, "{"
, " hello_shape(*arg1);"
, "}"
, "int64_t hs_bindgen_1c0c71fa74c428a9 ("
, " int64_t arg1,"
, " int64_t arg2"
, ")"
, "{"
, " return add(arg1, arg2);"
, "}"
]))
-- __unique:__ @com_garnet_GarnetRs_Safe_hello@
foreign import ccall safe "hs_bindgen_433ea2a26af4e593" hs_bindgen_433ea2a26af4e593_base ::
Ptr.Ptr Void
-> IO ()
-- __unique:__ @com_garnet_GarnetRs_Safe_hello@
hs_bindgen_433ea2a26af4e593 ::
HsBindgen.Runtime.PtrConst.PtrConst FC.CChar
-> IO ()
hs_bindgen_433ea2a26af4e593 =
HsBindgen.Runtime.Internal.HasFFIType.fromFFIType hs_bindgen_433ea2a26af4e593_base
{-| __C declaration:__ @hello@
__defined at:__ @garnet_rs.h 33:6@
__exported by:__ @garnet_rs.h@
-}
hello ::
HsBindgen.Runtime.PtrConst.PtrConst FC.CChar
-- ^ __C declaration:__ @c@
-> IO ()
hello = hs_bindgen_433ea2a26af4e593
-- __unique:__ @com_garnet_GarnetRs_Safe_hello_struct@
foreign import ccall safe "hs_bindgen_51157946af5519c9" hs_bindgen_51157946af5519c9_base ::
Ptr.Ptr Void
-> IO ()
-- __unique:__ @com_garnet_GarnetRs_Safe_hello_struct@
hs_bindgen_51157946af5519c9 ::
Ptr.Ptr T
-> IO ()
hs_bindgen_51157946af5519c9 =
HsBindgen.Runtime.Internal.HasFFIType.fromFFIType hs_bindgen_51157946af5519c9_base
{-| __C declaration:__ @hello_struct@
__defined at:__ @garnet_rs.h 35:6@
__exported by:__ @garnet_rs.h@
-}
hello_struct ::
T
-- ^ __C declaration:__ @t@
-> IO ()
hello_struct =
\t0 ->
F.with t0 (\t1 -> hs_bindgen_51157946af5519c9 t1)
-- __unique:__ @com_garnet_GarnetRs_Safe_hello_shape@
foreign import ccall safe "hs_bindgen_7de06f1fd827ca60" hs_bindgen_7de06f1fd827ca60_base ::
Ptr.Ptr Void
-> IO ()
-- __unique:__ @com_garnet_GarnetRs_Safe_hello_shape@
hs_bindgen_7de06f1fd827ca60 ::
Ptr.Ptr Shape
-> IO ()
hs_bindgen_7de06f1fd827ca60 =
HsBindgen.Runtime.Internal.HasFFIType.fromFFIType hs_bindgen_7de06f1fd827ca60_base
{-| __C declaration:__ @hello_shape@
__defined at:__ @garnet_rs.h 37:6@
__exported by:__ @garnet_rs.h@
-}
hello_shape ::
Shape
-- ^ __C declaration:__ @s@
-> IO ()
hello_shape =
\s0 ->
F.with s0 (\s1 -> hs_bindgen_7de06f1fd827ca60 s1)
-- __unique:__ @com_garnet_GarnetRs_Safe_add@
foreign import ccall safe "hs_bindgen_1c0c71fa74c428a9" hs_bindgen_1c0c71fa74c428a9_base ::
GHC.Int.Int64
-> GHC.Int.Int64
-> GHC.Int.Int64
-- __unique:__ @com_garnet_GarnetRs_Safe_add@
hs_bindgen_1c0c71fa74c428a9 ::
HsBindgen.Runtime.LibC.Int64
-> HsBindgen.Runtime.LibC.Int64
-> HsBindgen.Runtime.LibC.Int64
hs_bindgen_1c0c71fa74c428a9 =
HsBindgen.Runtime.Internal.HasFFIType.fromFFIType hs_bindgen_1c0c71fa74c428a9_base
{-|
Marked @__attribute((const))__@
__C declaration:__ @add@
__defined at:__ @garnet_rs.h 39:32@
__exported by:__ @garnet_rs.h@
-}
add ::
HsBindgen.Runtime.LibC.Int64
-- ^ __C declaration:__ @a@
-> HsBindgen.Runtime.LibC.Int64
-- ^ __C declaration:__ @b@
-> HsBindgen.Runtime.LibC.Int64
add = hs_bindgen_1c0c71fa74c428a9