{-# 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(..)                 ,
    noWebViewSessionState                   ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#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.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.GI.Base.Signals as B.Signals
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.GLib.Structs.Bytes as GLib.Bytes

-- | Memory-managed wrapper type.
newtype WebViewSessionState = WebViewSessionState (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)
foreign import ccall "webkit_web_view_session_state_get_type" c_webkit_web_view_session_state_get_type :: 
    IO GType

instance BoxedObject WebViewSessionState where
    boxedType :: WebViewSessionState -> IO GType
boxedType _ = IO GType
c_webkit_web_view_session_state_get_type

-- | Convert 'WebViewSessionState' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue WebViewSessionState where
    toGValue :: WebViewSessionState -> IO GValue
toGValue o :: WebViewSessionState
o = do
        GType
gtype <- IO GType
c_webkit_web_view_session_state_get_type
        WebViewSessionState
-> (Ptr WebViewSessionState -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr WebViewSessionState
o (GType
-> (GValue -> Ptr WebViewSessionState -> IO ())
-> Ptr WebViewSessionState
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr WebViewSessionState -> IO ()
forall a. GValue -> Ptr a -> IO ()
B.GValue.set_boxed)
        
    fromGValue :: GValue -> IO WebViewSessionState
fromGValue gv :: GValue
gv = do
        Ptr WebViewSessionState
ptr <- GValue -> IO (Ptr WebViewSessionState)
forall b. GValue -> IO (Ptr b)
B.GValue.get_boxed GValue
gv :: IO (Ptr WebViewSessionState)
        (ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr WebViewSessionState -> WebViewSessionState
WebViewSessionState Ptr WebViewSessionState
ptr
        
    

-- | A convenience alias for `Nothing` :: `Maybe` `WebViewSessionState`.
noWebViewSessionState :: Maybe WebViewSessionState
noWebViewSessionState :: Maybe WebViewSessionState
noWebViewSessionState = Maybe WebViewSessionState
forall a. Maybe a
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 :: Bytes -> m WebViewSessionState
webViewSessionStateNew data_ :: 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 "webViewSessionStateNew" Ptr WebViewSessionState
result
    WebViewSessionState
result' <- ((ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, BoxedObject 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 :: WebViewSessionState -> m WebViewSessionState
webViewSessionStateRef state :: 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 "webViewSessionStateRef" Ptr WebViewSessionState
result
    WebViewSessionState
result' <- ((ManagedPtr WebViewSessionState -> WebViewSessionState)
-> Ptr WebViewSessionState -> IO WebViewSessionState
forall a.
(HasCallStack, BoxedObject 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.MethodInfo WebViewSessionStateRefMethodInfo WebViewSessionState signature where
    overloadedMethod = 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 :: WebViewSessionState -> m Bytes
webViewSessionStateSerialize state :: 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 "webViewSessionStateSerialize" Ptr Bytes
result
    Bytes
result' <- ((ManagedPtr Bytes -> Bytes) -> Ptr Bytes -> IO Bytes
forall a.
(HasCallStack, BoxedObject 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.MethodInfo WebViewSessionStateSerializeMethodInfo WebViewSessionState signature where
    overloadedMethod = 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 :: WebViewSessionState -> m ()
webViewSessionStateUnref state :: 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.MethodInfo WebViewSessionStateUnrefMethodInfo WebViewSessionState signature where
    overloadedMethod = 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.MethodInfo 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

#endif