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

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

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

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
{- typedef struct {
            git_time_t seconds; unsigned int nanoseconds;
        } git_index_time; -}

{-# LINE 13 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 14 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 15 "Bindings/Libgit2/Index.hsc" #-}
data C'git_index_time = C'git_index_time{
  c'git_index_time'seconds :: CLong,
  c'git_index_time'nanoseconds :: CUInt
} deriving (Eq,Show)
p'git_index_time'seconds p = plusPtr p 0
p'git_index_time'seconds :: Ptr (C'git_index_time) -> Ptr (CLong)
p'git_index_time'nanoseconds p = plusPtr p 8
p'git_index_time'nanoseconds :: Ptr (C'git_index_time) -> Ptr (CUInt)
instance Storable C'git_index_time where
  sizeOf _ = 12
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    return $ C'git_index_time v0 v1
  poke p (C'git_index_time v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    return ()

{-# LINE 16 "Bindings/Libgit2/Index.hsc" #-}
{- typedef struct git_index_entry {
            git_index_time ctime;
            git_index_time mtime;
            unsigned int dev;
            unsigned int ino;
            unsigned int mode;
            unsigned int uid;
            unsigned int gid;
            git_off_t file_size;
            git_oid oid;
            unsigned short flags;
            unsigned short flags_extended;
            char * path;
        } git_index_entry; -}

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

{-# LINE 32 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 33 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 34 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 35 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 36 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 37 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 38 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 39 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 40 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 41 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 42 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 43 "Bindings/Libgit2/Index.hsc" #-}
data C'git_index_entry = C'git_index_entry{
  c'git_index_entry'ctime :: C'git_index_time,
  c'git_index_entry'mtime :: C'git_index_time,
  c'git_index_entry'dev :: CUInt,
  c'git_index_entry'ino :: CUInt,
  c'git_index_entry'mode :: CUInt,
  c'git_index_entry'uid :: CUInt,
  c'git_index_entry'gid :: CUInt,
  c'git_index_entry'file_size :: CLong,
  c'git_index_entry'oid :: C'git_oid,
  c'git_index_entry'flags :: CUShort,
  c'git_index_entry'flags_extended :: CUShort,
  c'git_index_entry'path :: CString
} deriving (Eq,Show)
p'git_index_entry'ctime p = plusPtr p 0
p'git_index_entry'ctime :: Ptr (C'git_index_entry) -> Ptr (C'git_index_time)
p'git_index_entry'mtime p = plusPtr p 12
p'git_index_entry'mtime :: Ptr (C'git_index_entry) -> Ptr (C'git_index_time)
p'git_index_entry'dev p = plusPtr p 24
p'git_index_entry'dev :: Ptr (C'git_index_entry) -> Ptr (CUInt)
p'git_index_entry'ino p = plusPtr p 28
p'git_index_entry'ino :: Ptr (C'git_index_entry) -> Ptr (CUInt)
p'git_index_entry'mode p = plusPtr p 32
p'git_index_entry'mode :: Ptr (C'git_index_entry) -> Ptr (CUInt)
p'git_index_entry'uid p = plusPtr p 36
p'git_index_entry'uid :: Ptr (C'git_index_entry) -> Ptr (CUInt)
p'git_index_entry'gid p = plusPtr p 40
p'git_index_entry'gid :: Ptr (C'git_index_entry) -> Ptr (CUInt)
p'git_index_entry'file_size p = plusPtr p 44
p'git_index_entry'file_size :: Ptr (C'git_index_entry) -> Ptr (CLong)
p'git_index_entry'oid p = plusPtr p 52
p'git_index_entry'oid :: Ptr (C'git_index_entry) -> Ptr (C'git_oid)
p'git_index_entry'flags p = plusPtr p 72
p'git_index_entry'flags :: Ptr (C'git_index_entry) -> Ptr (CUShort)
p'git_index_entry'flags_extended p = plusPtr p 74
p'git_index_entry'flags_extended :: Ptr (C'git_index_entry) -> Ptr (CUShort)
p'git_index_entry'path p = plusPtr p 76
p'git_index_entry'path :: Ptr (C'git_index_entry) -> Ptr (CString)
instance Storable C'git_index_entry where
  sizeOf _ = 80
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 12
    v2 <- peekByteOff p 24
    v3 <- peekByteOff p 28
    v4 <- peekByteOff p 32
    v5 <- peekByteOff p 36
    v6 <- peekByteOff p 40
    v7 <- peekByteOff p 44
    v8 <- peekByteOff p 52
    v9 <- peekByteOff p 72
    v10 <- peekByteOff p 74
    v11 <- peekByteOff p 76
    return $ C'git_index_entry v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
  poke p (C'git_index_entry v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11) = do
    pokeByteOff p 0 v0
    pokeByteOff p 12 v1
    pokeByteOff p 24 v2
    pokeByteOff p 28 v3
    pokeByteOff p 32 v4
    pokeByteOff p 36 v5
    pokeByteOff p 40 v6
    pokeByteOff p 44 v7
    pokeByteOff p 52 v8
    pokeByteOff p 72 v9
    pokeByteOff p 74 v10
    pokeByteOff p 76 v11
    return ()

{-# LINE 44 "Bindings/Libgit2/Index.hsc" #-}
{- typedef struct git_index_entry_unmerged {
            unsigned int mode[3]; git_oid oid[3]; char * path;
        } git_index_entry_unmerged; -}

{-# LINE 48 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 49 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 50 "Bindings/Libgit2/Index.hsc" #-}

{-# LINE 51 "Bindings/Libgit2/Index.hsc" #-}
data C'git_index_entry_unmerged = C'git_index_entry_unmerged{
  c'git_index_entry_unmerged'mode :: [CUInt],
  c'git_index_entry_unmerged'oid :: [C'git_oid],
  c'git_index_entry_unmerged'path :: CString
} deriving (Eq,Show)
p'git_index_entry_unmerged'mode p = plusPtr p 0
p'git_index_entry_unmerged'mode :: Ptr (C'git_index_entry_unmerged) -> Ptr (CUInt)
p'git_index_entry_unmerged'oid p = plusPtr p 12
p'git_index_entry_unmerged'oid :: Ptr (C'git_index_entry_unmerged) -> Ptr (C'git_oid)
p'git_index_entry_unmerged'path p = plusPtr p 72
p'git_index_entry_unmerged'path :: Ptr (C'git_index_entry_unmerged) -> Ptr (CString)
instance Storable C'git_index_entry_unmerged where
  sizeOf _ = 76
  alignment _ = 4
  peek p = do
    v0 <- peekArray 3 (plusPtr p 0)
    v1 <- peekArray 3 (plusPtr p 12)
    v2 <- peekByteOff p 72
    return $ C'git_index_entry_unmerged v0 v1 v2
  poke p (C'git_index_entry_unmerged v0 v1 v2) = do
    pokeArray (plusPtr p 0) (take 3 v0)
    pokeArray (plusPtr p 12) (take 3 v1)
    pokeByteOff p 72 v2
    return ()

{-# LINE 52 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_open" c'git_index_open
  :: Ptr (Ptr C'git_index) -> CString -> IO (CInt)
foreign import ccall "&git_index_open" p'git_index_open
  :: FunPtr (Ptr (Ptr C'git_index) -> CString -> IO (CInt))

{-# LINE 53 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_clear" c'git_index_clear
  :: Ptr C'git_index -> IO ()
foreign import ccall "&git_index_clear" p'git_index_clear
  :: FunPtr (Ptr C'git_index -> IO ())

{-# LINE 54 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_free" c'git_index_free
  :: Ptr C'git_index -> IO ()
foreign import ccall "&git_index_free" p'git_index_free
  :: FunPtr (Ptr C'git_index -> IO ())

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

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

{-# LINE 57 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_find" c'git_index_find
  :: Ptr C'git_index -> CString -> IO (CInt)
foreign import ccall "&git_index_find" p'git_index_find
  :: FunPtr (Ptr C'git_index -> CString -> IO (CInt))

{-# LINE 58 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_uniq" c'git_index_uniq
  :: Ptr C'git_index -> IO ()
foreign import ccall "&git_index_uniq" p'git_index_uniq
  :: FunPtr (Ptr C'git_index -> IO ())

{-# LINE 59 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_add" c'git_index_add
  :: Ptr C'git_index -> CString -> CInt -> IO (CInt)
foreign import ccall "&git_index_add" p'git_index_add
  :: FunPtr (Ptr C'git_index -> CString -> CInt -> IO (CInt))

{-# LINE 60 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_add2" c'git_index_add2
  :: Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt)
foreign import ccall "&git_index_add2" p'git_index_add2
  :: FunPtr (Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt))

{-# LINE 61 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_append" c'git_index_append
  :: Ptr C'git_index -> CString -> CInt -> IO (CInt)
foreign import ccall "&git_index_append" p'git_index_append
  :: FunPtr (Ptr C'git_index -> CString -> CInt -> IO (CInt))

{-# LINE 62 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_append2" c'git_index_append2
  :: Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt)
foreign import ccall "&git_index_append2" p'git_index_append2
  :: FunPtr (Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt))

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

{-# LINE 64 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_get" c'git_index_get
  :: Ptr C'git_index -> CUInt -> IO (Ptr C'git_index_entry)
foreign import ccall "&git_index_get" p'git_index_get
  :: FunPtr (Ptr C'git_index -> CUInt -> IO (Ptr C'git_index_entry))

{-# LINE 65 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_entrycount" c'git_index_entrycount
  :: Ptr C'git_index -> IO (CUInt)
foreign import ccall "&git_index_entrycount" p'git_index_entrycount
  :: FunPtr (Ptr C'git_index -> IO (CUInt))

{-# LINE 66 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_entrycount_unmerged" c'git_index_entrycount_unmerged
  :: Ptr C'git_index -> IO (CUInt)
foreign import ccall "&git_index_entrycount_unmerged" p'git_index_entrycount_unmerged
  :: FunPtr (Ptr C'git_index -> IO (CUInt))

{-# LINE 67 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_get_unmerged_bypath" c'git_index_get_unmerged_bypath
  :: Ptr C'git_index -> CString -> IO (Ptr C'git_index_entry_unmerged)
foreign import ccall "&git_index_get_unmerged_bypath" p'git_index_get_unmerged_bypath
  :: FunPtr (Ptr C'git_index -> CString -> IO (Ptr C'git_index_entry_unmerged))

{-# LINE 68 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_get_unmerged_byindex" c'git_index_get_unmerged_byindex
  :: Ptr C'git_index -> CUInt -> IO (Ptr C'git_index_entry_unmerged)
foreign import ccall "&git_index_get_unmerged_byindex" p'git_index_get_unmerged_byindex
  :: FunPtr (Ptr C'git_index -> CUInt -> IO (Ptr C'git_index_entry_unmerged))

{-# LINE 69 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_entry_stage" c'git_index_entry_stage
  :: Ptr C'git_index_entry -> IO (CInt)
foreign import ccall "&git_index_entry_stage" p'git_index_entry_stage
  :: FunPtr (Ptr C'git_index_entry -> IO (CInt))

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

{-# LINE 71 "Bindings/Libgit2/Index.hsc" #-}