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

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

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

-- | <http://library.gnome.org/devel/glib/stable/glib-Balanced-Binary-Trees.html>

module Bindings.GLib.DataTypes.BalancedBinaryTrees 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/BalancedBinaryTrees.hsc" #-}
import Bindings.GLib.Fundamentals
import Bindings.GLib.DataTypes.Datasets
import Bindings.GLib.DataTypes.DoublyLinkedLists

data C'GTree = C'GTree

{-# LINE 13 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}

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

{-# LINE 15 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_ref" c'g_tree_ref
  :: Ptr C'GTree -> IO (Ptr C'GTree)
foreign import ccall "&g_tree_ref" p'g_tree_ref
  :: FunPtr (Ptr C'GTree -> IO (Ptr C'GTree))

{-# LINE 16 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_unref" c'g_tree_unref
  :: Ptr C'GTree -> IO ()
foreign import ccall "&g_tree_unref" p'g_tree_unref
  :: FunPtr (Ptr C'GTree -> IO ())

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

{-# LINE 18 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_new_full" c'g_tree_new_full
  :: C'GCompareDataFunc -> C'gpointer -> C'GDestroyNotify -> C'GDestroyNotify -> IO (Ptr C'GTree)
foreign import ccall "&g_tree_new_full" p'g_tree_new_full
  :: FunPtr (C'GCompareDataFunc -> C'gpointer -> C'GDestroyNotify -> C'GDestroyNotify -> IO (Ptr C'GTree))

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

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

{-# LINE 21 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_nnodes" c'g_tree_nnodes
  :: Ptr C'GTree -> IO C'gint
foreign import ccall "&g_tree_nnodes" p'g_tree_nnodes
  :: FunPtr (Ptr C'GTree -> IO C'gint)

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

{-# LINE 23 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_lookup" c'g_tree_lookup
  :: Ptr C'GTree -> C'gconstpointer -> IO C'gpointer
foreign import ccall "&g_tree_lookup" p'g_tree_lookup
  :: FunPtr (Ptr C'GTree -> C'gconstpointer -> IO C'gpointer)

{-# LINE 24 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_lookup_extended" c'g_tree_lookup_extended
  :: Ptr C'GTree -> C'gconstpointer -> Ptr C'gpointer -> Ptr C'gpointer -> IO C'gboolean
foreign import ccall "&g_tree_lookup_extended" p'g_tree_lookup_extended
  :: FunPtr (Ptr C'GTree -> C'gconstpointer -> Ptr C'gpointer -> Ptr C'gpointer -> IO C'gboolean)

{-# LINE 25 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_foreach" c'g_tree_foreach
  :: Ptr C'GTree -> C'GTraverseFunc -> C'gpointer -> IO ()
foreign import ccall "&g_tree_foreach" p'g_tree_foreach
  :: FunPtr (Ptr C'GTree -> C'GTraverseFunc -> C'gpointer -> IO ())

{-# LINE 26 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_traverse" c'g_tree_traverse
  :: Ptr C'GTree -> C'GTraverseFunc -> C'GTraverseType -> C'gpointer -> IO ()
foreign import ccall "&g_tree_traverse" p'g_tree_traverse
  :: FunPtr (Ptr C'GTree -> C'GTraverseFunc -> C'GTraverseType -> C'gpointer -> IO ())

{-# LINE 27 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}

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

{-# LINE 29 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}

type C'GTraverseType = CUInt

{-# LINE 31 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
c'G_IN_ORDER = 0
c'G_IN_ORDER :: (Num a) => a

{-# LINE 32 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
c'G_PRE_ORDER = 1
c'G_PRE_ORDER :: (Num a) => a

{-# LINE 33 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
c'G_POST_ORDER = 2
c'G_POST_ORDER :: (Num a) => a

{-# LINE 34 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
c'G_LEVEL_ORDER = 3
c'G_LEVEL_ORDER :: (Num a) => a

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

foreign import ccall "g_tree_search" c'g_tree_search
  :: Ptr C'GTree -> C'GCompareFunc -> C'gconstpointer -> IO C'gpointer
foreign import ccall "&g_tree_search" p'g_tree_search
  :: FunPtr (Ptr C'GTree -> C'GCompareFunc -> C'gconstpointer -> IO C'gpointer)

{-# LINE 37 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_remove" c'g_tree_remove
  :: Ptr C'GTree -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_tree_remove" p'g_tree_remove
  :: FunPtr (Ptr C'GTree -> C'gconstpointer -> IO C'gboolean)

{-# LINE 38 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_steal" c'g_tree_steal
  :: Ptr C'GTree -> C'gconstpointer -> IO C'gboolean
foreign import ccall "&g_tree_steal" p'g_tree_steal
  :: FunPtr (Ptr C'GTree -> C'gconstpointer -> IO C'gboolean)

{-# LINE 39 "src/Bindings/GLib/DataTypes/BalancedBinaryTrees.hsc" #-}
foreign import ccall "g_tree_destroy" c'g_tree_destroy
  :: Ptr C'GTree -> IO ()
foreign import ccall "&g_tree_destroy" p'g_tree_destroy
  :: FunPtr (Ptr C'GTree -> IO ())

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