{-# LINE 1 "src/System/GLib/SinglyLinkedLists.hsc" #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module System.GLib.SinglyLinkedLists (GSList, g_slist_to_list, g_slist_to_list') where import Foreign.Ptr import Foreign.ForeignPtr hiding (newForeignPtr) import Foreign.Storable newtype GSList a = GSList (ForeignPtr (GSList a)) deriving Int -> GSList a -> ShowS [GSList a] -> ShowS GSList a -> String (Int -> GSList a -> ShowS) -> (GSList a -> String) -> ([GSList a] -> ShowS) -> Show (GSList a) forall a. Int -> GSList a -> ShowS forall a. [GSList a] -> ShowS forall a. GSList a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Int -> GSList a -> ShowS showsPrec :: Int -> GSList a -> ShowS $cshow :: forall a. GSList a -> String show :: GSList a -> String $cshowList :: forall a. [GSList a] -> ShowS showList :: [GSList a] -> ShowS Show foreign import ccall "g_slist_free" c_g_slist_free :: Ptr (GSList a) -> IO () g_slist_uncons :: Ptr (GSList a) -> IO (Ptr a, Ptr (GSList a)) g_slist_uncons :: forall a. Ptr (GSList a) -> IO (Ptr a, Ptr (GSList a)) g_slist_uncons Ptr (GSList a) p = (,) (Ptr a -> Ptr (GSList a) -> (Ptr a, Ptr (GSList a))) -> IO (Ptr a) -> IO (Ptr (GSList a) -> (Ptr a, Ptr (GSList a))) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (\Ptr (GSList a) hsc_ptr -> Ptr (GSList a) -> Int -> IO (Ptr a) forall b. Ptr b -> Int -> IO (Ptr a) forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr (GSList a) hsc_ptr Int 0) Ptr (GSList a) p IO (Ptr (GSList a) -> (Ptr a, Ptr (GSList a))) -> IO (Ptr (GSList a)) -> IO (Ptr a, Ptr (GSList a)) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (\Ptr (GSList a) hsc_ptr -> Ptr (GSList a) -> Int -> IO (Ptr (GSList a)) forall b. Ptr b -> Int -> IO (Ptr (GSList a)) forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr (GSList a) hsc_ptr Int 8) Ptr (GSList a) p {-# LINE 17 "src/System/GLib/SinglyLinkedLists.hsc" #-} g_slist_to_list, g_slist_to_list' :: Ptr (GSList a) -> IO [Ptr a] g_slist_to_list :: forall a. Ptr (GSList a) -> IO [Ptr a] g_slist_to_list Ptr (GSList a) lst | Ptr (GSList a) lst Ptr (GSList a) -> Ptr (GSList a) -> Bool forall a. Eq a => a -> a -> Bool == Ptr (GSList a) forall a. Ptr a nullPtr = [Ptr a] -> IO [Ptr a] forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure [] | Bool otherwise = do (Ptr a p, Ptr (GSList a) lst') <- Ptr (GSList a) -> IO (Ptr a, Ptr (GSList a)) forall a. Ptr (GSList a) -> IO (Ptr a, Ptr (GSList a)) g_slist_uncons Ptr (GSList a) lst (Ptr a p Ptr a -> [Ptr a] -> [Ptr a] forall a. a -> [a] -> [a] :) ([Ptr a] -> [Ptr a]) -> IO [Ptr a] -> IO [Ptr a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (GSList a) -> IO [Ptr a] forall a. Ptr (GSList a) -> IO [Ptr a] g_slist_to_list Ptr (GSList a) lst' g_slist_to_list' :: forall a. Ptr (GSList a) -> IO [Ptr a] g_slist_to_list' Ptr (GSList a) lst = Ptr (GSList a) -> IO [Ptr a] forall a. Ptr (GSList a) -> IO [Ptr a] g_slist_to_list Ptr (GSList a) lst IO [Ptr a] -> IO () -> IO [Ptr a] forall a b. IO a -> IO b -> IO a forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Ptr (GSList a) -> IO () forall a. Ptr (GSList a) -> IO () c_g_slist_free Ptr (GSList a) lst