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

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

-- | <http://gts.sourceforge.net/reference/gts-binary-heaps.html>

module Bindings.Gts.BasicMacrosFunctionsAndDataStructures.BinaryHeaps 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 9 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/BinaryHeaps.hsc" #-}

foreign import ccall "gts_heap_new" c'gts_heap_new
  :: C'GCompareFunc -> IO (Ptr C'GtsHeap)
foreign import ccall "&gts_heap_new" p'gts_heap_new
  :: FunPtr (C'GCompareFunc -> IO (Ptr C'GtsHeap))

{-# LINE 11 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/BinaryHeaps.hsc" #-}
foreign import ccall "gts_heap_insert" c'gts_heap_insert
  :: Ptr C'GtsHeap -> C'gpointer -> IO ()
foreign import ccall "&gts_heap_insert" p'gts_heap_insert
  :: FunPtr (Ptr C'GtsHeap -> C'gpointer -> IO ())

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

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

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

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

{-# LINE 16 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/BinaryHeaps.hsc" #-}
foreign import ccall "gts_heap_foreach" c'gts_heap_foreach
  :: Ptr C'GtsHeap -> C'GFunc -> C'gpointer -> IO ()
foreign import ccall "&gts_heap_foreach" p'gts_heap_foreach
  :: FunPtr (Ptr C'GtsHeap -> C'GFunc -> C'gpointer -> IO ())

{-# LINE 17 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/BinaryHeaps.hsc" #-}
foreign import ccall "gts_heap_size" c'gts_heap_size
  :: Ptr C'GtsHeap -> IO C'guint
foreign import ccall "&gts_heap_size" p'gts_heap_size
  :: FunPtr (Ptr C'GtsHeap -> IO C'guint)

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

{-# LINE 19 "src/Bindings/Gts/BasicMacrosFunctionsAndDataStructures/BinaryHeaps.hsc" #-}