{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

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

module GI.WebKit2.Objects.BackForwardListItem
    ( 

-- * Exported types
    BackForwardListItem(..)                 ,
    IsBackForwardListItem                   ,
    toBackForwardListItem                   ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getOriginalUri]("GI.WebKit2.Objects.BackForwardListItem#g:method:getOriginalUri"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getTitle]("GI.WebKit2.Objects.BackForwardListItem#g:method:getTitle"), [getUri]("GI.WebKit2.Objects.BackForwardListItem#g:method:getUri").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty").

#if defined(ENABLE_OVERLOADING)
    ResolveBackForwardListItemMethod        ,
#endif

-- ** getOriginalUri #method:getOriginalUri#

#if defined(ENABLE_OVERLOADING)
    BackForwardListItemGetOriginalUriMethodInfo,
#endif
    backForwardListItemGetOriginalUri       ,


-- ** getTitle #method:getTitle#

#if defined(ENABLE_OVERLOADING)
    BackForwardListItemGetTitleMethodInfo   ,
#endif
    backForwardListItemGetTitle             ,


-- ** getUri #method:getUri#

#if defined(ENABLE_OVERLOADING)
    BackForwardListItemGetUriMethodInfo     ,
#endif
    backForwardListItemGetUri               ,




    ) 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.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.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 qualified GHC.Records as R

import qualified GI.GObject.Objects.Object as GObject.Object

-- | Memory-managed wrapper type.
newtype BackForwardListItem = BackForwardListItem (SP.ManagedPtr BackForwardListItem)
    deriving (BackForwardListItem -> BackForwardListItem -> Bool
(BackForwardListItem -> BackForwardListItem -> Bool)
-> (BackForwardListItem -> BackForwardListItem -> Bool)
-> Eq BackForwardListItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BackForwardListItem -> BackForwardListItem -> Bool
$c/= :: BackForwardListItem -> BackForwardListItem -> Bool
== :: BackForwardListItem -> BackForwardListItem -> Bool
$c== :: BackForwardListItem -> BackForwardListItem -> Bool
Eq)

instance SP.ManagedPtrNewtype BackForwardListItem where
    toManagedPtr :: BackForwardListItem -> ManagedPtr BackForwardListItem
toManagedPtr (BackForwardListItem ManagedPtr BackForwardListItem
p) = ManagedPtr BackForwardListItem
p

foreign import ccall "webkit_back_forward_list_item_get_type"
    c_webkit_back_forward_list_item_get_type :: IO B.Types.GType

instance B.Types.TypedObject BackForwardListItem where
    glibType :: IO GType
glibType = IO GType
c_webkit_back_forward_list_item_get_type

instance B.Types.GObject BackForwardListItem

-- | Type class for types which can be safely cast to `BackForwardListItem`, for instance with `toBackForwardListItem`.
class (SP.GObject o, O.IsDescendantOf BackForwardListItem o) => IsBackForwardListItem o
instance (SP.GObject o, O.IsDescendantOf BackForwardListItem o) => IsBackForwardListItem o

instance O.HasParentTypes BackForwardListItem
type instance O.ParentTypes BackForwardListItem = '[GObject.Object.Object]

-- | Cast to `BackForwardListItem`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toBackForwardListItem :: (MIO.MonadIO m, IsBackForwardListItem o) => o -> m BackForwardListItem
toBackForwardListItem :: forall (m :: * -> *) o.
(MonadIO m, IsBackForwardListItem o) =>
o -> m BackForwardListItem
toBackForwardListItem = IO BackForwardListItem -> m BackForwardListItem
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO BackForwardListItem -> m BackForwardListItem)
-> (o -> IO BackForwardListItem) -> o -> m BackForwardListItem
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr BackForwardListItem -> BackForwardListItem)
-> o -> IO BackForwardListItem
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr BackForwardListItem -> BackForwardListItem
BackForwardListItem

-- | Convert 'BackForwardListItem' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe BackForwardListItem) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_webkit_back_forward_list_item_get_type
    gvalueSet_ :: Ptr GValue -> Maybe BackForwardListItem -> IO ()
gvalueSet_ Ptr GValue
gv Maybe BackForwardListItem
P.Nothing = Ptr GValue -> Ptr BackForwardListItem -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr BackForwardListItem
forall a. Ptr a
FP.nullPtr :: FP.Ptr BackForwardListItem)
    gvalueSet_ Ptr GValue
gv (P.Just BackForwardListItem
obj) = BackForwardListItem -> (Ptr BackForwardListItem -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr BackForwardListItem
obj (Ptr GValue -> Ptr BackForwardListItem -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe BackForwardListItem)
gvalueGet_ Ptr GValue
gv = do
        Ptr BackForwardListItem
ptr <- Ptr GValue -> IO (Ptr BackForwardListItem)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr BackForwardListItem)
        if Ptr BackForwardListItem
ptr Ptr BackForwardListItem -> Ptr BackForwardListItem -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr BackForwardListItem
forall a. Ptr a
FP.nullPtr
        then BackForwardListItem -> Maybe BackForwardListItem
forall a. a -> Maybe a
P.Just (BackForwardListItem -> Maybe BackForwardListItem)
-> IO BackForwardListItem -> IO (Maybe BackForwardListItem)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr BackForwardListItem -> BackForwardListItem)
-> Ptr BackForwardListItem -> IO BackForwardListItem
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr BackForwardListItem -> BackForwardListItem
BackForwardListItem Ptr BackForwardListItem
ptr
        else Maybe BackForwardListItem -> IO (Maybe BackForwardListItem)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe BackForwardListItem
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveBackForwardListItemMethod (t :: Symbol) (o :: *) :: * where
    ResolveBackForwardListItemMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveBackForwardListItemMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveBackForwardListItemMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveBackForwardListItemMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveBackForwardListItemMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveBackForwardListItemMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveBackForwardListItemMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveBackForwardListItemMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveBackForwardListItemMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveBackForwardListItemMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveBackForwardListItemMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveBackForwardListItemMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveBackForwardListItemMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveBackForwardListItemMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveBackForwardListItemMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveBackForwardListItemMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveBackForwardListItemMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveBackForwardListItemMethod "getOriginalUri" o = BackForwardListItemGetOriginalUriMethodInfo
    ResolveBackForwardListItemMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveBackForwardListItemMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveBackForwardListItemMethod "getTitle" o = BackForwardListItemGetTitleMethodInfo
    ResolveBackForwardListItemMethod "getUri" o = BackForwardListItemGetUriMethodInfo
    ResolveBackForwardListItemMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveBackForwardListItemMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveBackForwardListItemMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveBackForwardListItemMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveBackForwardListItemMethod t BackForwardListItem, O.OverloadedMethod info BackForwardListItem p) => OL.IsLabel t (BackForwardListItem -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveBackForwardListItemMethod t BackForwardListItem, O.OverloadedMethod info BackForwardListItem p, R.HasField t BackForwardListItem p) => R.HasField t BackForwardListItem p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveBackForwardListItemMethod t BackForwardListItem, O.OverloadedMethodInfo info BackForwardListItem) => OL.IsLabel t (O.MethodProxy info BackForwardListItem) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList BackForwardListItem
type instance O.AttributeList BackForwardListItem = BackForwardListItemAttributeList
type BackForwardListItemAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList BackForwardListItem = BackForwardListItemSignalList
type BackForwardListItemSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

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

foreign import ccall "webkit_back_forward_list_item_get_original_uri" webkit_back_forward_list_item_get_original_uri :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

-- | See also 'GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetUri'.
backForwardListItemGetOriginalUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    -- ^ /@listItem@/: a t'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
    -> m (Maybe T.Text)
    -- ^ __Returns:__ the original URI of /@listItem@/ or 'P.Nothing'
    --    when the original URI is empty.
backForwardListItemGetOriginalUri :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsBackForwardListItem a) =>
a -> m (Maybe Text)
backForwardListItemGetOriginalUri a
listItem = IO (Maybe Text) -> m (Maybe Text)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
    Ptr BackForwardListItem
listItem' <- a -> IO (Ptr BackForwardListItem)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
listItem
    CString
result <- Ptr BackForwardListItem -> IO CString
webkit_back_forward_list_item_get_original_uri Ptr BackForwardListItem
listItem'
    Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
        Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
        Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
listItem
    Maybe Text -> IO (Maybe Text)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult

#if defined(ENABLE_OVERLOADING)
data BackForwardListItemGetOriginalUriMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsBackForwardListItem a) => O.OverloadedMethod BackForwardListItemGetOriginalUriMethodInfo a signature where
    overloadedMethod = backForwardListItemGetOriginalUri

instance O.OverloadedMethodInfo BackForwardListItemGetOriginalUriMethodInfo a where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetOriginalUri",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Objects-BackForwardListItem.html#v:backForwardListItemGetOriginalUri"
        }


#endif

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

foreign import ccall "webkit_back_forward_list_item_get_title" webkit_back_forward_list_item_get_title :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

-- | /No description available in the introspection data./
backForwardListItemGetTitle ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    -- ^ /@listItem@/: a t'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
    -> m (Maybe T.Text)
    -- ^ __Returns:__ the page title of /@listItem@/ or 'P.Nothing'
    --    when the title is empty.
backForwardListItemGetTitle :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsBackForwardListItem a) =>
a -> m (Maybe Text)
backForwardListItemGetTitle a
listItem = IO (Maybe Text) -> m (Maybe Text)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
    Ptr BackForwardListItem
listItem' <- a -> IO (Ptr BackForwardListItem)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
listItem
    CString
result <- Ptr BackForwardListItem -> IO CString
webkit_back_forward_list_item_get_title Ptr BackForwardListItem
listItem'
    Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
        Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
        Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
listItem
    Maybe Text -> IO (Maybe Text)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult

#if defined(ENABLE_OVERLOADING)
data BackForwardListItemGetTitleMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsBackForwardListItem a) => O.OverloadedMethod BackForwardListItemGetTitleMethodInfo a signature where
    overloadedMethod = backForwardListItemGetTitle

instance O.OverloadedMethodInfo BackForwardListItemGetTitleMethodInfo a where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetTitle",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Objects-BackForwardListItem.html#v:backForwardListItemGetTitle"
        }


#endif

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

foreign import ccall "webkit_back_forward_list_item_get_uri" webkit_back_forward_list_item_get_uri :: 
    Ptr BackForwardListItem ->              -- list_item : TInterface (Name {namespace = "WebKit2", name = "BackForwardListItem"})
    IO CString

-- | This URI may differ from the original URI if the page was,
-- for example, redirected to a new location.
-- See also 'GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetOriginalUri'.
backForwardListItemGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsBackForwardListItem a) =>
    a
    -- ^ /@listItem@/: a t'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem'
    -> m (Maybe T.Text)
    -- ^ __Returns:__ the URI of /@listItem@/ or 'P.Nothing'
    --    when the URI is empty.
backForwardListItemGetUri :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsBackForwardListItem a) =>
a -> m (Maybe Text)
backForwardListItemGetUri a
listItem = IO (Maybe Text) -> m (Maybe Text)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
    Ptr BackForwardListItem
listItem' <- a -> IO (Ptr BackForwardListItem)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
listItem
    CString
result <- Ptr BackForwardListItem -> IO CString
webkit_back_forward_list_item_get_uri Ptr BackForwardListItem
listItem'
    Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
        Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
        Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
listItem
    Maybe Text -> IO (Maybe Text)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult

#if defined(ENABLE_OVERLOADING)
data BackForwardListItemGetUriMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsBackForwardListItem a) => O.OverloadedMethod BackForwardListItemGetUriMethodInfo a signature where
    overloadedMethod = backForwardListItemGetUri

instance O.OverloadedMethodInfo BackForwardListItemGetUriMethodInfo a where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Objects.BackForwardListItem.backForwardListItemGetUri",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Objects-BackForwardListItem.html#v:backForwardListItemGetUri"
        }


#endif