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
import Bindings.GLib.Fundamentals
import Bindings.GLib.DataTypes.BalancedBinaryTrees
data C'GNode = C'GNode{
c'GNode'data :: C'gpointer
,
c'GNode'next :: Ptr C'GNode
,
c'GNode'prev :: Ptr C'GNode
,
c'GNode'parent :: Ptr C'GNode
,
c'GNode'children :: Ptr C'GNode
} 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 ()
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))
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))
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)
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))
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))
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))
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))
foreign import ccall "inline_g_node_append" c'g_node_append
:: Ptr C'GNode -> Ptr C'GNode -> IO (Ptr C'GNode)
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))
foreign import ccall "inline_g_node_insert_data" c'g_node_insert_data
:: Ptr C'GNode -> C'gint -> C'gpointer -> IO (Ptr C'GNode)
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)
foreign import ccall "inline_g_node_append_data" c'g_node_append_data
:: Ptr C'GNode -> C'gpointer -> IO (Ptr C'GNode)
foreign import ccall "inline_g_node_prepend_data" c'g_node_prepend_data
:: Ptr C'GNode -> C'gpointer -> IO (Ptr C'GNode)
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 ())
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 ())
type C'GTraverseFlags = CUInt
c'G_TRAVERSE_LEAVES = 1
c'G_TRAVERSE_LEAVES :: (Num a) => a
c'G_TRAVERSE_NON_LEAVES = 2
c'G_TRAVERSE_NON_LEAVES :: (Num a) => a
c'G_TRAVERSE_ALL = 3
c'G_TRAVERSE_ALL :: (Num a) => a
c'G_TRAVERSE_MASK = 3
c'G_TRAVERSE_MASK :: (Num a) => a
c'G_TRAVERSE_LEAFS = 1
c'G_TRAVERSE_LEAFS :: (Num a) => a
c'G_TRAVERSE_NON_LEAFS = 2
c'G_TRAVERSE_NON_LEAFS :: (Num a) => a
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)
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 ())
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 ())
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))
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))
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))
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)
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)
foreign import ccall "inline_g_node_first_child" c'g_node_first_child
:: Ptr C'GNode -> IO (Ptr C'GNode)
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))
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))
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))
foreign import ccall "inline_g_node_next_sibling" c'g_node_next_sibling
:: Ptr C'GNode -> IO (Ptr C'GNode)
foreign import ccall "inline_g_node_prev_sibling" c'g_node_prev_sibling
:: Ptr C'GNode -> IO (Ptr C'GNode)
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))
foreign import ccall "inline_G_NODE_IS_LEAF" c'G_NODE_IS_LEAF
:: Ptr C'GNode -> IO C'gboolean
foreign import ccall "inline_G_NODE_IS_ROOT" c'G_NODE_IS_ROOT
:: Ptr C'GNode -> IO C'gboolean
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)
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)
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)
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)
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)
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 ())
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 ())