{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.WebKit2.Callbacks
    ( 

 -- * Signals
-- ** URISchemeRequestCallback
    URISchemeRequestCallback                ,
    URISchemeRequestCallbackC               ,
    mkURISchemeRequestCallback              ,
    noURISchemeRequestCallback              ,
    uRISchemeRequestCallbackClosure         ,
    uRISchemeRequestCallbackWrapper         ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit2.Types


-- callback URISchemeRequestCallback
uRISchemeRequestCallbackClosure :: URISchemeRequestCallback -> IO Closure
uRISchemeRequestCallbackClosure cb = newCClosure =<< mkURISchemeRequestCallback wrapped
    where wrapped = uRISchemeRequestCallbackWrapper Nothing cb

type URISchemeRequestCallbackC =
    Ptr URISchemeRequest ->
    Ptr () ->
    IO ()

foreign import ccall "wrapper"
    mkURISchemeRequestCallback :: URISchemeRequestCallbackC -> IO (FunPtr URISchemeRequestCallbackC)

type URISchemeRequestCallback =
    URISchemeRequest ->
    IO ()

noURISchemeRequestCallback :: Maybe URISchemeRequestCallback
noURISchemeRequestCallback = Nothing

uRISchemeRequestCallbackWrapper ::
    Maybe (Ptr (FunPtr (URISchemeRequestCallbackC))) ->
    URISchemeRequestCallback ->
    Ptr URISchemeRequest ->
    Ptr () ->
    IO ()
uRISchemeRequestCallbackWrapper funptrptr _cb request _ = do
    request' <- (newObject URISchemeRequest) request
    _cb  request'
    maybeReleaseFunPtr funptrptr