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

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

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

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

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
c'GIT_IDXENTRY_NAMEMASK = 4095
c'GIT_IDXENTRY_NAMEMASK :: (Num a) => a

{-# LINE 11 "Bindings/Libgit2/Index.hsc" #-}
c'GIT_IDXENTRY_STAGEMASK = 12288
c'GIT_IDXENTRY_STAGEMASK :: (Num a) => a

{-# LINE 12 "Bindings/Libgit2/Index.hsc" #-}
c'GIT_IDXENTRY_EXTENDED = 16384
c'GIT_IDXENTRY_EXTENDED :: (Num a) => a

{-# LINE 13 "Bindings/Libgit2/Index.hsc" #-}
c'GIT_IDXENTRY_VALID = 32768
c'GIT_IDXENTRY_VALID :: (Num a) => a

{-# LINE 14 "Bindings/Libgit2/Index.hsc" #-}
c'GIT_IDXENTRY_STAGESHIFT = 12
c'GIT_IDXENTRY_STAGESHIFT :: (Num a) => a

{-# LINE 15 "Bindings/Libgit2/Index.hsc" #-}
{- typedef struct {
	git_time_t seconds;
	
	unsigned int nanoseconds;
} git_index_time; -}
data C'git_index_time = C'git_index_time{
{-# LINE 21 "Bindings/Libgit2/Index.hsc" #-}

  c'git_index_time'seconds :: CTime
{-# LINE 22 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_time'nanoseconds :: CUInt
{-# LINE 23 "Bindings/Libgit2/Index.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'git_index_time where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'git_index_time v0 v1
  poke p (C'git_index_time v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 24 "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; -}
data C'git_index_entry = C'git_index_entry{
{-# LINE 43 "Bindings/Libgit2/Index.hsc" #-}

  c'git_index_entry'ctime :: C'git_index_time
{-# LINE 44 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'mtime :: C'git_index_time
{-# LINE 45 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'dev :: CUInt
{-# LINE 46 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'ino :: CUInt
{-# LINE 47 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'mode :: CUInt
{-# LINE 48 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'uid :: CUInt
{-# LINE 49 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'gid :: CUInt
{-# LINE 50 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'file_size :: C'git_off_t
{-# LINE 51 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'oid :: C'git_oid
{-# LINE 52 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'flags :: CUShort
{-# LINE 53 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'flags_extended :: CUShort
{-# LINE 54 "Bindings/Libgit2/Index.hsc" #-}
,
  c'git_index_entry'path :: CString
{-# LINE 55 "Bindings/Libgit2/Index.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'git_index_entry where
  sizeOf _ = 72
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    v3 <- peekByteOff p 20
    v4 <- peekByteOff p 24
    v5 <- peekByteOff p 28
    v6 <- peekByteOff p 32
    v7 <- peekByteOff p 36
    v8 <- peekByteOff p 44
    v9 <- peekByteOff p 64
    v10 <- peekByteOff p 66
    v11 <- peekByteOff p 68
    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 8 v1
    pokeByteOff p 16 v2
    pokeByteOff p 20 v3
    pokeByteOff p 24 v4
    pokeByteOff p 28 v5
    pokeByteOff p 32 v6
    pokeByteOff p 36 v7
    pokeByteOff p 44 v8
    pokeByteOff p 64 v9
    pokeByteOff p 66 v10
    pokeByteOff p 68 v11
    return ()

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

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

{-# LINE 58 "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 59 "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 60 "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 61 "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 62 "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 63 "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 64 "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 65 "Bindings/Libgit2/Index.hsc" #-}
foreign import ccall "git_index_insert" c'git_index_insert
  :: Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt)
foreign import ccall "&git_index_insert" p'git_index_insert
  :: FunPtr (Ptr C'git_index -> Ptr C'git_index_entry -> IO (CInt))

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

{-# LINE 67 "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 68 "Bindings/Libgit2/Index.hsc" #-}