{-# LINE 1 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

{-# LINE 2 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

{-# LINE 3 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

-- | <http://library.gnome.org/devel/glib/stable/glib-Doubly-Linked-Lists.html>

module Bindings.GLib.DataTypes.DoublyLinkedLists where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 8 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
import Bindings.GLib.Fundamentals

data C'GList = C'GList{
{-# LINE 11 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

  c'GList'data :: C'gpointer
{-# LINE 12 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
,
  c'GList'next :: Ptr C'GList
{-# LINE 13 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
,
  c'GList'prev :: Ptr C'GList
{-# LINE 14 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'GList where
  sizeOf _ = 12
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'GList v0 v1 v2
  poke p (C'GList v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 15 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_append" c'g_list_append
  :: Ptr C'GList -> C'gpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_append" p'g_list_append
  :: FunPtr (Ptr C'GList -> C'gpointer -> IO (Ptr C'GList))

{-# LINE 17 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_prepend" c'g_list_prepend
  :: Ptr C'GList -> C'gpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_prepend" p'g_list_prepend
  :: FunPtr (Ptr C'GList -> C'gpointer -> IO (Ptr C'GList))

{-# LINE 18 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_insert" c'g_list_insert
  :: Ptr C'GList -> C'gpointer -> C'gint -> IO (Ptr C'GList)
foreign import ccall "&g_list_insert" p'g_list_insert
  :: FunPtr (Ptr C'GList -> C'gpointer -> C'gint -> IO (Ptr C'GList))

{-# LINE 19 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_insert_before" c'g_list_insert_before
  :: Ptr C'GList -> Ptr C'GList -> C'gpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_insert_before" p'g_list_insert_before
  :: FunPtr (Ptr C'GList -> Ptr C'GList -> C'gpointer -> IO (Ptr C'GList))

{-# LINE 20 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_insert_sorted" c'g_list_insert_sorted
  :: Ptr C'GList -> C'gpointer -> C'GCompareFunc -> IO (Ptr C'GList)
foreign import ccall "&g_list_insert_sorted" p'g_list_insert_sorted
  :: FunPtr (Ptr C'GList -> C'gpointer -> C'GCompareFunc -> IO (Ptr C'GList))

{-# LINE 21 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_remove" c'g_list_remove
  :: Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_remove" p'g_list_remove
  :: FunPtr (Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList))

{-# LINE 22 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_remove_link" c'g_list_remove_link
  :: Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_remove_link" p'g_list_remove_link
  :: FunPtr (Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 23 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_delete_link" c'g_list_delete_link
  :: Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_delete_link" p'g_list_delete_link
  :: FunPtr (Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 24 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_remove_all" c'g_list_remove_all
  :: Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_remove_all" p'g_list_remove_all
  :: FunPtr (Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList))

{-# LINE 25 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_free" c'g_list_free
  :: Ptr C'GList -> IO ()
foreign import ccall "&g_list_free" p'g_list_free
  :: FunPtr (Ptr C'GList -> IO ())

{-# LINE 26 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_alloc" c'g_list_alloc
  :: IO (Ptr C'GList)
foreign import ccall "&g_list_alloc" p'g_list_alloc
  :: FunPtr (IO (Ptr C'GList))

{-# LINE 28 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_free_1" c'g_list_free_1
  :: Ptr C'GList -> IO ()
foreign import ccall "&g_list_free_1" p'g_list_free_1
  :: FunPtr (Ptr C'GList -> IO ())

{-# LINE 29 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "inline_g_list_free1" c'g_list_free1
  :: Ptr C'GList -> IO ()

{-# LINE 30 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_length" c'g_list_length
  :: Ptr C'GList -> IO C'guint
foreign import ccall "&g_list_length" p'g_list_length
  :: FunPtr (Ptr C'GList -> IO C'guint)

{-# LINE 32 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_copy" c'g_list_copy
  :: Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_copy" p'g_list_copy
  :: FunPtr (Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 33 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_reverse" c'g_list_reverse
  :: Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_reverse" p'g_list_reverse
  :: FunPtr (Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 34 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_sort" c'g_list_sort
  :: Ptr C'GList -> C'GCompareFunc -> IO (Ptr C'GList)
foreign import ccall "&g_list_sort" p'g_list_sort
  :: FunPtr (Ptr C'GList -> C'GCompareFunc -> IO (Ptr C'GList))

{-# LINE 35 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

type C'GCompareFunc = FunPtr (C'gconstpointer -> C'gconstpointer -> IO C'gint)
foreign import ccall "wrapper" mk'GCompareFunc
  :: (C'gconstpointer -> C'gconstpointer -> IO C'gint) -> IO C'GCompareFunc
foreign import ccall "dynamic" mK'GCompareFunc
  :: C'GCompareFunc -> (C'gconstpointer -> C'gconstpointer -> IO C'gint)

{-# LINE 37 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_insert_sorted_with_data" c'g_list_insert_sorted_with_data
  :: Ptr C'GList -> C'gpointer -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_insert_sorted_with_data" p'g_list_insert_sorted_with_data
  :: FunPtr (Ptr C'GList -> C'gpointer -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GList))

{-# LINE 39 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_sort_with_data" c'g_list_sort_with_data
  :: Ptr C'GList -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_sort_with_data" p'g_list_sort_with_data
  :: FunPtr (Ptr C'GList -> C'GCompareDataFunc -> C'gpointer -> IO (Ptr C'GList))

{-# LINE 40 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

type C'GCompareDataFunc = FunPtr (C'gconstpointer -> C'gconstpointer -> C'gpointer -> IO C'gint)
foreign import ccall "wrapper" mk'GCompareDataFunc
  :: (C'gconstpointer -> C'gconstpointer -> C'gpointer -> IO C'gint) -> IO C'GCompareDataFunc
foreign import ccall "dynamic" mK'GCompareDataFunc
  :: C'GCompareDataFunc -> (C'gconstpointer -> C'gconstpointer -> C'gpointer -> IO C'gint)

{-# LINE 42 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_concat" c'g_list_concat
  :: Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_concat" p'g_list_concat
  :: FunPtr (Ptr C'GList -> Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 44 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_foreach" c'g_list_foreach
  :: Ptr C'GList -> C'GFunc -> C'gpointer -> IO ()
foreign import ccall "&g_list_foreach" p'g_list_foreach
  :: FunPtr (Ptr C'GList -> C'GFunc -> C'gpointer -> IO ())

{-# LINE 45 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

type C'GFunc = FunPtr (C'gpointer -> C'gpointer -> IO ())
foreign import ccall "wrapper" mk'GFunc
  :: (C'gpointer -> C'gpointer -> IO ()) -> IO C'GFunc
foreign import ccall "dynamic" mK'GFunc
  :: C'GFunc -> (C'gpointer -> C'gpointer -> IO ())

{-# LINE 47 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_first" c'g_list_first
  :: Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_first" p'g_list_first
  :: FunPtr (Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 49 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_last" c'g_list_last
  :: Ptr C'GList -> IO (Ptr C'GList)
foreign import ccall "&g_list_last" p'g_list_last
  :: FunPtr (Ptr C'GList -> IO (Ptr C'GList))

{-# LINE 50 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "inline_g_list_previous" c'g_list_previous
  :: Ptr C'GList -> IO (Ptr C'GList)

{-# LINE 51 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "inline_g_list_next" c'g_list_next
  :: Ptr C'GList -> IO (Ptr C'GList)

{-# LINE 52 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_nth" c'g_list_nth
  :: Ptr C'GList -> C'guint -> IO (Ptr C'GList)
foreign import ccall "&g_list_nth" p'g_list_nth
  :: FunPtr (Ptr C'GList -> C'guint -> IO (Ptr C'GList))

{-# LINE 53 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_nth_data" c'g_list_nth_data
  :: Ptr C'GList -> C'guint -> IO C'gpointer
foreign import ccall "&g_list_nth_data" p'g_list_nth_data
  :: FunPtr (Ptr C'GList -> C'guint -> IO C'gpointer)

{-# LINE 54 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_nth_prev" c'g_list_nth_prev
  :: Ptr C'GList -> C'guint -> IO (Ptr C'GList)
foreign import ccall "&g_list_nth_prev" p'g_list_nth_prev
  :: FunPtr (Ptr C'GList -> C'guint -> IO (Ptr C'GList))

{-# LINE 55 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}

foreign import ccall "g_list_find" c'g_list_find
  :: Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList)
foreign import ccall "&g_list_find" p'g_list_find
  :: FunPtr (Ptr C'GList -> C'gconstpointer -> IO (Ptr C'GList))

{-# LINE 57 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_find_custom" c'g_list_find_custom
  :: Ptr C'GList -> C'gconstpointer -> C'GCompareFunc -> IO (Ptr C'GList)
foreign import ccall "&g_list_find_custom" p'g_list_find_custom
  :: FunPtr (Ptr C'GList -> C'gconstpointer -> C'GCompareFunc -> IO (Ptr C'GList))

{-# LINE 58 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_position" c'g_list_position
  :: Ptr C'GList -> Ptr C'GList -> IO C'gint
foreign import ccall "&g_list_position" p'g_list_position
  :: FunPtr (Ptr C'GList -> Ptr C'GList -> IO C'gint)

{-# LINE 59 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}
foreign import ccall "g_list_index" c'g_list_index
  :: Ptr C'GList -> C'gconstpointer -> IO C'gint
foreign import ccall "&g_list_index" p'g_list_index
  :: FunPtr (Ptr C'GList -> C'gconstpointer -> IO C'gint)

{-# LINE 60 "src/Bindings/GLib/DataTypes/DoublyLinkedLists.hsc" #-}