{-# 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.Structs.WebViewSessionState
    ( 

-- * Exported types
    WebViewSessionState(..)                 ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [ref]("GI.WebKit2.Structs.WebViewSessionState#g:method:ref"), [serialize]("GI.WebKit2.Structs.WebViewSessionState#g:method:serialize"), [unref]("GI.WebKit2.Structs.WebViewSessionState#g:method:unref").
-- 
-- ==== Getters
-- /None/.
-- 
-- ==== Setters
-- /None/.

#if defined(ENABLE_OVERLOADING)
    ResolveWebViewSessionStateMethod        ,
#endif

-- ** new #method:new#

    webViewSessionStateNew                  ,


-- ** ref #method:ref#

#if defined(ENABLE_OVERLOADING)
    WebViewSessionStateRefMethodInfo        ,
#endif
    webViewSessionStateRef                  ,


-- ** serialize #method:serialize#

#if defined(ENABLE_OVERLOADING)
    WebViewSessionStateSerializeMethodInfo  ,
#endif
    webViewSessionStateSerialize            ,


-- ** unref #method:unref#

#if defined(ENABLE_OVERLOADING)
    WebViewSessionStateUnrefMethodInfo      ,
#endif
    webViewSessionStateUnref                ,




    ) 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.GLib.Structs.Bytes as GLib.Bytes

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

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

foreign import ccall "webkit_web_view_session_state_get_type" c_webkit_web_view_session_state_get_type :: 
    IO GType

type instance O.ParentTypes WebViewSessionState = '[]
instance O.HasParentTypes WebViewSessionState

instance B.Types.TypedObject WebViewSessionState where
    glibType :: IO GType
glibType = IO GType
c_webkit_web_view_session_state_get_type

instance B.Types.GBoxed WebViewSessionState

-- | Convert 'WebViewSessionState' 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 WebViewSessionState) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_webkit_web_view_session_state_get_type
    gvalueSet_ :: Ptr GValue -> Maybe WebViewSessionState -> IO ()
gvalueSet_ Ptr GValue
gv Maybe WebViewSessionState
P.Nothing = Ptr GValue -> Ptr WebViewSessionState -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr WebViewSessionState
forall a. Ptr a
FP.nullPtr :: FP.Ptr WebViewSessionState)
    gvalueSet_ Ptr GValue
gv (P.Just WebViewSessionState
obj) = WebViewSessionState -> (Ptr WebViewSessionState -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr WebViewSessionState
obj (Ptr GValue -> Ptr WebViewSessionState -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe WebViewSessionState)
gvalueGet_ Ptr GValue
gv = do
        Ptr WebViewSessionState
ptr <- Ptr GValue -> IO (Ptr WebViewSessionState)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr WebViewSessionState)
        if Ptr WebViewSessionState
ptr Ptr WebViewSessionState -> Ptr WebViewSessionState -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr WebViewSessionState
forall a. Ptr a
FP.nullPtr
        then WebViewSessionState -> Maybe WebViewSessionState
forall a. a -> Maybe a
P.Just (WebViewSessionState -> Maybe WebViewSessionState)
-> IO WebViewSessionState -> IO (Maybe WebViewSessionState)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr WebViewSessionState -> WebViewSessionState
WebViewSessionState Ptr WebViewSessionState
ptr
        else Maybe WebViewSessionState -> IO (Maybe WebViewSessionState)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe WebViewSessionState
forall a. Maybe a
P.Nothing
        
    


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

-- method WebViewSessionState::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "data"
--           , argType = TInterface Name { namespace = "GLib" , name = "Bytes" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GBytes" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "WebKit2" , name = "WebViewSessionState" })
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_view_session_state_new" webkit_web_view_session_state_new :: 
    Ptr GLib.Bytes.Bytes ->                 -- data : TInterface (Name {namespace = "GLib", name = "Bytes"})
    IO (Ptr WebViewSessionState)

-- | Creates a new t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState' from serialized data.
-- 
-- /Since: 2.12/
webViewSessionStateNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    GLib.Bytes.Bytes
    -- ^ /@data@/: a t'GI.GLib.Structs.Bytes.Bytes'
    -> m WebViewSessionState
    -- ^ __Returns:__ a new t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState', or 'P.Nothing' if /@data@/ doesn\'t contain a
    --     valid serialized t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'.
webViewSessionStateNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Bytes -> m WebViewSessionState
webViewSessionStateNew Bytes
data_ = IO WebViewSessionState -> m WebViewSessionState
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO WebViewSessionState -> m WebViewSessionState)
-> IO WebViewSessionState -> m WebViewSessionState
forall a b. (a -> b) -> a -> b
$ do
    Ptr Bytes
data_' <- Bytes -> IO (Ptr Bytes)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Bytes
data_
    Ptr WebViewSessionState
result <- Ptr Bytes -> IO (Ptr WebViewSessionState)
webkit_web_view_session_state_new Ptr Bytes
data_'
    Text -> Ptr WebViewSessionState -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"webViewSessionStateNew" Ptr WebViewSessionState
result
    WebViewSessionState
result' <- ((ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr WebViewSessionState -> WebViewSessionState
WebViewSessionState) Ptr WebViewSessionState
result
    Bytes -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Bytes
data_
    WebViewSessionState -> IO WebViewSessionState
forall (m :: * -> *) a. Monad m => a -> m a
return WebViewSessionState
result'

#if defined(ENABLE_OVERLOADING)
#endif

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

foreign import ccall "webkit_web_view_session_state_ref" webkit_web_view_session_state_ref :: 
    Ptr WebViewSessionState ->              -- state : TInterface (Name {namespace = "WebKit2", name = "WebViewSessionState"})
    IO (Ptr WebViewSessionState)

-- | Atomically increments the reference count of /@state@/ by one. This
-- function is MT-safe and may be called from any thread.
-- 
-- /Since: 2.12/
webViewSessionStateRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    WebViewSessionState
    -- ^ /@state@/: a t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'
    -> m WebViewSessionState
    -- ^ __Returns:__ The passed in t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'
webViewSessionStateRef :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
WebViewSessionState -> m WebViewSessionState
webViewSessionStateRef WebViewSessionState
state = IO WebViewSessionState -> m WebViewSessionState
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO WebViewSessionState -> m WebViewSessionState)
-> IO WebViewSessionState -> m WebViewSessionState
forall a b. (a -> b) -> a -> b
$ do
    Ptr WebViewSessionState
state' <- WebViewSessionState -> IO (Ptr WebViewSessionState)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr WebViewSessionState
state
    Ptr WebViewSessionState
result <- Ptr WebViewSessionState -> IO (Ptr WebViewSessionState)
webkit_web_view_session_state_ref Ptr WebViewSessionState
state'
    Text -> Ptr WebViewSessionState -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"webViewSessionStateRef" Ptr WebViewSessionState
result
    WebViewSessionState
result' <- ((ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr WebViewSessionState -> WebViewSessionState
WebViewSessionState) Ptr WebViewSessionState
result
    WebViewSessionState -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr WebViewSessionState
state
    WebViewSessionState -> IO WebViewSessionState
forall (m :: * -> *) a. Monad m => a -> m a
return WebViewSessionState
result'

#if defined(ENABLE_OVERLOADING)
data WebViewSessionStateRefMethodInfo
instance (signature ~ (m WebViewSessionState), MonadIO m) => O.OverloadedMethod WebViewSessionStateRefMethodInfo WebViewSessionState signature where
    overloadedMethod = webViewSessionStateRef

instance O.OverloadedMethodInfo WebViewSessionStateRefMethodInfo WebViewSessionState where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.WebViewSessionState.webViewSessionStateRef",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-WebViewSessionState.html#v:webViewSessionStateRef"
        }


#endif

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

foreign import ccall "webkit_web_view_session_state_serialize" webkit_web_view_session_state_serialize :: 
    Ptr WebViewSessionState ->              -- state : TInterface (Name {namespace = "WebKit2", name = "WebViewSessionState"})
    IO (Ptr GLib.Bytes.Bytes)

-- | Serializes a t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'.
-- 
-- /Since: 2.12/
webViewSessionStateSerialize ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    WebViewSessionState
    -- ^ /@state@/: a t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'
    -> m GLib.Bytes.Bytes
    -- ^ __Returns:__ a t'GI.GLib.Structs.Bytes.Bytes' containing the /@state@/ serialized.
webViewSessionStateSerialize :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
WebViewSessionState -> m Bytes
webViewSessionStateSerialize WebViewSessionState
state = IO Bytes -> m Bytes
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bytes -> m Bytes) -> IO Bytes -> m Bytes
forall a b. (a -> b) -> a -> b
$ do
    Ptr WebViewSessionState
state' <- WebViewSessionState -> IO (Ptr WebViewSessionState)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr WebViewSessionState
state
    Ptr Bytes
result <- Ptr WebViewSessionState -> IO (Ptr Bytes)
webkit_web_view_session_state_serialize Ptr WebViewSessionState
state'
    Text -> Ptr Bytes -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"webViewSessionStateSerialize" Ptr Bytes
result
    Bytes
result' <- ((ManagedPtr Bytes -> Bytes) -> Ptr Bytes -> IO Bytes
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Bytes -> Bytes
GLib.Bytes.Bytes) Ptr Bytes
result
    WebViewSessionState -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr WebViewSessionState
state
    Bytes -> IO Bytes
forall (m :: * -> *) a. Monad m => a -> m a
return Bytes
result'

#if defined(ENABLE_OVERLOADING)
data WebViewSessionStateSerializeMethodInfo
instance (signature ~ (m GLib.Bytes.Bytes), MonadIO m) => O.OverloadedMethod WebViewSessionStateSerializeMethodInfo WebViewSessionState signature where
    overloadedMethod = webViewSessionStateSerialize

instance O.OverloadedMethodInfo WebViewSessionStateSerializeMethodInfo WebViewSessionState where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.WebViewSessionState.webViewSessionStateSerialize",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-WebViewSessionState.html#v:webViewSessionStateSerialize"
        }


#endif

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

foreign import ccall "webkit_web_view_session_state_unref" webkit_web_view_session_state_unref :: 
    Ptr WebViewSessionState ->              -- state : TInterface (Name {namespace = "WebKit2", name = "WebViewSessionState"})
    IO ()

-- | Atomically decrements the reference count of /@state@/ by one. If the
-- reference count drops to 0, all memory allocated by the t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState' is
-- released. This function is MT-safe and may be called from any thread.
-- 
-- /Since: 2.12/
webViewSessionStateUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    WebViewSessionState
    -- ^ /@state@/: a t'GI.WebKit2.Structs.WebViewSessionState.WebViewSessionState'
    -> m ()
webViewSessionStateUnref :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
WebViewSessionState -> m ()
webViewSessionStateUnref WebViewSessionState
state = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr WebViewSessionState
state' <- WebViewSessionState -> IO (Ptr WebViewSessionState)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr WebViewSessionState
state
    Ptr WebViewSessionState -> IO ()
webkit_web_view_session_state_unref Ptr WebViewSessionState
state'
    WebViewSessionState -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr WebViewSessionState
state
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data WebViewSessionStateUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod WebViewSessionStateUnrefMethodInfo WebViewSessionState signature where
    overloadedMethod = webViewSessionStateUnref

instance O.OverloadedMethodInfo WebViewSessionStateUnrefMethodInfo WebViewSessionState where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.WebViewSessionState.webViewSessionStateUnref",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-WebViewSessionState.html#v:webViewSessionStateUnref"
        }


#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveWebViewSessionStateMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebViewSessionStateMethod "ref" o = WebViewSessionStateRefMethodInfo
    ResolveWebViewSessionStateMethod "serialize" o = WebViewSessionStateSerializeMethodInfo
    ResolveWebViewSessionStateMethod "unref" o = WebViewSessionStateUnrefMethodInfo
    ResolveWebViewSessionStateMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveWebViewSessionStateMethod t WebViewSessionState, O.OverloadedMethod info WebViewSessionState p) => OL.IsLabel t (WebViewSessionState -> 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 ~ ResolveWebViewSessionStateMethod t WebViewSessionState, O.OverloadedMethod info WebViewSessionState p, R.HasField t WebViewSessionState p) => R.HasField t WebViewSessionState p where
    getField = O.overloadedMethod @info

#endif

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

#endif