-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.WebKitWebProcessExtension.Callbacks
    ( 

 -- * Signals


-- ** WebProcessExtensionInitializeFunction #signal:WebProcessExtensionInitializeFunction#

    C_WebProcessExtensionInitializeFunction ,
    WebProcessExtensionInitializeFunction   ,
    dynamic_WebProcessExtensionInitializeFunction,
    genClosure_WebProcessExtensionInitializeFunction,
    mk_WebProcessExtensionInitializeFunction,
    noWebProcessExtensionInitializeFunction ,
    wrap_WebProcessExtensionInitializeFunction,


-- ** WebProcessExtensionInitializeWithUserDataFunction #signal:WebProcessExtensionInitializeWithUserDataFunction#

    C_WebProcessExtensionInitializeWithUserDataFunction,
    WebProcessExtensionInitializeWithUserDataFunction,
    dynamic_WebProcessExtensionInitializeWithUserDataFunction,
    genClosure_WebProcessExtensionInitializeWithUserDataFunction,
    mk_WebProcessExtensionInitializeWithUserDataFunction,
    noWebProcessExtensionInitializeWithUserDataFunction,
    wrap_WebProcessExtensionInitializeWithUserDataFunction,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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 qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Objects.Event as Gdk.Event
import qualified GI.Gio.Callbacks as Gio.Callbacks
import qualified GI.Gio.Interfaces.Action as Gio.Action
import qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import qualified GI.Gio.Objects.UnixFDList as Gio.UnixFDList
import qualified GI.JavaScriptCore.Objects.Context as JavaScriptCore.Context
import qualified GI.JavaScriptCore.Objects.Value as JavaScriptCore.Value
import qualified GI.Soup.Structs.MessageHeaders as Soup.MessageHeaders
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Enums as WebKitWebProcessExtension.Enums
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.ContextMenu as WebKitWebProcessExtension.ContextMenu
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.ContextMenuItem as WebKitWebProcessExtension.ContextMenuItem
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.Frame as WebKitWebProcessExtension.Frame
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.ScriptWorld as WebKitWebProcessExtension.ScriptWorld
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.URIRequest as WebKitWebProcessExtension.URIRequest
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.URIResponse as WebKitWebProcessExtension.URIResponse
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.UserMessage as WebKitWebProcessExtension.UserMessage
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebEditor as WebKitWebProcessExtension.WebEditor
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebFormManager as WebKitWebProcessExtension.WebFormManager
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebHitTestResult as WebKitWebProcessExtension.WebHitTestResult
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebPage as WebKitWebProcessExtension.WebPage
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebProcessExtension as WebKitWebProcessExtension.WebProcessExtension

#else
import {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebProcessExtension as WebKitWebProcessExtension.WebProcessExtension

#endif

-- callback WebProcessExtensionInitializeWithUserDataFunction
{- Callable
  { returnType = Nothing
  , returnMayBeNull = False
  , returnTransfer = TransferNothing
  , returnDocumentation =
      Documentation { rawDocText = Nothing , sinceVersion = Nothing }
  , args =
      [ Arg
          { argCName = "extension"
          , argType =
              TInterface
                Name
                  { namespace = "WebKitWebProcessExtension"
                  , name = "WebProcessExtension"
                  }
          , direction = DirectionIn
          , mayBeNull = False
          , argDoc =
              Documentation
                { rawDocText = Just "a #WebKitWebProcessExtension"
                , sinceVersion = Nothing
                }
          , argScope = ScopeTypeInvalid
          , argClosure = -1
          , argDestroy = -1
          , argCallerAllocates = False
          , argCallbackUserData = False
          , transfer = TransferNothing
          }
      , Arg
          { argCName = "user_data"
          , argType = TVariant
          , direction = DirectionIn
          , mayBeNull = False
          , argDoc =
              Documentation
                { rawDocText = Just "a #GVariant" , sinceVersion = Nothing }
          , argScope = ScopeTypeInvalid
          , argClosure = -1
          , argDestroy = -1
          , argCallerAllocates = False
          , argCallbackUserData = False
          , transfer = TransferNothing
          }
      ]
  , skipReturn = False
  , callableThrows = False
  , callableDeprecated = Nothing
  , callableDocumentation =
      Documentation
        { rawDocText =
            Just
              "Type definition for a function that will be called to initialize\nthe web extensions when the web process starts, and which receives\nas additional argument the user data set with\nwebkit_web_context_set_web_process_extensions_initialization_user_data()."
        , sinceVersion = Just "2.40"
        }
  , callableResolvable = Nothing
  }
-}
-- | Type for the callback on the (unwrapped) C side.
type C_WebProcessExtensionInitializeWithUserDataFunction =
    Ptr WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension ->
    Ptr GVariant ->
    IO ()

-- Args: [ Arg
--           { argCName = "extension"
--           , argType =
--               TInterface
--                 Name
--                   { namespace = "WebKitWebProcessExtension"
--                   , name = "WebProcessExtension"
--                   }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitWebProcessExtension"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "user_data"
--           , argType = TVariant
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GVariant" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_WebProcessExtensionInitializeWithUserDataFunction :: FunPtr C_WebProcessExtensionInitializeWithUserDataFunction -> C_WebProcessExtensionInitializeWithUserDataFunction

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
dynamic_WebProcessExtensionInitializeWithUserDataFunction ::
    (B.CallStack.HasCallStack, MonadIO m, WebKitWebProcessExtension.WebProcessExtension.IsWebProcessExtension a) =>
    FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
    -> a
    -- ^ /@extension@/: a t'GI.WebKitWebProcessExtension.Objects.WebProcessExtension.WebProcessExtension'
    -> GVariant
    -- ^ /@userData@/: a t'GVariant'
    -> m ()
dynamic_WebProcessExtensionInitializeWithUserDataFunction :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsWebProcessExtension a) =>
FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
-> a -> GVariant -> m ()
dynamic_WebProcessExtensionInitializeWithUserDataFunction FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
__funPtr a
extension GVariant
userData = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr WebProcessExtension
extension' <- a -> IO (Ptr WebProcessExtension)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
extension
    Ptr GVariant
userData' <- GVariant -> IO (Ptr GVariant)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr GVariant
userData
    (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
-> C_WebProcessExtensionInitializeWithUserDataFunction
__dynamic_C_WebProcessExtensionInitializeWithUserDataFunction FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
__funPtr) Ptr WebProcessExtension
extension' Ptr GVariant
userData'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
extension
    GVariant -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr GVariant
userData
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

-- | Generate a function pointer callable from C code, from a `C_WebProcessExtensionInitializeWithUserDataFunction`.
foreign import ccall "wrapper"
    mk_WebProcessExtensionInitializeWithUserDataFunction :: C_WebProcessExtensionInitializeWithUserDataFunction -> IO (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction)

-- | Type definition for a function that will be called to initialize
-- the web extensions when the web process starts, and which receives
-- as additional argument the user data set with
-- @/webkit_web_context_set_web_process_extensions_initialization_user_data()/@.
-- 
-- /Since: 2.40/
type WebProcessExtensionInitializeWithUserDataFunction =
    WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension
    -- ^ /@extension@/: a t'GI.WebKitWebProcessExtension.Objects.WebProcessExtension.WebProcessExtension'
    -> GVariant
    -- ^ /@userData@/: a t'GVariant'
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `WebProcessExtensionInitializeWithUserDataFunction`@.
noWebProcessExtensionInitializeWithUserDataFunction :: Maybe WebProcessExtensionInitializeWithUserDataFunction
noWebProcessExtensionInitializeWithUserDataFunction :: Maybe WebProcessExtensionInitializeWithUserDataFunction
noWebProcessExtensionInitializeWithUserDataFunction = Maybe WebProcessExtensionInitializeWithUserDataFunction
forall a. Maybe a
Nothing

-- | Wrap the callback into a `GClosure`.
genClosure_WebProcessExtensionInitializeWithUserDataFunction :: MonadIO m => WebProcessExtensionInitializeWithUserDataFunction -> m (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
genClosure_WebProcessExtensionInitializeWithUserDataFunction :: forall (m :: * -> *).
MonadIO m =>
WebProcessExtensionInitializeWithUserDataFunction
-> m (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
genClosure_WebProcessExtensionInitializeWithUserDataFunction WebProcessExtensionInitializeWithUserDataFunction
cb = IO (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
-> m (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
 -> m (GClosure
         C_WebProcessExtensionInitializeWithUserDataFunction))
-> IO
     (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
-> m (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_WebProcessExtensionInitializeWithUserDataFunction
cb' = Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
-> WebProcessExtensionInitializeWithUserDataFunction
-> C_WebProcessExtensionInitializeWithUserDataFunction
wrap_WebProcessExtensionInitializeWithUserDataFunction Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
forall a. Maybe a
Nothing WebProcessExtensionInitializeWithUserDataFunction
cb
    C_WebProcessExtensionInitializeWithUserDataFunction
-> IO (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction)
mk_WebProcessExtensionInitializeWithUserDataFunction C_WebProcessExtensionInitializeWithUserDataFunction
cb' IO (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction)
-> (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
    -> IO
         (GClosure C_WebProcessExtensionInitializeWithUserDataFunction))
-> IO
     (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_WebProcessExtensionInitializeWithUserDataFunction
-> IO
     (GClosure C_WebProcessExtensionInitializeWithUserDataFunction)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `WebProcessExtensionInitializeWithUserDataFunction` into a `C_WebProcessExtensionInitializeWithUserDataFunction`.
wrap_WebProcessExtensionInitializeWithUserDataFunction :: 
    Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction)) ->
    WebProcessExtensionInitializeWithUserDataFunction ->
    C_WebProcessExtensionInitializeWithUserDataFunction
wrap_WebProcessExtensionInitializeWithUserDataFunction :: Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
-> WebProcessExtensionInitializeWithUserDataFunction
-> C_WebProcessExtensionInitializeWithUserDataFunction
wrap_WebProcessExtensionInitializeWithUserDataFunction Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
gi'funptrptr WebProcessExtensionInitializeWithUserDataFunction
gi'cb Ptr WebProcessExtension
extension Ptr GVariant
userData = do
    WebProcessExtension
extension' <- ((ManagedPtr WebProcessExtension -> WebProcessExtension)
-> Ptr WebProcessExtension -> IO WebProcessExtension
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr WebProcessExtension -> WebProcessExtension
WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension) Ptr WebProcessExtension
extension
    GVariant
userData' <- Ptr GVariant -> IO GVariant
B.GVariant.newGVariantFromPtr Ptr GVariant
userData
    WebProcessExtensionInitializeWithUserDataFunction
gi'cb  WebProcessExtension
extension' GVariant
userData'
    Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
-> IO ()
forall a. Maybe (Ptr (FunPtr a)) -> IO ()
maybeReleaseFunPtr Maybe
  (Ptr (FunPtr C_WebProcessExtensionInitializeWithUserDataFunction))
gi'funptrptr


-- callback WebProcessExtensionInitializeFunction
{- Callable
  { returnType = Nothing
  , returnMayBeNull = False
  , returnTransfer = TransferNothing
  , returnDocumentation =
      Documentation { rawDocText = Nothing , sinceVersion = Nothing }
  , args =
      [ Arg
          { argCName = "extension"
          , argType =
              TInterface
                Name
                  { namespace = "WebKitWebProcessExtension"
                  , name = "WebProcessExtension"
                  }
          , direction = DirectionIn
          , mayBeNull = False
          , argDoc =
              Documentation
                { rawDocText = Just "a #WebKitWebProcessExtension"
                , sinceVersion = Nothing
                }
          , argScope = ScopeTypeInvalid
          , argClosure = -1
          , argDestroy = -1
          , argCallerAllocates = False
          , argCallbackUserData = False
          , transfer = TransferNothing
          }
      ]
  , skipReturn = False
  , callableThrows = False
  , callableDeprecated = Nothing
  , callableDocumentation =
      Documentation
        { rawDocText =
            Just
              "Type definition for a function that will be called to initialize\nthe web extension when the web process starts."
        , sinceVersion = Just "2.40"
        }
  , callableResolvable = Nothing
  }
-}
-- | Type for the callback on the (unwrapped) C side.
type C_WebProcessExtensionInitializeFunction =
    Ptr WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension ->
    IO ()

-- Args: [ Arg
--           { argCName = "extension"
--           , argType =
--               TInterface
--                 Name
--                   { namespace = "WebKitWebProcessExtension"
--                   , name = "WebProcessExtension"
--                   }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitWebProcessExtension"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "dynamic" __dynamic_C_WebProcessExtensionInitializeFunction :: FunPtr C_WebProcessExtensionInitializeFunction -> C_WebProcessExtensionInitializeFunction

-- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
dynamic_WebProcessExtensionInitializeFunction ::
    (B.CallStack.HasCallStack, MonadIO m, WebKitWebProcessExtension.WebProcessExtension.IsWebProcessExtension a) =>
    FunPtr C_WebProcessExtensionInitializeFunction
    -> a
    -- ^ /@extension@/: a t'GI.WebKitWebProcessExtension.Objects.WebProcessExtension.WebProcessExtension'
    -> m ()
dynamic_WebProcessExtensionInitializeFunction :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsWebProcessExtension a) =>
FunPtr C_WebProcessExtensionInitializeFunction -> a -> m ()
dynamic_WebProcessExtensionInitializeFunction FunPtr C_WebProcessExtensionInitializeFunction
__funPtr a
extension = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr WebProcessExtension
extension' <- a -> IO (Ptr WebProcessExtension)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
extension
    (FunPtr C_WebProcessExtensionInitializeFunction
-> C_WebProcessExtensionInitializeFunction
__dynamic_C_WebProcessExtensionInitializeFunction FunPtr C_WebProcessExtensionInitializeFunction
__funPtr) Ptr WebProcessExtension
extension'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
extension
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

-- | Generate a function pointer callable from C code, from a `C_WebProcessExtensionInitializeFunction`.
foreign import ccall "wrapper"
    mk_WebProcessExtensionInitializeFunction :: C_WebProcessExtensionInitializeFunction -> IO (FunPtr C_WebProcessExtensionInitializeFunction)

-- | Type definition for a function that will be called to initialize
-- the web extension when the web process starts.
-- 
-- /Since: 2.40/
type WebProcessExtensionInitializeFunction =
    WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension
    -- ^ /@extension@/: a t'GI.WebKitWebProcessExtension.Objects.WebProcessExtension.WebProcessExtension'
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `WebProcessExtensionInitializeFunction`@.
noWebProcessExtensionInitializeFunction :: Maybe WebProcessExtensionInitializeFunction
noWebProcessExtensionInitializeFunction :: Maybe WebProcessExtensionInitializeFunction
noWebProcessExtensionInitializeFunction = Maybe WebProcessExtensionInitializeFunction
forall a. Maybe a
Nothing

-- | Wrap the callback into a `GClosure`.
genClosure_WebProcessExtensionInitializeFunction :: MonadIO m => WebProcessExtensionInitializeFunction -> m (GClosure C_WebProcessExtensionInitializeFunction)
genClosure_WebProcessExtensionInitializeFunction :: forall (m :: * -> *).
MonadIO m =>
WebProcessExtensionInitializeFunction
-> m (GClosure C_WebProcessExtensionInitializeFunction)
genClosure_WebProcessExtensionInitializeFunction WebProcessExtensionInitializeFunction
cb = IO (GClosure C_WebProcessExtensionInitializeFunction)
-> m (GClosure C_WebProcessExtensionInitializeFunction)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_WebProcessExtensionInitializeFunction)
 -> m (GClosure C_WebProcessExtensionInitializeFunction))
-> IO (GClosure C_WebProcessExtensionInitializeFunction)
-> m (GClosure C_WebProcessExtensionInitializeFunction)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_WebProcessExtensionInitializeFunction
cb' = Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
-> WebProcessExtensionInitializeFunction
-> C_WebProcessExtensionInitializeFunction
wrap_WebProcessExtensionInitializeFunction Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
forall a. Maybe a
Nothing WebProcessExtensionInitializeFunction
cb
    C_WebProcessExtensionInitializeFunction
-> IO (FunPtr C_WebProcessExtensionInitializeFunction)
mk_WebProcessExtensionInitializeFunction C_WebProcessExtensionInitializeFunction
cb' IO (FunPtr C_WebProcessExtensionInitializeFunction)
-> (FunPtr C_WebProcessExtensionInitializeFunction
    -> IO (GClosure C_WebProcessExtensionInitializeFunction))
-> IO (GClosure C_WebProcessExtensionInitializeFunction)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_WebProcessExtensionInitializeFunction
-> IO (GClosure C_WebProcessExtensionInitializeFunction)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `WebProcessExtensionInitializeFunction` into a `C_WebProcessExtensionInitializeFunction`.
wrap_WebProcessExtensionInitializeFunction :: 
    Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction)) ->
    WebProcessExtensionInitializeFunction ->
    C_WebProcessExtensionInitializeFunction
wrap_WebProcessExtensionInitializeFunction :: Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
-> WebProcessExtensionInitializeFunction
-> C_WebProcessExtensionInitializeFunction
wrap_WebProcessExtensionInitializeFunction Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
gi'funptrptr WebProcessExtensionInitializeFunction
gi'cb Ptr WebProcessExtension
extension = do
    WebProcessExtension
extension' <- ((ManagedPtr WebProcessExtension -> WebProcessExtension)
-> Ptr WebProcessExtension -> IO WebProcessExtension
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr WebProcessExtension -> WebProcessExtension
WebKitWebProcessExtension.WebProcessExtension.WebProcessExtension) Ptr WebProcessExtension
extension
    WebProcessExtensionInitializeFunction
gi'cb  WebProcessExtension
extension'
    Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
-> IO ()
forall a. Maybe (Ptr (FunPtr a)) -> IO ()
maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WebProcessExtensionInitializeFunction))
gi'funptrptr