ghc-9.4.0.20220721: The GHC API
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHC.Types.ForeignCall

Synopsis

Documentation

newtype ForeignCall Source #

Constructors

CCall CCallSpec 

Instances

Instances details
Binary ForeignCall Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable ForeignCall Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: ForeignCall -> SDoc Source #

Eq ForeignCall Source # 
Instance details

Defined in GHC.Types.ForeignCall

data Safety Source #

Constructors

PlaySafe

Might invoke Haskell GC, or do a call back, or switch threads, etc. So make sure things are tidy before the call. Additionally, in the threaded RTS we arrange for the external call to be executed by a separate OS thread, i.e., _concurrently_ to the execution of other Haskell threads.

PlayInterruptible

Like PlaySafe, but additionally the worker thread running this foreign call may be unceremoniously killed, so it must be scheduled on an unbound thread.

PlayRisky

None of the above can happen; the call will return without interacting with the runtime system at all. Specifically:

  • No GC
  • No call backs
  • No blocking
  • No precise exceptions

Instances

Instances details
Data Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Safety -> c Safety Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Safety Source #

toConstr :: Safety -> Constr Source #

dataTypeOf :: Safety -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Safety) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Safety) Source #

gmapT :: (forall b. Data b => b -> b) -> Safety -> Safety Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Safety -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Safety -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

Enum Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Show Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Binary Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Safety -> SDoc Source #

Eq Safety Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

(==) :: Safety -> Safety -> Bool #

(/=) :: Safety -> Safety -> Bool #

data CExportSpec Source #

Instances

Instances details
Data CExportSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CExportSpec -> c CExportSpec Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CExportSpec Source #

toConstr :: CExportSpec -> Constr Source #

dataTypeOf :: CExportSpec -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CExportSpec) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CExportSpec) Source #

gmapT :: (forall b. Data b => b -> b) -> CExportSpec -> CExportSpec Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CExportSpec -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CExportSpec -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CExportSpec -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CExportSpec -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

Binary CExportSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CExportSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CExportSpec -> SDoc Source #

data CCallSpec Source #

Instances

Instances details
Binary CCallSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallSpec -> SDoc Source #

Eq CCallSpec Source # 
Instance details

Defined in GHC.Types.ForeignCall

data CCallTarget Source #

How to call a particular function in C-land.

Instances

Instances details
Data CCallTarget Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CCallTarget -> c CCallTarget Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CCallTarget Source #

toConstr :: CCallTarget -> Constr Source #

dataTypeOf :: CCallTarget -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CCallTarget) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CCallTarget) Source #

gmapT :: (forall b. Data b => b -> b) -> CCallTarget -> CCallTarget Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CCallTarget -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CCallTarget -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CCallTarget -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CCallTarget -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

Binary CCallTarget Source # 
Instance details

Defined in GHC.Types.ForeignCall

Eq CCallTarget Source # 
Instance details

Defined in GHC.Types.ForeignCall

data CCallConv Source #

Instances

Instances details
Data CCallConv Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CCallConv -> c CCallConv Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CCallConv Source #

toConstr :: CCallConv -> Constr Source #

dataTypeOf :: CCallConv -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CCallConv) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CCallConv) Source #

gmapT :: (forall b. Data b => b -> b) -> CCallConv -> CCallConv Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CCallConv -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CCallConv -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CCallConv -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CCallConv -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

Enum CCallConv Source # 
Instance details

Defined in GHC.Types.ForeignCall

Binary CCallConv Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallConv Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallConv -> SDoc Source #

Eq CCallConv Source # 
Instance details

Defined in GHC.Types.ForeignCall

data Header Source #

Instances

Instances details
Data Header Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Header -> c Header Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Header Source #

toConstr :: Header -> Constr Source #

dataTypeOf :: Header -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Header) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Header) Source #

gmapT :: (forall b. Data b => b -> b) -> Header -> Header Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Header -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Header -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Header -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Header -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

Binary Header Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable Header Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Header -> SDoc Source #

Eq Header Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

(==) :: Header -> Header -> Bool #

(/=) :: Header -> Header -> Bool #

data CType Source #

A C type, used in CAPI FFI calls

Instances

Instances details
Data CType Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CType -> c CType Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CType Source #

toConstr :: CType -> Constr Source #

dataTypeOf :: CType -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CType) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CType) Source #

gmapT :: (forall b. Data b => b -> b) -> CType -> CType Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CType -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CType -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CType -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CType -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

Binary CType Source # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CType Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CType -> SDoc Source #

Eq CType Source # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

(==) :: CType -> CType -> Bool #

(/=) :: CType -> CType -> Bool #

type Anno CType Source # 
Instance details

Defined in GHC.Hs.Decls