{- |
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.Objects.BackForwardList
    ( 

-- * Exported types
    BackForwardList(..)                     ,
    IsBackForwardList                       ,
    toBackForwardList                       ,
    noBackForwardList                       ,


 -- * Methods
-- ** getBackItem #method:getBackItem#
    BackForwardListGetBackItemMethodInfo    ,
    backForwardListGetBackItem              ,


-- ** getBackList #method:getBackList#
    BackForwardListGetBackListMethodInfo    ,
    backForwardListGetBackList              ,


-- ** getBackListWithLimit #method:getBackListWithLimit#
    BackForwardListGetBackListWithLimitMethodInfo,
    backForwardListGetBackListWithLimit     ,


-- ** getCurrentItem #method:getCurrentItem#
    BackForwardListGetCurrentItemMethodInfo ,
    backForwardListGetCurrentItem           ,


-- ** getForwardItem #method:getForwardItem#
    BackForwardListGetForwardItemMethodInfo ,
    backForwardListGetForwardItem           ,


-- ** getForwardList #method:getForwardList#
    BackForwardListGetForwardListMethodInfo ,
    backForwardListGetForwardList           ,


-- ** getForwardListWithLimit #method:getForwardListWithLimit#
    BackForwardListGetForwardListWithLimitMethodInfo,
    backForwardListGetForwardListWithLimit  ,


-- ** getLength #method:getLength#
    BackForwardListGetLengthMethodInfo      ,
    backForwardListGetLength                ,


-- ** getNthItem #method:getNthItem#
    BackForwardListGetNthItemMethodInfo     ,
    backForwardListGetNthItem               ,




 -- * Signals
-- ** changed #signal:changed#
    BackForwardListChangedCallback          ,
    BackForwardListChangedSignalInfo        ,
    C_BackForwardListChangedCallback        ,
    afterBackForwardListChanged             ,
    genClosure_BackForwardListChanged       ,
    mk_BackForwardListChangedCallback       ,
    noBackForwardListChangedCallback        ,
    onBackForwardListChanged                ,
    wrap_BackForwardListChangedCallback     ,




    ) 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.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
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 GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit2.Objects.BackForwardListItem as WebKit2.BackForwardListItem

newtype BackForwardList = BackForwardList (ManagedPtr BackForwardList)
foreign import ccall "webkit_back_forward_list_get_type"
    c_webkit_back_forward_list_get_type :: IO GType

instance GObject BackForwardList where
    gobjectType _ = c_webkit_back_forward_list_get_type
    

class GObject o => IsBackForwardList o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError BackForwardList a) =>
    IsBackForwardList a
#endif
instance IsBackForwardList BackForwardList
instance GObject.Object.IsObject BackForwardList

toBackForwardList :: IsBackForwardList o => o -> IO BackForwardList
toBackForwardList = unsafeCastTo BackForwardList

noBackForwardList :: Maybe BackForwardList
noBackForwardList = Nothing

type family ResolveBackForwardListMethod (t :: Symbol) (o :: *) :: * where
    ResolveBackForwardListMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveBackForwardListMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveBackForwardListMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveBackForwardListMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveBackForwardListMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveBackForwardListMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveBackForwardListMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveBackForwardListMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveBackForwardListMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveBackForwardListMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveBackForwardListMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveBackForwardListMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveBackForwardListMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveBackForwardListMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveBackForwardListMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveBackForwardListMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveBackForwardListMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveBackForwardListMethod "getBackItem" o = BackForwardListGetBackItemMethodInfo
    ResolveBackForwardListMethod "getBackList" o = BackForwardListGetBackListMethodInfo
    ResolveBackForwardListMethod "getBackListWithLimit" o = BackForwardListGetBackListWithLimitMethodInfo
    ResolveBackForwardListMethod "getCurrentItem" o = BackForwardListGetCurrentItemMethodInfo
    ResolveBackForwardListMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveBackForwardListMethod "getForwardItem" o = BackForwardListGetForwardItemMethodInfo
    ResolveBackForwardListMethod "getForwardList" o = BackForwardListGetForwardListMethodInfo
    ResolveBackForwardListMethod "getForwardListWithLimit" o = BackForwardListGetForwardListWithLimitMethodInfo
    ResolveBackForwardListMethod "getLength" o = BackForwardListGetLengthMethodInfo
    ResolveBackForwardListMethod "getNthItem" o = BackForwardListGetNthItemMethodInfo
    ResolveBackForwardListMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveBackForwardListMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveBackForwardListMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveBackForwardListMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveBackForwardListMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveBackForwardListMethod t BackForwardList, O.MethodInfo info BackForwardList p) => O.IsLabelProxy t (BackForwardList -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveBackForwardListMethod t BackForwardList, O.MethodInfo info BackForwardList p) => O.IsLabel t (BackForwardList -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- signal BackForwardList::changed
type BackForwardListChangedCallback =
    Maybe WebKit2.BackForwardListItem.BackForwardListItem ->
    Ptr () ->
    IO ()

noBackForwardListChangedCallback :: Maybe BackForwardListChangedCallback
noBackForwardListChangedCallback = Nothing

type C_BackForwardListChangedCallback =
    Ptr () ->                               -- object
    Ptr WebKit2.BackForwardListItem.BackForwardListItem ->
    Ptr () ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_BackForwardListChangedCallback :: C_BackForwardListChangedCallback -> IO (FunPtr C_BackForwardListChangedCallback)

genClosure_BackForwardListChanged :: BackForwardListChangedCallback -> IO Closure
genClosure_BackForwardListChanged cb = do
    let cb' = wrap_BackForwardListChangedCallback cb
    mk_BackForwardListChangedCallback cb' >>= newCClosure


wrap_BackForwardListChangedCallback ::
    BackForwardListChangedCallback ->
    Ptr () ->
    Ptr WebKit2.BackForwardListItem.BackForwardListItem ->
    Ptr () ->
    Ptr () ->
    IO ()
wrap_BackForwardListChangedCallback _cb _ itemAdded itemsRemoved _ = do
    maybeItemAdded <-
        if itemAdded == nullPtr
        then return Nothing
        else do
            itemAdded' <- (newObject WebKit2.BackForwardListItem.BackForwardListItem) itemAdded
            return $ Just itemAdded'
    _cb  maybeItemAdded itemsRemoved


onBackForwardListChanged :: (GObject a, MonadIO m) => a -> BackForwardListChangedCallback -> m SignalHandlerId
onBackForwardListChanged obj cb = liftIO $ connectBackForwardListChanged obj cb SignalConnectBefore
afterBackForwardListChanged :: (GObject a, MonadIO m) => a -> BackForwardListChangedCallback -> m SignalHandlerId
afterBackForwardListChanged obj cb = connectBackForwardListChanged obj cb SignalConnectAfter

connectBackForwardListChanged :: (GObject a, MonadIO m) =>
                                 a -> BackForwardListChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectBackForwardListChanged obj cb after = liftIO $ do
    let cb' = wrap_BackForwardListChangedCallback cb
    cb'' <- mk_BackForwardListChangedCallback cb'
    connectSignalFunPtr obj "changed" cb'' after

instance O.HasAttributeList BackForwardList
type instance O.AttributeList BackForwardList = BackForwardListAttributeList
type BackForwardListAttributeList = ('[ ] :: [(Symbol, *)])

data BackForwardListChangedSignalInfo
instance SignalInfo BackForwardListChangedSignalInfo where
    type HaskellCallbackType BackForwardListChangedSignalInfo = BackForwardListChangedCallback
    connectSignal _ = connectBackForwardListChanged

type instance O.SignalList BackForwardList = BackForwardListSignalList
type BackForwardListSignalList = ('[ '("changed", BackForwardListChangedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method BackForwardList::get_back_item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_back_item" webkit_back_forward_list_get_back_item :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO (Ptr WebKit2.BackForwardListItem.BackForwardListItem)

{- |
Returns the item that precedes the current item.
-}
backForwardListGetBackItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m WebKit2.BackForwardListItem.BackForwardListItem
    {- ^ __Returns:__ the 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
   preceding the current item or 'Nothing'. -}
backForwardListGetBackItem backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_back_item backForwardList'
    checkUnexpectedReturnNULL "backForwardListGetBackItem" result
    result' <- (newObject WebKit2.BackForwardListItem.BackForwardListItem) result
    touchManagedPtr backForwardList
    return result'

data BackForwardListGetBackItemMethodInfo
instance (signature ~ (m WebKit2.BackForwardListItem.BackForwardListItem), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetBackItemMethodInfo a signature where
    overloadedMethod _ = backForwardListGetBackItem

-- method BackForwardList::get_back_list
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_back_list" webkit_back_forward_list_get_back_list :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO (Ptr (GList (Ptr WebKit2.BackForwardListItem.BackForwardListItem)))

{- |
/No description available in the introspection data./
-}
backForwardListGetBackList ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m [WebKit2.BackForwardListItem.BackForwardListItem]
    {- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of
   items preceding the current item. -}
backForwardListGetBackList backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_back_list backForwardList'
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit2.BackForwardListItem.BackForwardListItem) result'
    g_list_free result
    touchManagedPtr backForwardList
    return result''

data BackForwardListGetBackListMethodInfo
instance (signature ~ (m [WebKit2.BackForwardListItem.BackForwardListItem]), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetBackListMethodInfo a signature where
    overloadedMethod _ = backForwardListGetBackList

-- method BackForwardList::get_back_list_with_limit
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "limit", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the number of items to retrieve", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_back_list_with_limit" webkit_back_forward_list_get_back_list_with_limit :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    Word32 ->                               -- limit : TBasicType TUInt
    IO (Ptr (GList (Ptr WebKit2.BackForwardListItem.BackForwardListItem)))

{- |
/No description available in the introspection data./
-}
backForwardListGetBackListWithLimit ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> Word32
    {- ^ /@limit@/: the number of items to retrieve -}
    -> m [WebKit2.BackForwardListItem.BackForwardListItem]
    {- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of
   items preceding the current item limited by /@limit@/. -}
backForwardListGetBackListWithLimit backForwardList limit = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_back_list_with_limit backForwardList' limit
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit2.BackForwardListItem.BackForwardListItem) result'
    g_list_free result
    touchManagedPtr backForwardList
    return result''

data BackForwardListGetBackListWithLimitMethodInfo
instance (signature ~ (Word32 -> m [WebKit2.BackForwardListItem.BackForwardListItem]), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetBackListWithLimitMethodInfo a signature where
    overloadedMethod _ = backForwardListGetBackListWithLimit

-- method BackForwardList::get_current_item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_current_item" webkit_back_forward_list_get_current_item :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO (Ptr WebKit2.BackForwardListItem.BackForwardListItem)

{- |
Returns the current item in /@backForwardList@/.
-}
backForwardListGetCurrentItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m WebKit2.BackForwardListItem.BackForwardListItem
    {- ^ __Returns:__ a 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
   or 'Nothing' if /@backForwardList@/ is empty. -}
backForwardListGetCurrentItem backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_current_item backForwardList'
    checkUnexpectedReturnNULL "backForwardListGetCurrentItem" result
    result' <- (newObject WebKit2.BackForwardListItem.BackForwardListItem) result
    touchManagedPtr backForwardList
    return result'

data BackForwardListGetCurrentItemMethodInfo
instance (signature ~ (m WebKit2.BackForwardListItem.BackForwardListItem), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetCurrentItemMethodInfo a signature where
    overloadedMethod _ = backForwardListGetCurrentItem

-- method BackForwardList::get_forward_item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_forward_item" webkit_back_forward_list_get_forward_item :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO (Ptr WebKit2.BackForwardListItem.BackForwardListItem)

{- |
Returns the item that follows the current item.
-}
backForwardListGetForwardItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m WebKit2.BackForwardListItem.BackForwardListItem
    {- ^ __Returns:__ the 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
   following the current item or 'Nothing'. -}
backForwardListGetForwardItem backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_forward_item backForwardList'
    checkUnexpectedReturnNULL "backForwardListGetForwardItem" result
    result' <- (newObject WebKit2.BackForwardListItem.BackForwardListItem) result
    touchManagedPtr backForwardList
    return result'

data BackForwardListGetForwardItemMethodInfo
instance (signature ~ (m WebKit2.BackForwardListItem.BackForwardListItem), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetForwardItemMethodInfo a signature where
    overloadedMethod _ = backForwardListGetForwardItem

-- method BackForwardList::get_forward_list
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_forward_list" webkit_back_forward_list_get_forward_list :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO (Ptr (GList (Ptr WebKit2.BackForwardListItem.BackForwardListItem)))

{- |
/No description available in the introspection data./
-}
backForwardListGetForwardList ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m [WebKit2.BackForwardListItem.BackForwardListItem]
    {- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of
   items following the current item. -}
backForwardListGetForwardList backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_forward_list backForwardList'
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit2.BackForwardListItem.BackForwardListItem) result'
    g_list_free result
    touchManagedPtr backForwardList
    return result''

data BackForwardListGetForwardListMethodInfo
instance (signature ~ (m [WebKit2.BackForwardListItem.BackForwardListItem]), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetForwardListMethodInfo a signature where
    overloadedMethod _ = backForwardListGetForwardList

-- method BackForwardList::get_forward_list_with_limit
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "limit", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the number of items to retrieve", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_forward_list_with_limit" webkit_back_forward_list_get_forward_list_with_limit :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    Word32 ->                               -- limit : TBasicType TUInt
    IO (Ptr (GList (Ptr WebKit2.BackForwardListItem.BackForwardListItem)))

{- |
/No description available in the introspection data./
-}
backForwardListGetForwardListWithLimit ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> Word32
    {- ^ /@limit@/: the number of items to retrieve -}
    -> m [WebKit2.BackForwardListItem.BackForwardListItem]
    {- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of
   items following the current item limited by /@limit@/. -}
backForwardListGetForwardListWithLimit backForwardList limit = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_forward_list_with_limit backForwardList' limit
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit2.BackForwardListItem.BackForwardListItem) result'
    g_list_free result
    touchManagedPtr backForwardList
    return result''

data BackForwardListGetForwardListWithLimitMethodInfo
instance (signature ~ (Word32 -> m [WebKit2.BackForwardListItem.BackForwardListItem]), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetForwardListWithLimitMethodInfo a signature where
    overloadedMethod _ = backForwardListGetForwardListWithLimit

-- method BackForwardList::get_length
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_length" webkit_back_forward_list_get_length :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    IO Word32

{- |
/No description available in the introspection data./
-}
backForwardListGetLength ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> m Word32
    {- ^ __Returns:__ the length of /@backForwardList@/. -}
backForwardListGetLength backForwardList = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_length backForwardList'
    touchManagedPtr backForwardList
    return result

data BackForwardListGetLengthMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetLengthMethodInfo a signature where
    overloadedMethod _ = backForwardListGetLength

-- method BackForwardList::get_nth_item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "back_forward_list", argType = TInterface (Name {namespace = "WebKit2", name = "BackForwardList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitBackForwardList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index of the item", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_back_forward_list_get_nth_item" webkit_back_forward_list_get_nth_item :: 
    Ptr BackForwardList ->                  -- back_forward_list : TInterface (Name {namespace = "WebKit2", name = "BackForwardList"})
    Int32 ->                                -- index : TBasicType TInt
    IO (Ptr WebKit2.BackForwardListItem.BackForwardListItem)

{- |
Returns the item at a given index relative to the current item.
-}
backForwardListGetNthItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardList a) =>
    a
    {- ^ /@backForwardList@/: a 'GI.WebKit2.Objects.BackForwardList.BackForwardList' -}
    -> Int32
    {- ^ /@index@/: the index of the item -}
    -> m WebKit2.BackForwardListItem.BackForwardListItem
    {- ^ __Returns:__ the 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
   located at the specified index relative to the current item. -}
backForwardListGetNthItem backForwardList index = liftIO $ do
    backForwardList' <- unsafeManagedPtrCastPtr backForwardList
    result <- webkit_back_forward_list_get_nth_item backForwardList' index
    checkUnexpectedReturnNULL "backForwardListGetNthItem" result
    result' <- (newObject WebKit2.BackForwardListItem.BackForwardListItem) result
    touchManagedPtr backForwardList
    return result'

data BackForwardListGetNthItemMethodInfo
instance (signature ~ (Int32 -> m WebKit2.BackForwardListItem.BackForwardListItem), MonadIO m, IsBackForwardList a) => O.MethodInfo BackForwardListGetNthItemMethodInfo a signature where
    overloadedMethod _ = backForwardListGetNthItem