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

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

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

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

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
import Bindings.Libgit2.Oid
{- typedef struct {
	void *data;          
	size_t len;          
	git_otype type;      
} git_rawobj; -}
data C'git_rawobj = C'git_rawobj{
{-# LINE 16 "Bindings/Libgit2/Odb.hsc" #-}

  c'git_rawobj'data :: Ptr Word8
{-# LINE 17 "Bindings/Libgit2/Odb.hsc" #-}
,
  c'git_rawobj'len :: CSize
{-# LINE 18 "Bindings/Libgit2/Odb.hsc" #-}
,
  c'git_rawobj'type :: C'git_otype
{-# LINE 19 "Bindings/Libgit2/Odb.hsc" #-}

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

{-# LINE 20 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_new" c'git_odb_new
  :: Ptr (Ptr C'git_odb) -> IO (CInt)
foreign import ccall "&git_odb_new" p'git_odb_new
  :: FunPtr (Ptr (Ptr C'git_odb) -> IO (CInt))

{-# LINE 21 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_open" c'git_odb_open
  :: Ptr (Ptr C'git_odb) -> CString -> IO (CInt)
foreign import ccall "&git_odb_open" p'git_odb_open
  :: FunPtr (Ptr (Ptr C'git_odb) -> CString -> IO (CInt))

{-# LINE 22 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_add_backend" c'git_odb_add_backend
  :: Ptr C'git_odb -> Ptr C'git_odb_backend -> CInt -> IO (CInt)
foreign import ccall "&git_odb_add_backend" p'git_odb_add_backend
  :: FunPtr (Ptr C'git_odb -> Ptr C'git_odb_backend -> CInt -> IO (CInt))

{-# LINE 23 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_add_alternate" c'git_odb_add_alternate
  :: Ptr C'git_odb -> Ptr C'git_odb_backend -> CInt -> IO (CInt)
foreign import ccall "&git_odb_add_alternate" p'git_odb_add_alternate
  :: FunPtr (Ptr C'git_odb -> Ptr C'git_odb_backend -> CInt -> IO (CInt))

{-# LINE 24 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_close" c'git_odb_close
  :: Ptr C'git_odb -> IO ()
foreign import ccall "&git_odb_close" p'git_odb_close
  :: FunPtr (Ptr C'git_odb -> IO ())

{-# LINE 25 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_read" c'git_odb_read
  :: Ptr C'git_rawobj -> Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt)
foreign import ccall "&git_odb_read" p'git_odb_read
  :: FunPtr (Ptr C'git_rawobj -> Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt))

{-# LINE 26 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_read_header" c'git_odb_read_header
  :: Ptr C'git_rawobj -> Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt)
foreign import ccall "&git_odb_read_header" p'git_odb_read_header
  :: FunPtr (Ptr C'git_rawobj -> Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt))

{-# LINE 27 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_write" c'git_odb_write
  :: Ptr C'git_oid -> Ptr C'git_odb -> Ptr C'git_rawobj -> IO (CInt)
foreign import ccall "&git_odb_write" p'git_odb_write
  :: FunPtr (Ptr C'git_oid -> Ptr C'git_odb -> Ptr C'git_rawobj -> IO (CInt))

{-# LINE 28 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_odb_exists" c'git_odb_exists
  :: Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt)
foreign import ccall "&git_odb_exists" p'git_odb_exists
  :: FunPtr (Ptr C'git_odb -> Ptr C'git_oid -> IO (CInt))

{-# LINE 29 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_rawobj_hash" c'git_rawobj_hash
  :: Ptr C'git_oid -> Ptr C'git_rawobj -> IO (CInt)
foreign import ccall "&git_rawobj_hash" p'git_rawobj_hash
  :: FunPtr (Ptr C'git_oid -> Ptr C'git_rawobj -> IO (CInt))

{-# LINE 30 "Bindings/Libgit2/Odb.hsc" #-}
foreign import ccall "git_rawobj_close" c'git_rawobj_close
  :: Ptr C'git_rawobj -> IO ()
foreign import ccall "&git_rawobj_close" p'git_rawobj_close
  :: FunPtr (Ptr C'git_rawobj -> IO ())

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