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
import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
c'GIT_IDXENTRY_NAMEMASK = 4095
c'GIT_IDXENTRY_NAMEMASK :: (Num a) => a
c'GIT_IDXENTRY_STAGEMASK = 12288
c'GIT_IDXENTRY_STAGEMASK :: (Num a) => a
c'GIT_IDXENTRY_EXTENDED = 16384
c'GIT_IDXENTRY_EXTENDED :: (Num a) => a
c'GIT_IDXENTRY_VALID = 32768
c'GIT_IDXENTRY_VALID :: (Num a) => a
c'GIT_IDXENTRY_STAGESHIFT = 12
c'GIT_IDXENTRY_STAGESHIFT :: (Num a) => a
data C'git_index_time = C'git_index_time{
c'git_index_time'seconds :: CTime
,
c'git_index_time'nanoseconds :: CUInt
} 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 ()
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 :: C'git_off_t
,
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)
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 ()
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))
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))
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 ())
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 ())
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))
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))
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))
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))
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))
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))
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))
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))