From: Duncan C. <dun...@wo...> - 2007-05-23 13:42:16
|
Wed May 23 06:41:55 PDT 2007 Duncan Coutts <du...@ha...> * Remove unused GError function hunk ./glib/System/Glib/GError.chs.pp 83 - -- Either\/Maybe) then you should use 'checkGError' or 'checkGErrorWithCont'. + -- Either\/Maybe) then you should use 'checkGError'. hunk ./glib/System/Glib/GError.chs.pp 87 - checkGError, - checkGErrorWithCont - [_$_] + checkGError hunk ./glib/System/Glib/GError.chs.pp 178 - {# call unsafe g_error_free #} (castPtr errPtr) - handler gerror - --- | Like 'checkGError' but with an extra continuation applied to the result. --- This can be useful when something needs to be done after making the call --- to the function that can raise an error but is should only be done if there --- was no error. --- --- Example of use: --- --- > checkGErrorWithCont (\gerrorPtr -> --- > {# call g_some_function_that_might_return_an_error #} a b gerrorPtr) --- > (\(GError domain code msg) -> ...) -- what to do in case of error --- > (\result -> ...) -- what to do after if no error --- -checkGErrorWithCont :: (Ptr (Ptr ()) -> IO b) -> (GError -> IO a) -> (b -> IO a) -> IO a -checkGErrorWithCont action handler cont = - alloca $ \(errPtrPtr :: Ptr (Ptr GError)) -> do - poke errPtrPtr nullPtr - result <- action (castPtr errPtrPtr) - errPtr <- peek errPtrPtr - if errPtr == nullPtr - then cont result - else do gerror <- peek errPtr |