{-# LANGUAGE TypeApplications #-}
#if !defined(__HADDOCK_VERSION__)
#define ENABLE_OVERLOADING
#endif
module GI.GLib.Structs.MappedFile
(
MappedFile(..) ,
#if defined(ENABLE_OVERLOADING)
ResolveMappedFileMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
MappedFileFreeMethodInfo ,
#endif
mappedFileFree ,
#if defined(ENABLE_OVERLOADING)
MappedFileGetBytesMethodInfo ,
#endif
mappedFileGetBytes ,
#if defined(ENABLE_OVERLOADING)
MappedFileGetContentsMethodInfo ,
#endif
mappedFileGetContents ,
#if defined(ENABLE_OVERLOADING)
MappedFileGetLengthMethodInfo ,
#endif
mappedFileGetLength ,
mappedFileNew ,
mappedFileNewFromFd ,
#if defined(ENABLE_OVERLOADING)
MappedFileRefMethodInfo ,
#endif
mappedFileRef ,
#if defined(ENABLE_OVERLOADING)
MappedFileUnrefMethodInfo ,
#endif
mappedFileUnref ,
) 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)
import {-# SOURCE #-} qualified GI.GLib.Structs.Bytes as GLib.Bytes
#else
import {-# SOURCE #-} qualified GI.GLib.Structs.Bytes as GLib.Bytes
#endif
newtype MappedFile = MappedFile (SP.ManagedPtr MappedFile)
deriving (MappedFile -> MappedFile -> Bool
(MappedFile -> MappedFile -> Bool)
-> (MappedFile -> MappedFile -> Bool) -> Eq MappedFile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MappedFile -> MappedFile -> Bool
== :: MappedFile -> MappedFile -> Bool
$c/= :: MappedFile -> MappedFile -> Bool
/= :: MappedFile -> MappedFile -> Bool
Eq)
instance SP.ManagedPtrNewtype MappedFile where
toManagedPtr :: MappedFile -> ManagedPtr MappedFile
toManagedPtr (MappedFile ManagedPtr MappedFile
p) = ManagedPtr MappedFile
p
foreign import ccall "g_mapped_file_get_type" c_g_mapped_file_get_type ::
IO GType
type instance O.ParentTypes MappedFile = '[]
instance O.HasParentTypes MappedFile
instance B.Types.TypedObject MappedFile where
glibType :: IO GType
glibType = IO GType
c_g_mapped_file_get_type
instance B.Types.GBoxed MappedFile
instance B.GValue.IsGValue (Maybe MappedFile) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_g_mapped_file_get_type
gvalueSet_ :: Ptr GValue -> Maybe MappedFile -> IO ()
gvalueSet_ Ptr GValue
gv Maybe MappedFile
P.Nothing = Ptr GValue -> Ptr MappedFile -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr MappedFile
forall a. Ptr a
FP.nullPtr :: FP.Ptr MappedFile)
gvalueSet_ Ptr GValue
gv (P.Just MappedFile
obj) = MappedFile -> (Ptr MappedFile -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr MappedFile
obj (Ptr GValue -> Ptr MappedFile -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe MappedFile)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr MappedFile)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr MappedFile)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newBoxed MappedFile ptr
else return P.Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList MappedFile
type instance O.AttributeList MappedFile = MappedFileAttributeList
type MappedFileAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_mapped_file_new" g_mapped_file_new ::
CString ->
CInt ->
Ptr (Ptr GError) ->
IO (Ptr MappedFile)
mappedFileNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
[Char]
-> Bool
-> m MappedFile
mappedFileNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[Char] -> Bool -> m MappedFile
mappedFileNew [Char]
filename Bool
writable = IO MappedFile -> m MappedFile
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MappedFile -> m MappedFile) -> IO MappedFile -> m MappedFile
forall a b. (a -> b) -> a -> b
$ do
filename' <- [Char] -> IO CString
stringToCString [Char]
filename
let writable' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
writable
onException (do
result <- propagateGError $ g_mapped_file_new filename' writable'
checkUnexpectedReturnNULL "mappedFileNew" result
result' <- (wrapBoxed MappedFile) result
freeMem filename'
return result'
) (do
freeMem filename'
)
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_mapped_file_new_from_fd" g_mapped_file_new_from_fd ::
Int32 ->
CInt ->
Ptr (Ptr GError) ->
IO (Ptr MappedFile)
mappedFileNewFromFd ::
(B.CallStack.HasCallStack, MonadIO m) =>
Int32
-> Bool
-> m MappedFile
mappedFileNewFromFd :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Int32 -> Bool -> m MappedFile
mappedFileNewFromFd Int32
fd Bool
writable = IO MappedFile -> m MappedFile
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MappedFile -> m MappedFile) -> IO MappedFile -> m MappedFile
forall a b. (a -> b) -> a -> b
$ do
let writable' :: CInt
writable' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
writable
IO MappedFile -> IO () -> IO MappedFile
forall a b. IO a -> IO b -> IO a
onException (do
result <- (Ptr (Ptr GError) -> IO (Ptr MappedFile)) -> IO (Ptr MappedFile)
forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError ((Ptr (Ptr GError) -> IO (Ptr MappedFile)) -> IO (Ptr MappedFile))
-> (Ptr (Ptr GError) -> IO (Ptr MappedFile)) -> IO (Ptr MappedFile)
forall a b. (a -> b) -> a -> b
$ Int32 -> CInt -> Ptr (Ptr GError) -> IO (Ptr MappedFile)
g_mapped_file_new_from_fd Int32
fd CInt
writable'
checkUnexpectedReturnNULL "mappedFileNewFromFd" result
result' <- (wrapBoxed MappedFile) result
return result'
) (do
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
)
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_mapped_file_free" g_mapped_file_free ::
Ptr MappedFile ->
IO ()
{-# DEPRECATED mappedFileFree ["(Since version 2.22)","Use 'GI.GLib.Structs.MappedFile.mappedFileUnref' instead."] #-}
mappedFileFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m ()
mappedFileFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m ()
mappedFileFree MappedFile
file = 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
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
g_mapped_file_free file'
touchManagedPtr file
return ()
#if defined(ENABLE_OVERLOADING)
data MappedFileFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MappedFileFreeMethodInfo MappedFile signature where
overloadedMethod = mappedFileFree
instance O.OverloadedMethodInfo MappedFileFreeMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileFree",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileFree"
})
#endif
foreign import ccall "g_mapped_file_get_bytes" g_mapped_file_get_bytes ::
Ptr MappedFile ->
IO (Ptr GLib.Bytes.Bytes)
mappedFileGetBytes ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m GLib.Bytes.Bytes
mappedFileGetBytes :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m Bytes
mappedFileGetBytes MappedFile
file = IO Bytes -> m Bytes
forall a. IO a -> m a
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
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
result <- g_mapped_file_get_bytes file'
checkUnexpectedReturnNULL "mappedFileGetBytes" result
result' <- (wrapBoxed GLib.Bytes.Bytes) result
touchManagedPtr file
return result'
#if defined(ENABLE_OVERLOADING)
data MappedFileGetBytesMethodInfo
instance (signature ~ (m GLib.Bytes.Bytes), MonadIO m) => O.OverloadedMethod MappedFileGetBytesMethodInfo MappedFile signature where
overloadedMethod = mappedFileGetBytes
instance O.OverloadedMethodInfo MappedFileGetBytesMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileGetBytes",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileGetBytes"
})
#endif
foreign import ccall "g_mapped_file_get_contents" g_mapped_file_get_contents ::
Ptr MappedFile ->
IO CString
mappedFileGetContents ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m (Maybe T.Text)
mappedFileGetContents :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m (Maybe Text)
mappedFileGetContents MappedFile
file = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
result <- g_mapped_file_get_contents file'
maybeResult <- convertIfNonNull result $ \CString
result' -> do
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
return result''
touchManagedPtr file
return maybeResult
#if defined(ENABLE_OVERLOADING)
data MappedFileGetContentsMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m) => O.OverloadedMethod MappedFileGetContentsMethodInfo MappedFile signature where
overloadedMethod = mappedFileGetContents
instance O.OverloadedMethodInfo MappedFileGetContentsMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileGetContents",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileGetContents"
})
#endif
foreign import ccall "g_mapped_file_get_length" g_mapped_file_get_length ::
Ptr MappedFile ->
IO FCT.CSize
mappedFileGetLength ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m FCT.CSize
mappedFileGetLength :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m CSize
mappedFileGetLength MappedFile
file = IO CSize -> m CSize
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO CSize -> m CSize) -> IO CSize -> m CSize
forall a b. (a -> b) -> a -> b
$ do
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
result <- g_mapped_file_get_length file'
touchManagedPtr file
return result
#if defined(ENABLE_OVERLOADING)
data MappedFileGetLengthMethodInfo
instance (signature ~ (m FCT.CSize), MonadIO m) => O.OverloadedMethod MappedFileGetLengthMethodInfo MappedFile signature where
overloadedMethod = mappedFileGetLength
instance O.OverloadedMethodInfo MappedFileGetLengthMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileGetLength",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileGetLength"
})
#endif
foreign import ccall "g_mapped_file_ref" g_mapped_file_ref ::
Ptr MappedFile ->
IO (Ptr MappedFile)
mappedFileRef ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m MappedFile
mappedFileRef :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m MappedFile
mappedFileRef MappedFile
file = IO MappedFile -> m MappedFile
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MappedFile -> m MappedFile) -> IO MappedFile -> m MappedFile
forall a b. (a -> b) -> a -> b
$ do
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
result <- g_mapped_file_ref file'
checkUnexpectedReturnNULL "mappedFileRef" result
result' <- (wrapBoxed MappedFile) result
touchManagedPtr file
return result'
#if defined(ENABLE_OVERLOADING)
data MappedFileRefMethodInfo
instance (signature ~ (m MappedFile), MonadIO m) => O.OverloadedMethod MappedFileRefMethodInfo MappedFile signature where
overloadedMethod = mappedFileRef
instance O.OverloadedMethodInfo MappedFileRefMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileRef",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileRef"
})
#endif
foreign import ccall "g_mapped_file_unref" g_mapped_file_unref ::
Ptr MappedFile ->
IO ()
mappedFileUnref ::
(B.CallStack.HasCallStack, MonadIO m) =>
MappedFile
-> m ()
mappedFileUnref :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
MappedFile -> m ()
mappedFileUnref MappedFile
file = 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
file' <- MappedFile -> IO (Ptr MappedFile)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr MappedFile
file
g_mapped_file_unref file'
touchManagedPtr file
return ()
#if defined(ENABLE_OVERLOADING)
data MappedFileUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod MappedFileUnrefMethodInfo MappedFile signature where
overloadedMethod = mappedFileUnref
instance O.OverloadedMethodInfo MappedFileUnrefMethodInfo MappedFile where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GLib.Structs.MappedFile.mappedFileUnref",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-MappedFile.html#v:mappedFileUnref"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveMappedFileMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveMappedFileMethod "free" o = MappedFileFreeMethodInfo
ResolveMappedFileMethod "ref" o = MappedFileRefMethodInfo
ResolveMappedFileMethod "unref" o = MappedFileUnrefMethodInfo
ResolveMappedFileMethod "getBytes" o = MappedFileGetBytesMethodInfo
ResolveMappedFileMethod "getContents" o = MappedFileGetContentsMethodInfo
ResolveMappedFileMethod "getLength" o = MappedFileGetLengthMethodInfo
ResolveMappedFileMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveMappedFileMethod t MappedFile, O.OverloadedMethod info MappedFile p) => OL.IsLabel t (MappedFile -> 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 ~ ResolveMappedFileMethod t MappedFile, O.OverloadedMethod info MappedFile p, R.HasField t MappedFile p) => R.HasField t MappedFile p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveMappedFileMethod t MappedFile, O.OverloadedMethodInfo info MappedFile) => OL.IsLabel t (O.MethodProxy info MappedFile) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif