ghc-lib-parser-9.8.2.20240223: The GHC API, decoupled from GHC versions
Safe HaskellNone
LanguageHaskell2010

GHC.Types.ForeignCall

Synopsis

Documentation

newtype ForeignCall #

Constructors

CCall CCallSpec 

Instances

Instances details
Binary ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: ForeignCall -> SDoc #

Eq ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

data Safety #

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 # 
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 #

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

toConstr :: Safety -> Constr #

dataTypeOf :: Safety -> DataType #

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

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

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

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

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

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

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

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

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

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

Enum Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Show Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Binary Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

put_ :: BinHandle -> Safety -> IO () #

put :: BinHandle -> Safety -> IO (Bin Safety) #

get :: BinHandle -> IO Safety #

Outputable Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Safety -> SDoc #

Eq Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

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

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

type Anno Safety # 
Instance details

Defined in GHC.Hs.Decls

data CExportSpec #

Instances

Instances details
Data CExportSpec # 
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 #

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

toConstr :: CExportSpec -> Constr #

dataTypeOf :: CExportSpec -> DataType #

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

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

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

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

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

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

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

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

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

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

Binary CExportSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CExportSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CExportSpec -> SDoc #

type Anno CExportSpec # 
Instance details

Defined in GHC.Hs.Decls

data CCallSpec #

Instances

Instances details
Binary CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallSpec -> SDoc #

Eq CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

data CCallTarget #

How to call a particular function in C-land.

Instances

Instances details
Data CCallTarget # 
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 #

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

toConstr :: CCallTarget -> Constr #

dataTypeOf :: CCallTarget -> DataType #

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

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

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

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

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

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

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

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

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

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

Binary CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

Eq CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

data CCallConv #

Instances

Instances details
Data CCallConv # 
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 #

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

toConstr :: CCallConv -> Constr #

dataTypeOf :: CCallConv -> DataType #

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

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

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

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

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

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

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

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

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

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

Enum CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Binary CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallConv -> SDoc #

Eq CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

type Anno CCallConv # 
Instance details

Defined in GHC.Hs.Decls

data Header #

Instances

Instances details
Data Header # 
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 #

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

toConstr :: Header -> Constr #

dataTypeOf :: Header -> DataType #

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

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

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

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

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

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

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

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

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

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

Binary Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

put_ :: BinHandle -> Header -> IO () #

put :: BinHandle -> Header -> IO (Bin Header) #

get :: BinHandle -> IO Header #

Outputable Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Header -> SDoc #

Eq Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

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

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

data CType #

A C type, used in CAPI FFI calls

Instances

Instances details
Data CType # 
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 #

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

toConstr :: CType -> Constr #

dataTypeOf :: CType -> DataType #

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

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

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

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

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

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

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

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

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

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

Binary CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

put_ :: BinHandle -> CType -> IO () #

put :: BinHandle -> CType -> IO (Bin CType) #

get :: BinHandle -> IO CType #

Outputable CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CType -> SDoc #

Eq CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

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

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

type Anno CType # 
Instance details

Defined in GHC.Hs.Decls