Safe Haskell | Ignore |
---|---|
Language | Haskell2010 |
GHC.Types.ForeignCall
Synopsis
- newtype ForeignCall = CCall CCallSpec
- isSafeForeignCall :: ForeignCall -> Bool
- data Safety
- playSafe :: Safety -> Bool
- playInterruptible :: Safety -> Bool
- data CExportSpec = CExportStatic SourceText CLabelString CCallConv
- type CLabelString = FastString
- isCLabelString :: CLabelString -> Bool
- pprCLabelString :: CLabelString -> SDoc
- data CCallSpec = CCallSpec CCallTarget CCallConv Safety
- data CCallTarget
- isDynamicTarget :: CCallTarget -> Bool
- data CCallConv
- defaultCCallConv :: CCallConv
- ccallConvToInt :: CCallConv -> Int
- ccallConvAttribute :: CCallConv -> SDoc
- data Header = Header SourceText FastString
- data CType = CType SourceText (Maybe Header) (SourceText, FastString)
Documentation
newtype ForeignCall Source #
Instances
Binary ForeignCall Source # | |
Defined in GHC.Types.ForeignCall Methods put_ :: BinHandle -> ForeignCall -> IO () Source # put :: BinHandle -> ForeignCall -> IO (Bin ForeignCall) Source # | |
Outputable ForeignCall Source # | |
Defined in GHC.Types.ForeignCall Methods ppr :: ForeignCall -> SDoc Source # | |
Eq ForeignCall Source # | |
Defined in GHC.Types.ForeignCall |
isSafeForeignCall :: ForeignCall -> Bool 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:
|
Instances
Data Safety Source # | |
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 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 Source # | |
Defined in GHC.Types.ForeignCall | |
Show Safety Source # | |
Binary Safety Source # | |
Outputable Safety Source # | |
Eq Safety Source # | |
type Anno Safety Source # | |
Defined in GHC.Hs.Decls |
playInterruptible :: Safety -> Bool Source #
data CExportSpec Source #
Constructors
CExportStatic SourceText CLabelString CCallConv |
Instances
Data CExportSpec Source # | |
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 Source # | |
Defined in GHC.Types.ForeignCall Methods put_ :: BinHandle -> CExportSpec -> IO () Source # put :: BinHandle -> CExportSpec -> IO (Bin CExportSpec) Source # | |
Outputable CExportSpec Source # | |
Defined in GHC.Types.ForeignCall Methods ppr :: CExportSpec -> SDoc Source # | |
type Anno CExportSpec Source # | |
Defined in GHC.Hs.Decls |
type CLabelString = FastString Source #
isCLabelString :: CLabelString -> Bool Source #
pprCLabelString :: CLabelString -> SDoc Source #
Constructors
CCallSpec CCallTarget CCallConv Safety |
data CCallTarget Source #
How to call a particular function in C-land.
Constructors
StaticTarget SourceText CLabelString (Maybe Unit) Bool | |
DynamicTarget |
Instances
Data CCallTarget Source # | |
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 Source # | |
Defined in GHC.Types.ForeignCall Methods put_ :: BinHandle -> CCallTarget -> IO () Source # put :: BinHandle -> CCallTarget -> IO (Bin CCallTarget) Source # | |
Eq CCallTarget Source # | |
Defined in GHC.Types.ForeignCall |
isDynamicTarget :: CCallTarget -> Bool Source #
Constructors
CCallConv | |
CApiConv | |
StdCallConv | |
PrimCallConv | |
JavaScriptCallConv |
Instances
Data CCallConv Source # | |
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 Source # | |
Defined in GHC.Types.ForeignCall Methods succ :: CCallConv -> CCallConv # pred :: CCallConv -> CCallConv # fromEnum :: CCallConv -> Int # enumFrom :: CCallConv -> [CCallConv] # enumFromThen :: CCallConv -> CCallConv -> [CCallConv] # enumFromTo :: CCallConv -> CCallConv -> [CCallConv] # enumFromThenTo :: CCallConv -> CCallConv -> CCallConv -> [CCallConv] # | |
Binary CCallConv Source # | |
Outputable CCallConv Source # | |
Eq CCallConv Source # | |
type Anno CCallConv Source # | |
Defined in GHC.Hs.Decls |
ccallConvToInt :: CCallConv -> Int Source #
ccallConvAttribute :: CCallConv -> SDoc Source #
Constructors
Header SourceText FastString |
Instances
Data Header Source # | |
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 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 Source # | |
Outputable Header Source # | |
Eq Header Source # | |
A C type, used in CAPI FFI calls
AnnKeywordId
:AnnOpen
'{-# CTYPE'
,AnnHeader
,AnnVal
,AnnClose
'#-}'
,
Constructors
CType SourceText (Maybe Header) (SourceText, FastString) |
Instances
Data CType Source # | |
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 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 Source # | |
Outputable CType Source # | |
Eq CType Source # | |
type Anno CType Source # | |
Defined in GHC.Hs.Decls |