{-# LINE 1 "src/System/GLib/ErrorReporting.hsc" #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module System.GLib.ErrorReporting ( GError(..), mkGError, gErrorReport ) where import Foreign.Ptr import Foreign.Storable import Foreign.C.Types import Foreign.C.String import System.GLib.Quarks data GError = GError { GError -> GQuark gErrorDomain :: GQuark, GError -> CInt gErrorCode :: CInt, GError -> String gErrorMessage :: String } deriving Int -> GError -> ShowS [GError] -> ShowS GError -> String (Int -> GError -> ShowS) -> (GError -> String) -> ([GError] -> ShowS) -> Show GError forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> GError -> ShowS showsPrec :: Int -> GError -> ShowS $cshow :: GError -> String show :: GError -> String $cshowList :: [GError] -> ShowS showList :: [GError] -> ShowS Show mkGError :: Ptr GError -> IO GError mkGError :: Ptr GError -> IO GError mkGError Ptr GError p = do GError ge <- GQuark -> CInt -> String -> GError GError (GQuark -> CInt -> String -> GError) -> IO GQuark -> IO (CInt -> String -> GError) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (\Ptr GError hsc_ptr -> Ptr GError -> Int -> IO GQuark forall b. Ptr b -> Int -> IO GQuark forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr GError hsc_ptr Int 0) Ptr GError p {-# LINE 24 "src/System/GLib/ErrorReporting.hsc" #-} IO (CInt -> String -> GError) -> IO CInt -> IO (String -> GError) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (\Ptr GError hsc_ptr -> Ptr GError -> Int -> IO CInt forall b. Ptr b -> Int -> IO CInt forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr GError hsc_ptr Int 4) Ptr GError p {-# LINE 25 "src/System/GLib/ErrorReporting.hsc" #-} IO (String -> GError) -> IO String -> IO GError forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (CString -> IO String peekCString (CString -> IO String) -> IO CString -> IO String forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< (\Ptr GError hsc_ptr -> Ptr GError -> Int -> IO CString forall b. Ptr b -> Int -> IO CString forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr GError hsc_ptr Int 8) Ptr GError p) {-# LINE 26 "src/System/GLib/ErrorReporting.hsc" #-} Ptr GError -> IO () c_g_error_free Ptr GError p GError -> IO GError forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure GError ge foreign import ccall "g_error_free" c_g_error_free :: Ptr GError -> IO () gErrorReport :: GError -> String gErrorReport :: GError -> String gErrorReport (GError GQuark d CInt c String m) = GQuark -> String gQuarkToString GQuark d String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ CInt -> String forall a. Show a => a -> String show CInt c String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String m