-- GENERATED by C->Haskell Compiler, version 0.13.12 (gtk2hs branch) "Bin IO", 27 May 2012 (Haskell) -- Edit the ORIGNAL .chs file instead! {-# LINE 1 "./System/Glib/GValue.chs" #-} -- -*-haskell-*- -- GIMP Toolkit (GTK) GValue -- -- Author : Axel Simon -- -- Created: 1 June 2001 -- -- Copyright (c) 1999..2002 Axel Simon -- -- This library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- | -- Maintainer : gtk2hs-users@lists.sourceforge.net -- Stability : provisional -- Portability : portable (depends on GHC) -- -- This module implements only the necessities for the GTK binding. -- -- * Everything here is only used by "Graphics.UI.Gtk.TreeList.TreeModel" and -- friends. -- 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" #-} -- | Clear a GValue. -- valueInit :: GValue -> GType -> IO () valueInit gv gt = do -- The g_type field of the value must be zero or g_value_init will fail. (\(GValue arg1) arg2 -> g_value_init arg1 arg2) gv gt return () -- | Get the type of the value stored in the GValue -- valueGetType :: GValue -> IO GType valueGetType (GValue gvPtr) = (\ptr -> do {peekByteOff ptr 0 ::IO CULong}) gvPtr -- | Temporarily allocate a GValue. -- allocaGValue :: (GValue -> IO b) -> IO b allocaGValue body = -- c2hs is broken in that it can't handle arrays of compound arrays in the -- sizeof hook allocaBytes (8+ 2* 8) $ \gvPtr -> do -- The g_type field of the value must be zero or g_value_init will fail. (\ptr val -> do {pokeByteOff ptr 0 (val::CULong)}) gvPtr (0 :: GType) result <- body (GValue gvPtr) (\(GValue arg1) -> g_value_unset arg1) (GValue gvPtr) return 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 ()))