{-# LINE 1 "Bindings/Libgit2/Stash.hsc" #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LINE 2 "Bindings/Libgit2/Stash.hsc" #-}

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

{-# LINE 4 "Bindings/Libgit2/Stash.hsc" #-}

{-# LINE 5 "Bindings/Libgit2/Stash.hsc" #-}
module Bindings.Libgit2.Stash where
import Foreign.Ptr
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 "Bindings/Libgit2/Stash.hsc" #-}

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
{- typedef enum {
            GIT_STASH_DEFAULT = 0,
            GIT_STASH_KEEP_INDEX = 1 << 0,
            GIT_STASH_INCLUDE_UNTRACKED = 1 << 1,
            GIT_STASH_INCLUDE_IGNORED = 1 << 2
        } git_stash_flags; -}
type C'git_stash_flags = CUInt

{-# LINE 19 "Bindings/Libgit2/Stash.hsc" #-}
c'GIT_STASH_DEFAULT = 0
c'GIT_STASH_DEFAULT :: (Num a) => a

{-# LINE 20 "Bindings/Libgit2/Stash.hsc" #-}
c'GIT_STASH_KEEP_INDEX = 1
c'GIT_STASH_KEEP_INDEX :: (Num a) => a

{-# LINE 21 "Bindings/Libgit2/Stash.hsc" #-}
c'GIT_STASH_INCLUDE_UNTRACKED = 2
c'GIT_STASH_INCLUDE_UNTRACKED :: (Num a) => a

{-# LINE 22 "Bindings/Libgit2/Stash.hsc" #-}
c'GIT_STASH_INCLUDE_IGNORED = 4
c'GIT_STASH_INCLUDE_IGNORED :: (Num a) => a

{-# LINE 23 "Bindings/Libgit2/Stash.hsc" #-}
foreign import ccall "git_stash_save" c'git_stash_save
  :: Ptr C'git_oid -> Ptr C'git_repository -> Ptr C'git_signature -> CString -> CUInt -> IO (CInt)
foreign import ccall "&git_stash_save" p'git_stash_save
  :: FunPtr (Ptr C'git_oid -> Ptr C'git_repository -> Ptr C'git_signature -> CString -> CUInt -> IO (CInt))

{-# LINE 24 "Bindings/Libgit2/Stash.hsc" #-}
{- typedef int (* git_stash_cb)(size_t index,
                             const char * message,
                             const git_oid * stash_id,
                             void * payload); -}
type C'git_stash_cb = FunPtr (CSize -> CString -> Ptr (C'git_oid) -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_stash_cb
  :: (CSize -> CString -> Ptr (C'git_oid) -> Ptr () -> IO CInt) -> IO C'git_stash_cb
foreign import ccall "dynamic" mK'git_stash_cb
  :: C'git_stash_cb -> (CSize -> CString -> Ptr (C'git_oid) -> Ptr () -> IO CInt)

{-# LINE 29 "Bindings/Libgit2/Stash.hsc" #-}
foreign import ccall "git_stash_foreach" c'git_stash_foreach
  :: Ptr C'git_repository -> C'git_stash_cb -> Ptr () -> IO (CInt)
foreign import ccall "&git_stash_foreach" p'git_stash_foreach
  :: FunPtr (Ptr C'git_repository -> C'git_stash_cb -> Ptr () -> IO (CInt))

{-# LINE 30 "Bindings/Libgit2/Stash.hsc" #-}
foreign import ccall "git_stash_drop" c'git_stash_drop
  :: Ptr C'git_repository -> CSize -> IO (CInt)
foreign import ccall "&git_stash_drop" p'git_stash_drop
  :: FunPtr (Ptr C'git_repository -> CSize -> IO (CInt))

{-# LINE 31 "Bindings/Libgit2/Stash.hsc" #-}