{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.WebKit2.Callbacks ( -- * Signals -- ** URISchemeRequestCallback #signal:URISchemeRequestCallback# C_URISchemeRequestCallback , URISchemeRequestCallback , URISchemeRequestCallback_WithClosures , drop_closures_URISchemeRequestCallback , dynamic_URISchemeRequestCallback , genClosure_URISchemeRequestCallback , mk_URISchemeRequestCallback , noURISchemeRequestCallback , noURISchemeRequestCallback_WithClosures , wrap_URISchemeRequestCallback , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import {-# SOURCE #-} qualified GI.WebKit2.Objects.URISchemeRequest as WebKit2.URISchemeRequest -- callback URISchemeRequestCallback -- -> Callable {returnType = Nothing, returnMayBeNull = False, returnTransfer = TransferNothing, returnDocumentation = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, args = [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #WebKitURISchemeRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to the callback", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}], skipReturn = False, callableThrows = False, callableDeprecated = Nothing, callableDocumentation = Documentation {rawDocText = Just "Type definition for a function that will be called back when an URI request is\nmade for a user registered URI scheme.", sinceVersion = Nothing}} -- | Type for the callback on the (unwrapped) C side. type C_URISchemeRequestCallback = Ptr WebKit2.URISchemeRequest.URISchemeRequest -> Ptr () -> IO () -- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #WebKitURISchemeRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to the callback", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = 1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "dynamic" __dynamic_C_URISchemeRequestCallback :: FunPtr C_URISchemeRequestCallback -> C_URISchemeRequestCallback -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell. dynamic_URISchemeRequestCallback :: (B.CallStack.HasCallStack, MonadIO m, WebKit2.URISchemeRequest.IsURISchemeRequest a) => FunPtr C_URISchemeRequestCallback -> a {- ^ /@request@/: the 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -} -> Ptr () {- ^ /@userData@/: user data passed to the callback -} -> m () dynamic_URISchemeRequestCallback __funPtr request userData = liftIO $ do request' <- unsafeManagedPtrCastPtr request (__dynamic_C_URISchemeRequestCallback __funPtr) request' userData touchManagedPtr request return () -- | Generate a function pointer callable from C code, from a `C_URISchemeRequestCallback`. foreign import ccall "wrapper" mk_URISchemeRequestCallback :: C_URISchemeRequestCallback -> IO (FunPtr C_URISchemeRequestCallback) {- | Type definition for a function that will be called back when an URI request is made for a user registered URI scheme. -} type URISchemeRequestCallback = WebKit2.URISchemeRequest.URISchemeRequest {- ^ /@request@/: the 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `URISchemeRequestCallback`@. noURISchemeRequestCallback :: Maybe URISchemeRequestCallback noURISchemeRequestCallback = Nothing {- | Type definition for a function that will be called back when an URI request is made for a user registered URI scheme. -} type URISchemeRequestCallback_WithClosures = WebKit2.URISchemeRequest.URISchemeRequest {- ^ /@request@/: the 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -} -> Ptr () {- ^ /@userData@/: user data passed to the callback -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `URISchemeRequestCallback_WithClosures`@. noURISchemeRequestCallback_WithClosures :: Maybe URISchemeRequestCallback_WithClosures noURISchemeRequestCallback_WithClosures = Nothing -- | A simple wrapper that ignores the closure arguments. drop_closures_URISchemeRequestCallback :: URISchemeRequestCallback -> URISchemeRequestCallback_WithClosures drop_closures_URISchemeRequestCallback _f request _ = _f request -- | Wrap the callback into a `GClosure`. genClosure_URISchemeRequestCallback :: MonadIO m => URISchemeRequestCallback -> m (GClosure C_URISchemeRequestCallback) genClosure_URISchemeRequestCallback cb = liftIO $ do let cb' = drop_closures_URISchemeRequestCallback cb let cb'' = wrap_URISchemeRequestCallback Nothing cb' mk_URISchemeRequestCallback cb'' >>= B.GClosure.newGClosure -- | Wrap a `URISchemeRequestCallback` into a `C_URISchemeRequestCallback`. wrap_URISchemeRequestCallback :: Maybe (Ptr (FunPtr C_URISchemeRequestCallback)) -> URISchemeRequestCallback_WithClosures -> C_URISchemeRequestCallback wrap_URISchemeRequestCallback funptrptr _cb request userData = do request' <- (newObject WebKit2.URISchemeRequest.URISchemeRequest) request _cb request' userData maybeReleaseFunPtr funptrptr