{-# LINE 1 "./System/Glib/GValue.chs" #-}
module System.Glib.GValue (
GValue(GValue),
valueInit,
valueGetType,
allocaGValue
) where
import System.Glib.FFI
import System.Glib.GType (GType)
{-# LINE 40 "./System/Glib/GValue.chs" #-}
newtype GValue = GValue (Ptr (GValue))
{-# LINE 42 "./System/Glib/GValue.chs" #-}
valueInit :: GValue -> GType -> IO ()
valueInit :: GValue -> CUInt -> IO ()
valueInit GValue
gv CUInt
gt = do
(\(GValue Ptr GValue
arg1) CUInt
arg2 -> Ptr GValue -> CUInt -> IO (Ptr GValue)
g_value_init Ptr GValue
arg1 CUInt
arg2) GValue
gv CUInt
gt
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
valueGetType :: GValue -> IO GType
valueGetType :: GValue -> IO CUInt
valueGetType (GValue Ptr GValue
gvPtr) = (\Ptr GValue
ptr -> do {Ptr GValue -> Int -> IO CUInt
forall b. Ptr b -> Int -> IO CUInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GValue
ptr Int
0 ::IO CUInt}) Ptr GValue
gvPtr
allocaGValue :: (GValue -> IO b) -> IO b
allocaGValue :: forall b. (GValue -> IO b) -> IO b
allocaGValue GValue -> IO b
body =
Int -> (Ptr GValue -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes (Int
4Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8) ((Ptr GValue -> IO b) -> IO b) -> (Ptr GValue -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr GValue
gvPtr -> do
(\Ptr GValue
ptr CUInt
val -> do {Ptr GValue -> Int -> CUInt -> IO ()
forall b. Ptr b -> Int -> CUInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GValue
ptr Int
0 (CUInt
val::CUInt)}) Ptr GValue
gvPtr (CUInt
0 :: GType)
b
result <- GValue -> IO b
body (Ptr GValue -> GValue
GValue Ptr GValue
gvPtr)
(\(GValue Ptr GValue
arg1) -> Ptr GValue -> IO ()
g_value_unset Ptr GValue
arg1) (Ptr GValue -> GValue
GValue Ptr GValue
gvPtr)
b -> IO b
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return b
result
foreign import ccall unsafe "g_value_init"
g_value_init :: ((Ptr GValue) -> (CUInt -> (IO (Ptr GValue))))
foreign import ccall unsafe "g_value_unset"
g_value_unset :: ((Ptr GValue) -> (IO ()))