{-# 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 -> CULong -> IO ()
valueInit GValue
gv CULong
gt = do
(\(GValue Ptr GValue
arg1) CULong
arg2 -> Ptr GValue -> CULong -> IO (Ptr GValue)
g_value_init Ptr GValue
arg1 CULong
arg2) GValue
gv CULong
gt
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
valueGetType :: GValue -> IO GType
valueGetType :: GValue -> IO CULong
valueGetType (GValue Ptr GValue
gvPtr) = (\Ptr GValue
ptr -> do {Ptr GValue -> Int -> IO CULong
forall b. Ptr b -> Int -> IO CULong
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr GValue
ptr Int
0 ::IO CULong}) 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
8Int -> 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 CULong
val -> do {Ptr GValue -> Int -> CULong -> IO ()
forall b. Ptr b -> Int -> CULong -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr GValue
ptr Int
0 (CULong
val::CULong)}) Ptr GValue
gvPtr (CULong
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) -> (CULong -> (IO (Ptr GValue))))
foreign import ccall unsafe "g_value_unset"
g_value_unset :: ((Ptr GValue) -> (IO ()))