{-# 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 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 showList :: [GSList a] -> ShowS $cshowList :: forall a. [GSList a] -> ShowS show :: GSList a -> String $cshow :: forall a. GSList a -> String showsPrec :: Int -> GSList a -> ShowS $cshowsPrec :: forall a. Int -> 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 = (,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (\Ptr (GSList a) hsc_ptr -> forall a b. Storable a => Ptr b -> Int -> IO a peekByteOff Ptr (GSList a) hsc_ptr Int 0) Ptr (GSList a) p forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (\Ptr (GSList a) hsc_ptr -> 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 forall a. Eq a => a -> a -> Bool == forall a. Ptr a nullPtr = forall (f :: * -> *) a. Applicative f => a -> f a pure [] | Bool otherwise = do (Ptr a p, Ptr (GSList a) lst') <- forall a. Ptr (GSList a) -> IO (Ptr a, Ptr (GSList a)) g_slist_uncons Ptr (GSList a) lst (Ptr a p forall a. a -> [a] -> [a] :) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> 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 = forall a. Ptr (GSList a) -> IO [Ptr a] g_slist_to_list Ptr (GSList a) lst forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall a. Ptr (GSList a) -> IO () c_g_slist_free Ptr (GSList a) lst