{-# LINE 1 "Bindings/Libgit2/Tree.hsc" #-}

{-# LINE 2 "Bindings/Libgit2/Tree.hsc" #-}

{-# LINE 3 "Bindings/Libgit2/Tree.hsc" #-}

{-# LINE 4 "Bindings/Libgit2/Tree.hsc" #-}
module Bindings.Libgit2.Tree 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 6 "Bindings/Libgit2/Tree.hsc" #-}

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
import Bindings.Libgit2.Object
foreign import ccall "inline_git_tree_lookup" c'git_tree_lookup
  :: Ptr (Ptr C'git_tree) -> Ptr C'git_repository -> Ptr C'git_oid -> IO (CInt)

{-# LINE 12 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "inline_git_tree_lookup_prefix" c'git_tree_lookup_prefix
  :: Ptr (Ptr C'git_tree) -> Ptr C'git_repository -> Ptr C'git_oid -> CUInt -> IO (CInt)

{-# LINE 13 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "inline_git_tree_free" c'git_tree_free
  :: Ptr C'git_tree -> IO ()

{-# LINE 14 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_id" c'git_tree_id
  :: Ptr C'git_tree -> IO (Ptr C'git_oid)
foreign import ccall "&git_tree_id" p'git_tree_id
  :: FunPtr (Ptr C'git_tree -> IO (Ptr C'git_oid))

{-# LINE 15 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entrycount" c'git_tree_entrycount
  :: Ptr C'git_tree -> IO (CUInt)
foreign import ccall "&git_tree_entrycount" p'git_tree_entrycount
  :: FunPtr (Ptr C'git_tree -> IO (CUInt))

{-# LINE 16 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_byname" c'git_tree_entry_byname
  :: Ptr C'git_tree -> CString -> IO (Ptr C'git_tree_entry)
foreign import ccall "&git_tree_entry_byname" p'git_tree_entry_byname
  :: FunPtr (Ptr C'git_tree -> CString -> IO (Ptr C'git_tree_entry))

{-# LINE 17 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_byindex" c'git_tree_entry_byindex
  :: Ptr C'git_tree -> CUInt -> IO (Ptr C'git_tree_entry)
foreign import ccall "&git_tree_entry_byindex" p'git_tree_entry_byindex
  :: FunPtr (Ptr C'git_tree -> CUInt -> IO (Ptr C'git_tree_entry))

{-# LINE 18 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_attributes" c'git_tree_entry_attributes
  :: Ptr C'git_tree_entry -> IO (CUInt)
foreign import ccall "&git_tree_entry_attributes" p'git_tree_entry_attributes
  :: FunPtr (Ptr C'git_tree_entry -> IO (CUInt))

{-# LINE 19 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_name" c'git_tree_entry_name
  :: Ptr C'git_tree_entry -> IO (CString)
foreign import ccall "&git_tree_entry_name" p'git_tree_entry_name
  :: FunPtr (Ptr C'git_tree_entry -> IO (CString))

{-# LINE 20 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_id" c'git_tree_entry_id
  :: Ptr C'git_tree_entry -> IO (Ptr C'git_oid)
foreign import ccall "&git_tree_entry_id" p'git_tree_entry_id
  :: FunPtr (Ptr C'git_tree_entry -> IO (Ptr C'git_oid))

{-# LINE 21 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_type" c'git_tree_entry_type
  :: Ptr C'git_tree_entry -> IO (C'git_otype)
foreign import ccall "&git_tree_entry_type" p'git_tree_entry_type
  :: FunPtr (Ptr C'git_tree_entry -> IO (C'git_otype))

{-# LINE 22 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_entry_to_object" c'git_tree_entry_to_object
  :: Ptr (Ptr C'git_object) -> Ptr C'git_repository -> Ptr C'git_tree_entry -> IO (CInt)
foreign import ccall "&git_tree_entry_to_object" p'git_tree_entry_to_object
  :: FunPtr (Ptr (Ptr C'git_object) -> Ptr C'git_repository -> Ptr C'git_tree_entry -> IO (CInt))

{-# LINE 23 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_create_fromindex" c'git_tree_create_fromindex
  :: Ptr C'git_oid -> Ptr C'git_index -> IO (CInt)
foreign import ccall "&git_tree_create_fromindex" p'git_tree_create_fromindex
  :: FunPtr (Ptr C'git_oid -> Ptr C'git_index -> IO (CInt))

{-# LINE 24 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_create" c'git_treebuilder_create
  :: Ptr (Ptr C'git_treebuilder) -> Ptr C'git_tree -> IO (CInt)
foreign import ccall "&git_treebuilder_create" p'git_treebuilder_create
  :: FunPtr (Ptr (Ptr C'git_treebuilder) -> Ptr C'git_tree -> IO (CInt))

{-# LINE 25 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_clear" c'git_treebuilder_clear
  :: Ptr C'git_treebuilder -> IO ()
foreign import ccall "&git_treebuilder_clear" p'git_treebuilder_clear
  :: FunPtr (Ptr C'git_treebuilder -> IO ())

{-# LINE 26 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_free" c'git_treebuilder_free
  :: Ptr C'git_treebuilder -> IO ()
foreign import ccall "&git_treebuilder_free" p'git_treebuilder_free
  :: FunPtr (Ptr C'git_treebuilder -> IO ())

{-# LINE 27 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_get" c'git_treebuilder_get
  :: Ptr C'git_treebuilder -> CString -> IO (Ptr C'git_tree_entry)
foreign import ccall "&git_treebuilder_get" p'git_treebuilder_get
  :: FunPtr (Ptr C'git_treebuilder -> CString -> IO (Ptr C'git_tree_entry))

{-# LINE 28 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_insert" c'git_treebuilder_insert
  :: Ptr (Ptr C'git_tree_entry) -> Ptr C'git_treebuilder -> CString -> Ptr C'git_oid -> CUInt -> IO (CInt)
foreign import ccall "&git_treebuilder_insert" p'git_treebuilder_insert
  :: FunPtr (Ptr (Ptr C'git_tree_entry) -> Ptr C'git_treebuilder -> CString -> Ptr C'git_oid -> CUInt -> IO (CInt))

{-# LINE 29 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_remove" c'git_treebuilder_remove
  :: Ptr C'git_treebuilder -> CString -> IO (CInt)
foreign import ccall "&git_treebuilder_remove" p'git_treebuilder_remove
  :: FunPtr (Ptr C'git_treebuilder -> CString -> IO (CInt))

{-# LINE 30 "Bindings/Libgit2/Tree.hsc" #-}
type C'git_treebuilder_filter_callback = FunPtr (Ptr C'git_tree_entry -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_treebuilder_filter_callback
  :: (Ptr C'git_tree_entry -> Ptr () -> IO CInt) -> IO C'git_treebuilder_filter_callback
foreign import ccall "dynamic" mK'git_treebuilder_filter_callback
  :: C'git_treebuilder_filter_callback -> (Ptr C'git_tree_entry -> Ptr () -> IO CInt)

{-# LINE 31 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_filter" c'git_treebuilder_filter
  :: Ptr C'git_treebuilder -> C'git_treebuilder_filter_callback -> Ptr () -> IO ()
foreign import ccall "&git_treebuilder_filter" p'git_treebuilder_filter
  :: FunPtr (Ptr C'git_treebuilder -> C'git_treebuilder_filter_callback -> Ptr () -> IO ())

{-# LINE 32 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_treebuilder_write" c'git_treebuilder_write
  :: Ptr C'git_oid -> Ptr C'git_repository -> Ptr C'git_treebuilder -> IO (CInt)
foreign import ccall "&git_treebuilder_write" p'git_treebuilder_write
  :: FunPtr (Ptr C'git_oid -> Ptr C'git_repository -> Ptr C'git_treebuilder -> IO (CInt))

{-# LINE 33 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_get_subtree" c'git_tree_get_subtree
  :: Ptr (Ptr C'git_tree) -> Ptr C'git_tree -> CString -> IO (CInt)
foreign import ccall "&git_tree_get_subtree" p'git_tree_get_subtree
  :: FunPtr (Ptr (Ptr C'git_tree) -> Ptr C'git_tree -> CString -> IO (CInt))

{-# LINE 34 "Bindings/Libgit2/Tree.hsc" #-}
{- typedef int (* git_treewalk_cb)(const char * root,
                                git_tree_entry * entry,
                                void * payload); -}
type C'git_treewalk_cb = CInt

{-# LINE 38 "Bindings/Libgit2/Tree.hsc" #-}
{- enum git_treewalk_mode {
    GIT_TREEWALK_PRE = 0, GIT_TREEWALK_POST = 1
}; -}
c'GIT_TREEWALK_PRE = 0
c'GIT_TREEWALK_PRE :: (Num a) => a

{-# LINE 42 "Bindings/Libgit2/Tree.hsc" #-}
c'GIT_TREEWALK_POST = 1
c'GIT_TREEWALK_POST :: (Num a) => a

{-# LINE 43 "Bindings/Libgit2/Tree.hsc" #-}
foreign import ccall "git_tree_walk" c'git_tree_walk
  :: Ptr C'git_tree -> CInt -> CInt -> Ptr () -> IO (CInt)
foreign import ccall "&git_tree_walk" p'git_tree_walk
  :: FunPtr (Ptr C'git_tree -> CInt -> CInt -> Ptr () -> IO (CInt))

{-# LINE 44 "Bindings/Libgit2/Tree.hsc" #-}