-- | 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 {-# SOURCE #-} qualified GI.WebKitWebProcessExtension.Objects.WebProcessExtension as WebKitWebProcessExtension.WebProcessExtension

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