Update of /cvsroot/gtk2hs/gtk2hs/tools/callbackGen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32363/tools/callbackGen
Modified Files:
Signal.chs-boot2 HookGenerator.hs
Log Message:
GObject.chs.pp: change mkDestructor into mkFunPtrDestructor which is a tad
more abstract (hiding the use of IORefs).
General.chs: change use of mkDestructor to mkFunPtrDestructor and no longer
export mkDestructor.
EntryCompletion.chs.pp, TreeSelection.chs.pp, TreeView.chs.pp: change use of
mkDestructor to mkFunPtrDestructor.
Signal.chs-boot2: Following the same pattern for GClosureNotify as for
GDestroyNotify above define a local copy of mkFunPtrDestructor for use
in signal connection functions.
HookGenerator.hs: change use of mkDestructor to mkFunPtrDestructor following
the same pattern as before. This reduces code duplication a bit (saves
about 350 lines of code).
Index: HookGenerator.hs
===================================================================
RCS file: /cvsroot/gtk2hs/gtk2hs/tools/callbackGen/HookGenerator.hs,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- HookGenerator.hs 20 Dec 2004 03:25:55 -0000 1.3
+++ HookGenerator.hs 27 Feb 2005 19:42:07 -0000 1.4
@@ -463,12 +463,7 @@
indent 4.ss "liftM ".mkMarshRet sig.ss " $".
indent 5.ss "user".mkFuncArgs sig.
indent 3.sc ')'.
- indent 2.ss "dRef <- newIORef nullFunPtr".
- indent 2.ss "dPtr <- mkDestructor $ do".
- indent 3.ss "freeHaskellFunPtr hPtr".
- indent 3.ss "dPtr <- readIORef dRef".
- indent 3.ss "freeHaskellFunPtr dPtr".
- indent 2.ss "writeIORef dRef dPtr".
+ indent 2.ss "dPtr <- mkFunPtrDestructor hPtr".
indent 2.ss "sigId <- withCString signal $ \\nPtr ->".
indent 3.ss "withForeignPtr ((unGObject.toGObject) obj) $ \\objPtr ->".
indent 4.ss "{#call unsafe g_signal_connect_data#} (castPtr objPtr)".
Index: Signal.chs-boot2
===================================================================
RCS file: /cvsroot/gtk2hs/gtk2hs/tools/callbackGen/Signal.chs-boot2,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Signal.chs-boot2 8 Jan 2005 17:27:26 -0000 1.5
+++ Signal.chs-boot2 27 Feb 2005 19:42:07 -0000 1.6
@@ -9,7 +9,7 @@
import System.Glib.FFI
import System.Glib.GError (failOnGError)
-{#import System.Glib.GObject#} hiding (mkDestructor)
+{#import System.Glib.GObject#} hiding (mkFunPtrDestructor)
{#context lib="gtk" prefix="gtk" #}
@@ -27,6 +27,16 @@
foreign import ccall "wrapper" mkDestructor :: IO () -> IO GClosureNotify
+mkFunPtrDestructor :: FunPtr a -> IO GClosureNotify
+mkFunPtrDestructor hPtr = do
+ dRef <- newIORef nullFunPtr
+ dPtr <- mkDestructor $ do
+ freeHaskellFunPtr hPtr
+ dPtr <- readIORef dRef
+ freeHaskellFunPtr dPtr
+ writeIORef dRef dPtr
+ return dPtr
+
disconnect :: GObjectClass obj => ConnectId obj -> IO ()
disconnect (ConnectID handler obj) =
withForeignPtr ((unGObject.toGObject) obj) $ \objPtr ->
|