GHC.Types.ForeignStubs

ghc-9.10.0.20240426: The GHC API

Safe Haskell | None
Language | GHC2021

GHC.Types.ForeignStubs

Description

Foreign export stubs

Synopsis

- data ForeignStubs
  - = NoStubs
  - | ForeignStubs CHeader CStub
- newtype CHeader = CHeader {
  - getCHeader :: SDoc
  }
- data CStub = CStub {
  - getCStub :: SDoc
  - getInitializers :: [CLabel]
  - getFinalizers :: [CLabel]
  }
- initializerCStub :: Platform -> CLabel -> SDoc -> SDoc -> CStub
- finalizerCStub :: Platform -> CLabel -> SDoc -> SDoc -> CStub
- appendStubC :: ForeignStubs -> CStub -> ForeignStubs

# Documentation

data ForeignStubs Source #

Foreign export stubs

Constructors

NoStubs | We don't have any stubs
ForeignStubs CHeader CStub | There are some stubs. Parameters: 1) Header file prototypes for "foreign exported" functions 2) C stubs to use when calling "foreign exported" functions

newtype CHeader Source #

Constructors

CHeader |
Fields getCHeader :: SDoc

#### Instances

Instances details

Monoid CHeader Source # |
Instance details Defined in GHC.Types.ForeignStubs Methods mempty :: CHeader # mappend :: CHeader -> CHeader -> CHeader # mconcat :: [CHeader] -> CHeader #
Semigroup CHeader Source # |
Instance details Defined in GHC.Types.ForeignStubs Methods (<>) :: CHeader -> CHeader -> CHeader # sconcat :: NonEmpty CHeader -> CHeader # stimes :: Integral b => b -> CHeader -> CHeader #

data CStub Source #

Constructors

CStub |
Fields getCStub :: SDoc getInitializers :: [CLabel] Initializers to be run at startup See Note [Initializers and finalizers in Cmm] in GHC.Cmm.InitFini. getFinalizers :: [CLabel] Finalizers to be run at shutdown

#### Instances

Instances details

Monoid CStub Source # |
Instance details Defined in GHC.Types.ForeignStubs Methods mempty :: CStub # mappend :: CStub -> CStub -> CStub # mconcat :: [CStub] -> CStub #
Semigroup CStub Source # |
Instance details Defined in GHC.Types.ForeignStubs Methods (<>) :: CStub -> CStub -> CStub # sconcat :: NonEmpty CStub -> CStub # stimes :: Integral b => b -> CStub -> CStub #

initializerCStub :: Platform -> CLabel -> SDoc -> SDoc -> CStub Source #

`initializerCStub fn_nm decls body` is a `CStub` containing C initializer function (e.g. an entry of the `.init_array` section) named `fn_nm` with the given body and the given set of declarations.

finalizerCStub :: Platform -> CLabel -> SDoc -> SDoc -> CStub Source #

`finalizerCStub fn_nm decls body` is a `CStub` containing C finalizer function (e.g. an entry of the `.fini_array` section) named `fn_nm` with the given body and the given set of declarations.

appendStubC :: ForeignStubs -> CStub -> ForeignStubs Source #