{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)

/No description available in the introspection data./
-}

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

module GI.WebKit2.Objects.BackForwardListItem
    (

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


 -- * Methods
-- ** getOriginalUri #method:getOriginalUri#

#if ENABLE_OVERLOADING
    BackForwardListItemGetOriginalUriMethodInfo,
#endif
    backForwardListItemGetOriginalUri       ,


-- ** getTitle #method:getTitle#

#if ENABLE_OVERLOADING
    BackForwardListItemGetTitleMethodInfo   ,
#endif
    backForwardListItemGetTitle             ,


-- ** getUri #method:getUri#

#if 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.ManagedPtr as B.ManagedPtr
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.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 GI.GObject.Objects.Object as GObject.Object

-- | Memory-managed wrapper type.
newtype BackForwardListItem = BackForwardListItem (ManagedPtr BackForwardListItem)
foreign import ccall "webkit_back_forward_list_item_get_type"
    c_webkit_back_forward_list_item_get_type :: IO GType

instance GObject BackForwardListItem where
    gobjectType = c_webkit_back_forward_list_item_get_type


-- | Type class for types which can be safely cast to `BackForwardListItem`, for instance with `toBackForwardListItem`.
class (GObject o, O.IsDescendantOf BackForwardListItem o) => IsBackForwardListItem o
instance (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 :: (MonadIO m, IsBackForwardListItem o) => o -> m BackForwardListItem
toBackForwardListItem = liftIO . unsafeCastTo BackForwardListItem

-- | A convenience alias for `Nothing` :: `Maybe` `BackForwardListItem`.
noBackForwardListItem :: Maybe BackForwardListItem
noBackForwardListItem = Nothing

#if 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 "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveBackForwardListItemMethod l o = O.MethodResolutionFailed l o

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

#endif

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

#if ENABLE_OVERLOADING
#endif

#if 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 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the original URI of /@listItem@/ or 'Nothing'
   when the original URI is empty. -}
backForwardListItemGetOriginalUri listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_original_uri listItem'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr listItem
    return maybeResult

#if ENABLE_OVERLOADING
data BackForwardListItemGetOriginalUriMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsBackForwardListItem a) => O.MethodInfo BackForwardListItemGetOriginalUriMethodInfo a signature where
    overloadedMethod _ = 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 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the page title of /@listItem@/ or 'Nothing'
   when the title is empty. -}
backForwardListItemGetTitle listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_title listItem'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr listItem
    return maybeResult

#if ENABLE_OVERLOADING
data BackForwardListItemGetTitleMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsBackForwardListItem a) => O.MethodInfo BackForwardListItemGetTitleMethodInfo a signature where
    overloadedMethod _ = 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 'GI.WebKit2.Objects.BackForwardListItem.BackForwardListItem' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the URI of /@listItem@/ or 'Nothing'
   when the URI is empty. -}
backForwardListItemGetUri listItem = liftIO $ do
    listItem' <- unsafeManagedPtrCastPtr listItem
    result <- webkit_back_forward_list_item_get_uri listItem'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr listItem
    return maybeResult

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

#endif