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

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

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

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

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

data C'GNode = C'GNode{
{-# LINE 12 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

  c'GNode'data :: C'gpointer
{-# LINE 13 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
,
  c'GNode'next :: Ptr C'GNode
{-# LINE 14 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
,
  c'GNode'prev :: Ptr C'GNode
{-# LINE 15 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
,
  c'GNode'parent :: Ptr C'GNode
{-# LINE 16 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
,
  c'GNode'children :: Ptr C'GNode
{-# LINE 17 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 18 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

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

{-# LINE 21 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 23 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "g_node_copy_deep" c'g_node_copy_deep
  :: Ptr C'GNode -> C'GCopyFunc -> C'gpointer -> IO (Ptr C'GNode)
foreign import ccall "&g_node_copy_deep" p'g_node_copy_deep
  :: FunPtr (Ptr C'GNode -> C'GCopyFunc -> C'gpointer -> IO (Ptr C'GNode))

{-# LINE 25 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "g_node_insert" c'g_node_insert
  :: Ptr C'GNode -> C'gint -> Ptr C'GNode -> IO (Ptr C'GNode)
foreign import ccall "&g_node_insert" p'g_node_insert
  :: FunPtr (Ptr C'GNode -> C'gint -> Ptr C'GNode -> IO (Ptr C'GNode))

{-# LINE 27 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_insert_before" c'g_node_insert_before
  :: Ptr C'GNode -> Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GNode)
foreign import ccall "&g_node_insert_before" p'g_node_insert_before
  :: FunPtr (Ptr C'GNode -> Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GNode))

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

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

foreign import ccall "inline_g_node_append" c'g_node_append
  :: Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GNode)

{-# LINE 31 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 33 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "inline_g_node_insert_data" c'g_node_insert_data
  :: Ptr C'GNode -> C'gint -> C'gpointer -> IO (Ptr C'GNode)

{-# LINE 35 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "inline_g_node_insert_data_before" c'g_node_insert_data_before
  :: Ptr C'GNode -> Ptr C'GNode -> C'gpointer -> IO (Ptr C'GNode)

{-# LINE 36 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "inline_g_node_append_data" c'g_node_append_data
  :: Ptr C'GNode -> C'gpointer -> IO (Ptr C'GNode)

{-# LINE 37 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "inline_g_node_prepend_data" c'g_node_prepend_data
  :: Ptr C'GNode -> C'gpointer -> IO (Ptr C'GNode)

{-# LINE 38 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 40 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_traverse" c'g_node_traverse
  :: Ptr C'GNode -> C'GTraverseType -> C'GTraverseFlags -> C'gint -> C'GNodeTraverseFunc -> C'gpointer -> IO ()
foreign import ccall "&g_node_traverse" p'g_node_traverse
  :: FunPtr (Ptr C'GNode -> C'GTraverseType -> C'GTraverseFlags -> C'gint -> C'GNodeTraverseFunc -> C'gpointer -> IO ())

{-# LINE 41 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

type C'GTraverseFlags = CUInt

{-# LINE 43 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_LEAVES = 1
c'G_TRAVERSE_LEAVES :: (Num a) => a

{-# LINE 44 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_NON_LEAVES = 2
c'G_TRAVERSE_NON_LEAVES :: (Num a) => a

{-# LINE 45 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_ALL = 3
c'G_TRAVERSE_ALL :: (Num a) => a

{-# LINE 46 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_MASK = 3
c'G_TRAVERSE_MASK :: (Num a) => a

{-# LINE 47 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_LEAFS = 1
c'G_TRAVERSE_LEAFS :: (Num a) => a

{-# LINE 48 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
c'G_TRAVERSE_NON_LEAFS = 2
c'G_TRAVERSE_NON_LEAFS :: (Num a) => a

{-# LINE 49 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 51 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "g_node_children_foreach" c'g_node_children_foreach
  :: Ptr C'GNode -> C'GTraverseFlags -> C'GNodeForeachFunc -> C'gpointer -> IO ()
foreign import ccall "&g_node_children_foreach" p'g_node_children_foreach
  :: FunPtr (Ptr C'GNode -> C'GTraverseFlags -> C'GNodeForeachFunc -> C'gpointer -> IO ())

{-# LINE 53 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

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

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

{-# LINE 57 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_find" c'g_node_find
  :: Ptr C'GNode -> C'GTraverseType -> C'GTraverseFlags -> C'gpointer -> IO (Ptr C'GNode)
foreign import ccall "&g_node_find" p'g_node_find
  :: FunPtr (Ptr C'GNode -> C'GTraverseType -> C'GTraverseFlags -> C'gpointer -> IO (Ptr C'GNode))

{-# LINE 58 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_find_child" c'g_node_find_child
  :: Ptr C'GNode -> C'GTraverseFlags -> C'gpointer -> IO (Ptr C'GNode)
foreign import ccall "&g_node_find_child" p'g_node_find_child
  :: FunPtr (Ptr C'GNode -> C'GTraverseFlags -> C'gpointer -> IO (Ptr C'GNode))

{-# LINE 59 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_child_index" c'g_node_child_index
  :: Ptr C'GNode -> C'gpointer -> IO C'gint
foreign import ccall "&g_node_child_index" p'g_node_child_index
  :: FunPtr (Ptr C'GNode -> C'gpointer -> IO C'gint)

{-# LINE 60 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_child_position" c'g_node_child_position
  :: Ptr C'GNode -> Ptr C'GNode -> IO C'gint
foreign import ccall "&g_node_child_position" p'g_node_child_position
  :: FunPtr (Ptr C'GNode -> Ptr C'GNode -> IO C'gint)

{-# LINE 61 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "inline_g_node_first_child" c'g_node_first_child
  :: Ptr C'GNode -> IO (Ptr C'GNode)

{-# LINE 63 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 65 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_nth_child" c'g_node_nth_child
  :: Ptr C'GNode -> C'guint -> IO (Ptr C'GNode)
foreign import ccall "&g_node_nth_child" p'g_node_nth_child
  :: FunPtr (Ptr C'GNode -> C'guint -> IO (Ptr C'GNode))

{-# LINE 66 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_first_sibling" c'g_node_first_sibling
  :: Ptr C'GNode -> IO (Ptr C'GNode)
foreign import ccall "&g_node_first_sibling" p'g_node_first_sibling
  :: FunPtr (Ptr C'GNode -> IO (Ptr C'GNode))

{-# LINE 67 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "inline_g_node_next_sibling" c'g_node_next_sibling
  :: Ptr C'GNode -> IO (Ptr C'GNode)

{-# LINE 69 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "inline_g_node_prev_sibling" c'g_node_prev_sibling
  :: Ptr C'GNode -> IO (Ptr C'GNode)

{-# LINE 70 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 72 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

foreign import ccall "inline_G_NODE_IS_LEAF" c'G_NODE_IS_LEAF
  :: Ptr C'GNode -> IO C'gboolean

{-# LINE 74 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "inline_G_NODE_IS_ROOT" c'G_NODE_IS_ROOT
  :: Ptr C'GNode -> IO C'gboolean

{-# LINE 75 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 77 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_n_nodes" c'g_node_n_nodes
  :: Ptr C'GNode -> C'GTraverseFlags -> IO C'guint
foreign import ccall "&g_node_n_nodes" p'g_node_n_nodes
  :: FunPtr (Ptr C'GNode -> C'GTraverseFlags -> IO C'guint)

{-# LINE 78 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_n_children" c'g_node_n_children
  :: Ptr C'GNode -> IO C'guint
foreign import ccall "&g_node_n_children" p'g_node_n_children
  :: FunPtr (Ptr C'GNode -> IO C'guint)

{-# LINE 79 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_is_ancestor" c'g_node_is_ancestor
  :: Ptr C'GNode -> Ptr C'GNode -> IO C'gboolean
foreign import ccall "&g_node_is_ancestor" p'g_node_is_ancestor
  :: FunPtr (Ptr C'GNode -> Ptr C'GNode -> IO C'gboolean)

{-# LINE 80 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_max_height" c'g_node_max_height
  :: Ptr C'GNode -> IO C'guint
foreign import ccall "&g_node_max_height" p'g_node_max_height
  :: FunPtr (Ptr C'GNode -> IO C'guint)

{-# LINE 81 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}

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

{-# LINE 83 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}
foreign import ccall "g_node_destroy" c'g_node_destroy
  :: Ptr C'GNode -> IO ()
foreign import ccall "&g_node_destroy" p'g_node_destroy
  :: FunPtr (Ptr C'GNode -> IO ())

{-# LINE 84 "src/Bindings/GLib/DataTypes/NAryTrees.hsc" #-}