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

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

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

{-# LINE 5 "Bindings/Libgit2/Checkout.hsc" #-}
module Bindings.Libgit2.Checkout 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/Checkout.hsc" #-}

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Strarray
import Bindings.Libgit2.Diff
{- typedef enum {
            GIT_CHECKOUT_NONE = 0,
            GIT_CHECKOUT_SAFE = 1u << 0,
            GIT_CHECKOUT_SAFE_CREATE = 1u << 1,
            GIT_CHECKOUT_FORCE = 1u << 2,
            GIT_CHECKOUT_ALLOW_CONFLICTS = 1u << 4,
            GIT_CHECKOUT_REMOVE_UNTRACKED = 1u << 5,
            GIT_CHECKOUT_REMOVE_IGNORED = 1u << 6,
            GIT_CHECKOUT_UPDATE_ONLY = 1u << 7,
            GIT_CHECKOUT_DONT_UPDATE_INDEX = 1u << 8,
            GIT_CHECKOUT_NO_REFRESH = 1u << 9,
            GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH = 1u << 13,
            GIT_CHECKOUT_SKIP_UNMERGED = 1u << 10,
            GIT_CHECKOUT_USE_OURS = 1u << 11,
            GIT_CHECKOUT_USE_THEIRS = 1u << 12,
            GIT_CHECKOUT_UPDATE_SUBMODULES = 1u << 16,
            GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = 1u << 17
        } git_checkout_strategy_t; -}
type C'git_checkout_strategy_t = CUInt

{-# LINE 32 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NONE = 0
c'GIT_CHECKOUT_NONE :: (Num a) => a

{-# LINE 33 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_SAFE = 1
c'GIT_CHECKOUT_SAFE :: (Num a) => a

{-# LINE 34 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_SAFE_CREATE = 2
c'GIT_CHECKOUT_SAFE_CREATE :: (Num a) => a

{-# LINE 35 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_FORCE = 4
c'GIT_CHECKOUT_FORCE :: (Num a) => a

{-# LINE 36 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_ALLOW_CONFLICTS = 16
c'GIT_CHECKOUT_ALLOW_CONFLICTS :: (Num a) => a

{-# LINE 37 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_REMOVE_UNTRACKED = 32
c'GIT_CHECKOUT_REMOVE_UNTRACKED :: (Num a) => a

{-# LINE 38 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_REMOVE_IGNORED = 64
c'GIT_CHECKOUT_REMOVE_IGNORED :: (Num a) => a

{-# LINE 39 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_UPDATE_ONLY = 128
c'GIT_CHECKOUT_UPDATE_ONLY :: (Num a) => a

{-# LINE 40 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_DONT_UPDATE_INDEX = 256
c'GIT_CHECKOUT_DONT_UPDATE_INDEX :: (Num a) => a

{-# LINE 41 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NO_REFRESH = 512
c'GIT_CHECKOUT_NO_REFRESH :: (Num a) => a

{-# LINE 42 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH = 8192
c'GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH :: (Num a) => a

{-# LINE 43 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_SKIP_UNMERGED = 1024
c'GIT_CHECKOUT_SKIP_UNMERGED :: (Num a) => a

{-# LINE 44 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_USE_OURS = 2048
c'GIT_CHECKOUT_USE_OURS :: (Num a) => a

{-# LINE 45 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_USE_THEIRS = 4096
c'GIT_CHECKOUT_USE_THEIRS :: (Num a) => a

{-# LINE 46 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_UPDATE_SUBMODULES = 65536
c'GIT_CHECKOUT_UPDATE_SUBMODULES :: (Num a) => a

{-# LINE 47 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = 131072
c'GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED :: (Num a) => a

{-# LINE 48 "Bindings/Libgit2/Checkout.hsc" #-}
{- typedef enum {
            GIT_CHECKOUT_NOTIFY_NONE = 0,
            GIT_CHECKOUT_NOTIFY_CONFLICT = 1u << 0,
            GIT_CHECKOUT_NOTIFY_DIRTY = 1u << 1,
            GIT_CHECKOUT_NOTIFY_UPDATED = 1u << 2,
            GIT_CHECKOUT_NOTIFY_UNTRACKED = 1u << 3,
            GIT_CHECKOUT_NOTIFY_IGNORED = 1u << 4
        } git_checkout_notify_t; -}
type C'git_checkout_notify_t = CUInt

{-# LINE 57 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_NONE = 0
c'GIT_CHECKOUT_NOTIFY_NONE :: (Num a) => a

{-# LINE 58 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_CONFLICT = 1
c'GIT_CHECKOUT_NOTIFY_CONFLICT :: (Num a) => a

{-# LINE 59 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_DIRTY = 2
c'GIT_CHECKOUT_NOTIFY_DIRTY :: (Num a) => a

{-# LINE 60 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_UPDATED = 4
c'GIT_CHECKOUT_NOTIFY_UPDATED :: (Num a) => a

{-# LINE 61 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_UNTRACKED = 8
c'GIT_CHECKOUT_NOTIFY_UNTRACKED :: (Num a) => a

{-# LINE 62 "Bindings/Libgit2/Checkout.hsc" #-}
c'GIT_CHECKOUT_NOTIFY_IGNORED = 16
c'GIT_CHECKOUT_NOTIFY_IGNORED :: (Num a) => a

{-# LINE 63 "Bindings/Libgit2/Checkout.hsc" #-}
{- typedef int (* git_checkout_notify_cb)(git_checkout_notify_t why,
                                       const char * path,
                                       const git_diff_file * baseline,
                                       const git_diff_file * target,
                                       const git_diff_file * workdir,
                                       void * payload); -}
type C'git_checkout_notify_cb = FunPtr (C'git_checkout_notify_t -> CString -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_checkout_notify_cb
  :: (C'git_checkout_notify_t -> CString -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr () -> IO CInt) -> IO C'git_checkout_notify_cb
foreign import ccall "dynamic" mK'git_checkout_notify_cb
  :: C'git_checkout_notify_cb -> (C'git_checkout_notify_t -> CString -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr (C'git_diff_file) -> Ptr () -> IO CInt)

{-# LINE 70 "Bindings/Libgit2/Checkout.hsc" #-}
{- typedef void (* git_checkout_progress_cb)(const char * path,
                                          size_t completed_steps,
                                          size_t total_steps,
                                          void * payload); -}
type C'git_checkout_progress_cb = FunPtr (CString -> CSize -> CSize -> Ptr () -> IO ())
foreign import ccall "wrapper" mk'git_checkout_progress_cb
  :: (CString -> CSize -> CSize -> Ptr () -> IO ()) -> IO C'git_checkout_progress_cb
foreign import ccall "dynamic" mK'git_checkout_progress_cb
  :: C'git_checkout_progress_cb -> (CString -> CSize -> CSize -> Ptr () -> IO ())

{-# LINE 75 "Bindings/Libgit2/Checkout.hsc" #-}
{- typedef struct git_checkout_opts {
            unsigned int version;
            unsigned int checkout_strategy;
            int disable_filters;
            unsigned int dir_mode;
            unsigned int file_mode;
            int file_open_flags;
            unsigned int notify_flags;
            git_checkout_notify_cb notify_cb;
            void * notify_payload;
            git_checkout_progress_cb progress_cb;
            void * progress_payload;
            git_strarray paths;
            git_tree * baseline;
        } git_checkout_opts; -}

{-# LINE 91 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 92 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 93 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 94 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 95 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 96 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 97 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 98 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 99 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 100 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 101 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 102 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 103 "Bindings/Libgit2/Checkout.hsc" #-}

{-# LINE 104 "Bindings/Libgit2/Checkout.hsc" #-}
data C'git_checkout_opts = C'git_checkout_opts{
  c'git_checkout_opts'version :: CUInt,
  c'git_checkout_opts'checkout_strategy :: CUInt,
  c'git_checkout_opts'disable_filters :: CInt,
  c'git_checkout_opts'dir_mode :: CUInt,
  c'git_checkout_opts'file_mode :: CUInt,
  c'git_checkout_opts'file_open_flags :: CInt,
  c'git_checkout_opts'notify_flags :: CUInt,
  c'git_checkout_opts'notify_cb :: C'git_checkout_notify_cb,
  c'git_checkout_opts'notify_payload :: Ptr (),
  c'git_checkout_opts'progress_cb :: C'git_checkout_progress_cb,
  c'git_checkout_opts'progress_payload :: Ptr (),
  c'git_checkout_opts'paths :: C'git_strarray,
  c'git_checkout_opts'baseline :: Ptr C'git_tree
} deriving (Eq,Show)
p'git_checkout_opts'version p = plusPtr p 0
p'git_checkout_opts'version :: Ptr (C'git_checkout_opts) -> Ptr (CUInt)
p'git_checkout_opts'checkout_strategy p = plusPtr p 4
p'git_checkout_opts'checkout_strategy :: Ptr (C'git_checkout_opts) -> Ptr (CUInt)
p'git_checkout_opts'disable_filters p = plusPtr p 8
p'git_checkout_opts'disable_filters :: Ptr (C'git_checkout_opts) -> Ptr (CInt)
p'git_checkout_opts'dir_mode p = plusPtr p 12
p'git_checkout_opts'dir_mode :: Ptr (C'git_checkout_opts) -> Ptr (CUInt)
p'git_checkout_opts'file_mode p = plusPtr p 16
p'git_checkout_opts'file_mode :: Ptr (C'git_checkout_opts) -> Ptr (CUInt)
p'git_checkout_opts'file_open_flags p = plusPtr p 20
p'git_checkout_opts'file_open_flags :: Ptr (C'git_checkout_opts) -> Ptr (CInt)
p'git_checkout_opts'notify_flags p = plusPtr p 24
p'git_checkout_opts'notify_flags :: Ptr (C'git_checkout_opts) -> Ptr (CUInt)
p'git_checkout_opts'notify_cb p = plusPtr p 32
p'git_checkout_opts'notify_cb :: Ptr (C'git_checkout_opts) -> Ptr (C'git_checkout_notify_cb)
p'git_checkout_opts'notify_payload p = plusPtr p 40
p'git_checkout_opts'notify_payload :: Ptr (C'git_checkout_opts) -> Ptr (Ptr ())
p'git_checkout_opts'progress_cb p = plusPtr p 48
p'git_checkout_opts'progress_cb :: Ptr (C'git_checkout_opts) -> Ptr (C'git_checkout_progress_cb)
p'git_checkout_opts'progress_payload p = plusPtr p 56
p'git_checkout_opts'progress_payload :: Ptr (C'git_checkout_opts) -> Ptr (Ptr ())
p'git_checkout_opts'paths p = plusPtr p 64
p'git_checkout_opts'paths :: Ptr (C'git_checkout_opts) -> Ptr (C'git_strarray)
p'git_checkout_opts'baseline p = plusPtr p 80
p'git_checkout_opts'baseline :: Ptr (C'git_checkout_opts) -> Ptr (Ptr C'git_tree)
instance Storable C'git_checkout_opts where
  sizeOf _ = 88
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 16
    v5 <- peekByteOff p 20
    v6 <- peekByteOff p 24
    v7 <- peekByteOff p 32
    v8 <- peekByteOff p 40
    v9 <- peekByteOff p 48
    v10 <- peekByteOff p 56
    v11 <- peekByteOff p 64
    v12 <- peekByteOff p 80
    return $ C'git_checkout_opts v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12
  poke p (C'git_checkout_opts v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 16 v4
    pokeByteOff p 20 v5
    pokeByteOff p 24 v6
    pokeByteOff p 32 v7
    pokeByteOff p 40 v8
    pokeByteOff p 48 v9
    pokeByteOff p 56 v10
    pokeByteOff p 64 v11
    pokeByteOff p 80 v12
    return ()

{-# LINE 105 "Bindings/Libgit2/Checkout.hsc" #-}
foreign import ccall "git_checkout_head" c'git_checkout_head
  :: Ptr C'git_repository -> Ptr C'git_checkout_opts -> IO (CInt)
foreign import ccall "&git_checkout_head" p'git_checkout_head
  :: FunPtr (Ptr C'git_repository -> Ptr C'git_checkout_opts -> IO (CInt))

{-# LINE 106 "Bindings/Libgit2/Checkout.hsc" #-}
foreign import ccall "git_checkout_index" c'git_checkout_index
  :: Ptr C'git_repository -> Ptr C'git_index -> Ptr C'git_checkout_opts -> IO (CInt)
foreign import ccall "&git_checkout_index" p'git_checkout_index
  :: FunPtr (Ptr C'git_repository -> Ptr C'git_index -> Ptr C'git_checkout_opts -> IO (CInt))

{-# LINE 107 "Bindings/Libgit2/Checkout.hsc" #-}
foreign import ccall "git_checkout_tree" c'git_checkout_tree
  :: Ptr C'git_repository -> Ptr C'git_object -> Ptr C'git_checkout_opts -> IO (CInt)
foreign import ccall "&git_checkout_tree" p'git_checkout_tree
  :: FunPtr (Ptr C'git_repository -> Ptr C'git_object -> Ptr C'git_checkout_opts -> IO (CInt))

{-# LINE 108 "Bindings/Libgit2/Checkout.hsc" #-}