{-# LINE 1 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}

{-# LINE 2 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}

{-# LINE 3 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}

-- | <http://gts.sourceforge.net/reference/gts-first-in-first-out-heaps.html>

module Bindings.Gts.BasicMacrosFunctionsAndDataStructures.FirstInFirstOutHeaps where
import Bindings.GLib
import Bindings.Gts.Types
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 10 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}

foreign import ccall "gts_fifo_new" c'gts_fifo_new
  :: IO (Ptr C'GtsFifo)
foreign import ccall "&gts_fifo_new" p'gts_fifo_new
  :: FunPtr (IO (Ptr C'GtsFifo))

{-# LINE 12 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_push" c'gts_fifo_push
  :: Ptr C'GtsFifo -> C'gpointer -> IO ()
foreign import ccall "&gts_fifo_push" p'gts_fifo_push
  :: FunPtr (Ptr C'GtsFifo -> C'gpointer -> IO ())

{-# LINE 13 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_pop" c'gts_fifo_pop
  :: Ptr C'GtsFifo -> IO C'gpointer
foreign import ccall "&gts_fifo_pop" p'gts_fifo_pop
  :: FunPtr (Ptr C'GtsFifo -> IO C'gpointer)

{-# LINE 14 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_top" c'gts_fifo_top
  :: Ptr C'GtsFifo -> IO C'gpointer
foreign import ccall "&gts_fifo_top" p'gts_fifo_top
  :: FunPtr (Ptr C'GtsFifo -> IO C'gpointer)

{-# LINE 15 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_size" c'gts_fifo_size
  :: Ptr C'GtsFifo -> IO C'guint
foreign import ccall "&gts_fifo_size" p'gts_fifo_size
  :: FunPtr (Ptr C'GtsFifo -> IO C'guint)

{-# LINE 16 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_foreach" c'gts_fifo_foreach
  :: Ptr C'GtsFifo -> C'GtsFunc -> C'gpointer -> IO ()
foreign import ccall "&gts_fifo_foreach" p'gts_fifo_foreach
  :: FunPtr (Ptr C'GtsFifo -> C'GtsFunc -> C'gpointer -> IO ())

{-# LINE 17 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_is_empty" c'gts_fifo_is_empty
  :: Ptr C'GtsFifo -> IO C'gboolean
foreign import ccall "&gts_fifo_is_empty" p'gts_fifo_is_empty
  :: FunPtr (Ptr C'GtsFifo -> IO C'gboolean)

{-# LINE 18 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_reverse" c'gts_fifo_reverse
  :: Ptr C'GtsFifo -> IO ()
foreign import ccall "&gts_fifo_reverse" p'gts_fifo_reverse
  :: FunPtr (Ptr C'GtsFifo -> IO ())

{-# LINE 19 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_write" c'gts_fifo_write
  :: Ptr C'GtsFifo -> Ptr CFile -> IO ()
foreign import ccall "&gts_fifo_write" p'gts_fifo_write
  :: FunPtr (Ptr C'GtsFifo -> Ptr CFile -> IO ())

{-# LINE 20 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}
foreign import ccall "gts_fifo_destroy" c'gts_fifo_destroy
  :: Ptr C'GtsFifo -> IO ()
foreign import ccall "&gts_fifo_destroy" p'gts_fifo_destroy
  :: FunPtr (Ptr C'GtsFifo -> IO ())

{-# LINE 21 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/FirstInFirstOutHeaps.hsc" #-}