{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GLib.Structs.MemChunk
    ( 
    MemChunk(..)                            ,
 
#if defined(ENABLE_OVERLOADING)
    ResolveMemChunkMethod                   ,
#endif
#if defined(ENABLE_OVERLOADING)
    MemChunkAllocMethodInfo                 ,
#endif
    memChunkAlloc                           ,
#if defined(ENABLE_OVERLOADING)
    MemChunkAlloc0MethodInfo                ,
#endif
    memChunkAlloc0                          ,
#if defined(ENABLE_OVERLOADING)
    MemChunkCleanMethodInfo                 ,
#endif
    memChunkClean                           ,
#if defined(ENABLE_OVERLOADING)
    MemChunkDestroyMethodInfo               ,
#endif
    memChunkDestroy                         ,
#if defined(ENABLE_OVERLOADING)
    MemChunkFreeMethodInfo                  ,
#endif
    memChunkFree                            ,
    memChunkInfo                            ,
#if defined(ENABLE_OVERLOADING)
    MemChunkPrintMethodInfo                 ,
#endif
    memChunkPrint                           ,
#if defined(ENABLE_OVERLOADING)
    MemChunkResetMethodInfo                 ,
#endif
    memChunkReset                           ,
    ) 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.Kind as DK
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 Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
#else
#endif
newtype MemChunk = MemChunk (SP.ManagedPtr MemChunk)
    deriving (MemChunk -> MemChunk -> Bool
(MemChunk -> MemChunk -> Bool)
-> (MemChunk -> MemChunk -> Bool) -> Eq MemChunk
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemChunk -> MemChunk -> Bool
== :: MemChunk -> MemChunk -> Bool
$c/= :: MemChunk -> MemChunk -> Bool
/= :: MemChunk -> MemChunk -> Bool
Eq)
instance SP.ManagedPtrNewtype MemChunk where
    toManagedPtr :: MemChunk -> ManagedPtr MemChunk
toManagedPtr (MemChunk ManagedPtr MemChunk
p) = ManagedPtr MemChunk
p
instance BoxedPtr MemChunk where
    boxedPtrCopy :: MemChunk -> IO MemChunk
boxedPtrCopy = MemChunk -> IO MemChunk
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return
    boxedPtrFree :: MemChunk -> IO ()
boxedPtrFree = \MemChunk
_x -> () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList MemChunk
type instance O.AttributeList MemChunk = MemChunkAttributeList
type MemChunkAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_mem_chunk_alloc" g_mem_chunk_alloc :: 
    Ptr MemChunk ->                         
    IO (Ptr ())
memChunkAlloc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m (Ptr ())
memChunkAlloc :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MemChunk -> m (Ptr ())
memChunkAlloc MemChunk
memChunk = IO (Ptr ()) -> m (Ptr ())
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Ptr ()) -> m (Ptr ())) -> IO (Ptr ()) -> m (Ptr ())
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr ()
result <- Ptr MemChunk -> IO (Ptr ())
g_mem_chunk_alloc Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    Ptr () -> IO (Ptr ())
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr ()
result
#if defined(ENABLE_OVERLOADING)
data MemChunkAllocMethodInfo
instance (signature ~ (m (Ptr ())), MonadIO m) => O.OverloadedMethod MemChunkAllocMethodInfo MemChunk signature where
    overloadedMethod = memChunkAlloc
instance O.OverloadedMethodInfo MemChunkAllocMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkAlloc",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkAlloc"
        })
#endif
foreign import ccall "g_mem_chunk_alloc0" g_mem_chunk_alloc0 :: 
    Ptr MemChunk ->                         
    IO (Ptr ())
memChunkAlloc0 ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m (Ptr ())
memChunkAlloc0 :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MemChunk -> m (Ptr ())
memChunkAlloc0 MemChunk
memChunk = IO (Ptr ()) -> m (Ptr ())
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Ptr ()) -> m (Ptr ())) -> IO (Ptr ()) -> m (Ptr ())
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr ()
result <- Ptr MemChunk -> IO (Ptr ())
g_mem_chunk_alloc0 Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    Ptr () -> IO (Ptr ())
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr ()
result
#if defined(ENABLE_OVERLOADING)
data MemChunkAlloc0MethodInfo
instance (signature ~ (m (Ptr ())), MonadIO m) => O.OverloadedMethod MemChunkAlloc0MethodInfo MemChunk signature where
    overloadedMethod = memChunkAlloc0
instance O.OverloadedMethodInfo MemChunkAlloc0MethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkAlloc0",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkAlloc0"
        })
#endif
foreign import ccall "g_mem_chunk_clean" g_mem_chunk_clean :: 
    Ptr MemChunk ->                         
    IO ()
memChunkClean ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m ()
memChunkClean :: forall (m :: * -> *). (HasCallStack, MonadIO m) => MemChunk -> m ()
memChunkClean MemChunk
memChunk = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr MemChunk -> IO ()
g_mem_chunk_clean Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data MemChunkCleanMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MemChunkCleanMethodInfo MemChunk signature where
    overloadedMethod = memChunkClean
instance O.OverloadedMethodInfo MemChunkCleanMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkClean",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkClean"
        })
#endif
foreign import ccall "g_mem_chunk_destroy" g_mem_chunk_destroy :: 
    Ptr MemChunk ->                         
    IO ()
memChunkDestroy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m ()
memChunkDestroy :: forall (m :: * -> *). (HasCallStack, MonadIO m) => MemChunk -> m ()
memChunkDestroy MemChunk
memChunk = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr MemChunk -> IO ()
g_mem_chunk_destroy Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data MemChunkDestroyMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MemChunkDestroyMethodInfo MemChunk signature where
    overloadedMethod = memChunkDestroy
instance O.OverloadedMethodInfo MemChunkDestroyMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkDestroy",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkDestroy"
        })
#endif
foreign import ccall "g_mem_chunk_free" g_mem_chunk_free :: 
    Ptr MemChunk ->                         
    Ptr () ->                               
    IO ()
memChunkFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> Ptr ()
    -> m ()
memChunkFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MemChunk -> Ptr () -> m ()
memChunkFree MemChunk
memChunk Ptr ()
mem = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr MemChunk -> Ptr () -> IO ()
g_mem_chunk_free Ptr MemChunk
memChunk' Ptr ()
mem
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data MemChunkFreeMethodInfo
instance (signature ~ (Ptr () -> m ()), MonadIO m) => O.OverloadedMethod MemChunkFreeMethodInfo MemChunk signature where
    overloadedMethod = memChunkFree
instance O.OverloadedMethodInfo MemChunkFreeMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkFree",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkFree"
        })
#endif
foreign import ccall "g_mem_chunk_print" g_mem_chunk_print :: 
    Ptr MemChunk ->                         
    IO ()
memChunkPrint ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m ()
memChunkPrint :: forall (m :: * -> *). (HasCallStack, MonadIO m) => MemChunk -> m ()
memChunkPrint MemChunk
memChunk = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr MemChunk -> IO ()
g_mem_chunk_print Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data MemChunkPrintMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MemChunkPrintMethodInfo MemChunk signature where
    overloadedMethod = memChunkPrint
instance O.OverloadedMethodInfo MemChunkPrintMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkPrint",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkPrint"
        })
#endif
foreign import ccall "g_mem_chunk_reset" g_mem_chunk_reset :: 
    Ptr MemChunk ->                         
    IO ()
memChunkReset ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    MemChunk
    -> m ()
memChunkReset :: forall (m :: * -> *). (HasCallStack, MonadIO m) => MemChunk -> m ()
memChunkReset MemChunk
memChunk = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr MemChunk
memChunk' <- MemChunk -> IO (Ptr MemChunk)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MemChunk
memChunk
    Ptr MemChunk -> IO ()
g_mem_chunk_reset Ptr MemChunk
memChunk'
    MemChunk -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr MemChunk
memChunk
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data MemChunkResetMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MemChunkResetMethodInfo MemChunk signature where
    overloadedMethod = memChunkReset
instance O.OverloadedMethodInfo MemChunkResetMethodInfo MemChunk where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.MemChunk.memChunkReset",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MemChunk.html#v:memChunkReset"
        })
#endif
foreign import ccall "g_mem_chunk_info" g_mem_chunk_info :: 
    IO ()
memChunkInfo ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m ()
memChunkInfo :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m ()
memChunkInfo  = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    IO ()
g_mem_chunk_info
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveMemChunkMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveMemChunkMethod "alloc" o = MemChunkAllocMethodInfo
    ResolveMemChunkMethod "alloc0" o = MemChunkAlloc0MethodInfo
    ResolveMemChunkMethod "clean" o = MemChunkCleanMethodInfo
    ResolveMemChunkMethod "destroy" o = MemChunkDestroyMethodInfo
    ResolveMemChunkMethod "free" o = MemChunkFreeMethodInfo
    ResolveMemChunkMethod "print" o = MemChunkPrintMethodInfo
    ResolveMemChunkMethod "reset" o = MemChunkResetMethodInfo
    ResolveMemChunkMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveMemChunkMethod t MemChunk, O.OverloadedMethod info MemChunk p) => OL.IsLabel t (MemChunk -> 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 ~ ResolveMemChunkMethod t MemChunk, O.OverloadedMethod info MemChunk p, R.HasField t MemChunk p) => R.HasField t MemChunk p where
    getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveMemChunkMethod t MemChunk, O.OverloadedMethodInfo info MemChunk) => OL.IsLabel t (O.MethodProxy info MemChunk) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif
#endif