{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gio.Structs.StaticResource
(
StaticResource(..) ,
newZeroStaticResource ,
#if defined(ENABLE_OVERLOADING)
ResolveStaticResourceMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
StaticResourceFiniMethodInfo ,
#endif
staticResourceFini ,
#if defined(ENABLE_OVERLOADING)
StaticResourceGetResourceMethodInfo ,
#endif
staticResourceGetResource ,
#if defined(ENABLE_OVERLOADING)
StaticResourceInitMethodInfo ,
#endif
staticResourceInit ,
) 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.GHashTable as B.GHT
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.Coerce as Coerce
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 {-# SOURCE #-} qualified GI.Gio.Structs.Resource as Gio.Resource
newtype StaticResource = StaticResource (SP.ManagedPtr StaticResource)
deriving (StaticResource -> StaticResource -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StaticResource -> StaticResource -> Bool
$c/= :: StaticResource -> StaticResource -> Bool
== :: StaticResource -> StaticResource -> Bool
$c== :: StaticResource -> StaticResource -> Bool
Eq)
instance SP.ManagedPtrNewtype StaticResource where
toManagedPtr :: StaticResource -> ManagedPtr StaticResource
toManagedPtr (StaticResource ManagedPtr StaticResource
p) = ManagedPtr StaticResource
p
instance BoxedPtr StaticResource where
boxedPtrCopy :: StaticResource -> IO StaticResource
boxedPtrCopy = \StaticResource
p -> forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr StaticResource
p (forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
20 forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr StaticResource -> StaticResource
StaticResource)
boxedPtrFree :: StaticResource -> IO ()
boxedPtrFree = \StaticResource
x -> forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr StaticResource
x forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr StaticResource where
boxedPtrCalloc :: IO (Ptr StaticResource)
boxedPtrCalloc = forall a. Int -> IO (Ptr a)
callocBytes Int
20
newZeroStaticResource :: MonadIO m => m StaticResource
newZeroStaticResource :: forall (m :: * -> *). MonadIO m => m StaticResource
newZeroStaticResource = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr StaticResource -> StaticResource
StaticResource
instance tag ~ 'AttrSet => Constructible StaticResource tag where
new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr StaticResource -> StaticResource)
-> [AttrOp StaticResource tag] -> m StaticResource
new ManagedPtr StaticResource -> StaticResource
_ [AttrOp StaticResource tag]
attrs = do
StaticResource
o <- forall (m :: * -> *). MonadIO m => m StaticResource
newZeroStaticResource
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set StaticResource
o [AttrOp StaticResource tag]
attrs
forall (m :: * -> *) a. Monad m => a -> m a
return StaticResource
o
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList StaticResource
type instance O.AttributeList StaticResource = StaticResourceAttributeList
type StaticResourceAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "g_static_resource_fini" g_static_resource_fini ::
Ptr StaticResource ->
IO ()
staticResourceFini ::
(B.CallStack.HasCallStack, MonadIO m) =>
StaticResource
-> m ()
staticResourceFini :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
StaticResource -> m ()
staticResourceFini StaticResource
staticResource = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr StaticResource
staticResource' <- forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr StaticResource
staticResource
Ptr StaticResource -> IO ()
g_static_resource_fini Ptr StaticResource
staticResource'
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr StaticResource
staticResource
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data StaticResourceFiniMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod StaticResourceFiniMethodInfo StaticResource signature where
overloadedMethod = staticResourceFini
instance O.OverloadedMethodInfo StaticResourceFiniMethodInfo StaticResource where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Structs.StaticResource.staticResourceFini",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Structs-StaticResource.html#v:staticResourceFini"
})
#endif
foreign import ccall "g_static_resource_get_resource" g_static_resource_get_resource ::
Ptr StaticResource ->
IO (Ptr Gio.Resource.Resource)
staticResourceGetResource ::
(B.CallStack.HasCallStack, MonadIO m) =>
StaticResource
-> m Gio.Resource.Resource
staticResourceGetResource :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
StaticResource -> m Resource
staticResourceGetResource StaticResource
staticResource = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr StaticResource
staticResource' <- forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr StaticResource
staticResource
Ptr Resource
result <- Ptr StaticResource -> IO (Ptr Resource)
g_static_resource_get_resource Ptr StaticResource
staticResource'
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"staticResourceGetResource" Ptr Resource
result
Resource
result' <- (forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Resource -> Resource
Gio.Resource.Resource) Ptr Resource
result
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr StaticResource
staticResource
forall (m :: * -> *) a. Monad m => a -> m a
return Resource
result'
#if defined(ENABLE_OVERLOADING)
data StaticResourceGetResourceMethodInfo
instance (signature ~ (m Gio.Resource.Resource), MonadIO m) => O.OverloadedMethod StaticResourceGetResourceMethodInfo StaticResource signature where
overloadedMethod = staticResourceGetResource
instance O.OverloadedMethodInfo StaticResourceGetResourceMethodInfo StaticResource where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Structs.StaticResource.staticResourceGetResource",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Structs-StaticResource.html#v:staticResourceGetResource"
})
#endif
foreign import ccall "g_static_resource_init" g_static_resource_init ::
Ptr StaticResource ->
IO ()
staticResourceInit ::
(B.CallStack.HasCallStack, MonadIO m) =>
StaticResource
-> m ()
staticResourceInit :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
StaticResource -> m ()
staticResourceInit StaticResource
staticResource = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr StaticResource
staticResource' <- forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr StaticResource
staticResource
Ptr StaticResource -> IO ()
g_static_resource_init Ptr StaticResource
staticResource'
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr StaticResource
staticResource
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data StaticResourceInitMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod StaticResourceInitMethodInfo StaticResource signature where
overloadedMethod = staticResourceInit
instance O.OverloadedMethodInfo StaticResourceInitMethodInfo StaticResource where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Structs.StaticResource.staticResourceInit",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.30/docs/GI-Gio-Structs-StaticResource.html#v:staticResourceInit"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveStaticResourceMethod (t :: Symbol) (o :: *) :: * where
ResolveStaticResourceMethod "fini" o = StaticResourceFiniMethodInfo
ResolveStaticResourceMethod "init" o = StaticResourceInitMethodInfo
ResolveStaticResourceMethod "getResource" o = StaticResourceGetResourceMethodInfo
ResolveStaticResourceMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveStaticResourceMethod t StaticResource, O.OverloadedMethod info StaticResource p) => OL.IsLabel t (StaticResource -> 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 ~ ResolveStaticResourceMethod t StaticResource, O.OverloadedMethod info StaticResource p, R.HasField t StaticResource p) => R.HasField t StaticResource p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveStaticResourceMethod t StaticResource, O.OverloadedMethodInfo info StaticResource) => OL.IsLabel t (O.MethodProxy info StaticResource) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif