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

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

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

import Bindings.Libgit2.Common
{- typedef int64_t git_off_t; -}
type C'git_off_t = CLong

{-# LINE 9 "Bindings/Libgit2/Types.hsc" #-}
{- typedef int64_t git_time_t; -}
type C'git_time_t = CLong

{-# LINE 11 "Bindings/Libgit2/Types.hsc" #-}
{- typedef enum {
            GIT_OBJ_ANY = -2,
            GIT_OBJ_BAD = -1,
            GIT_OBJ__EXT1 = 0,
            GIT_OBJ_COMMIT = 1,
            GIT_OBJ_TREE = 2,
            GIT_OBJ_BLOB = 3,
            GIT_OBJ_TAG = 4,
            GIT_OBJ__EXT2 = 5,
            GIT_OBJ_OFS_DELTA = 6,
            GIT_OBJ_REF_DELTA = 7
        } git_otype; -}
type C'git_otype = CInt

{-# LINE 24 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_ANY = -2
c'GIT_OBJ_ANY :: (Num a) => a

{-# LINE 25 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_BAD = -1
c'GIT_OBJ_BAD :: (Num a) => a

{-# LINE 26 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ__EXT1 = 0
c'GIT_OBJ__EXT1 :: (Num a) => a

{-# LINE 27 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_COMMIT = 1
c'GIT_OBJ_COMMIT :: (Num a) => a

{-# LINE 28 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_TREE = 2
c'GIT_OBJ_TREE :: (Num a) => a

{-# LINE 29 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_BLOB = 3
c'GIT_OBJ_BLOB :: (Num a) => a

{-# LINE 30 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_TAG = 4
c'GIT_OBJ_TAG :: (Num a) => a

{-# LINE 31 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ__EXT2 = 5
c'GIT_OBJ__EXT2 :: (Num a) => a

{-# LINE 32 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_OFS_DELTA = 6
c'GIT_OBJ_OFS_DELTA :: (Num a) => a

{-# LINE 33 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_REF_DELTA = 7
c'GIT_OBJ_REF_DELTA :: (Num a) => a

{-# LINE 34 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_odb git_odb; -}
data C'git_odb = C'git_odb

{-# LINE 36 "Bindings/Libgit2/Types.hsc" #-}
-- {- typedef struct git_odb_backend git_odb_backend; -}
-- #opaque_t git_odb_backend
{- typedef struct git_odb_object git_odb_object; -}
data C'git_odb_object = C'git_odb_object

{-# LINE 40 "Bindings/Libgit2/Types.hsc" #-}
-- {- typedef struct git_odb_stream git_odb_stream; -}
-- #opaque_t git_odb_stream
{- typedef struct git_repository git_repository; -}
data C'git_repository = C'git_repository

{-# LINE 44 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_object git_object; -}
data C'git_object = C'git_object

{-# LINE 46 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_revwalk git_revwalk; -}
data C'git_revwalk = C'git_revwalk

{-# LINE 48 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_tag git_tag; -}
data C'git_tag = C'git_tag

{-# LINE 50 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_blob git_blob; -}
data C'git_blob = C'git_blob

{-# LINE 52 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_commit git_commit; -}
data C'git_commit = C'git_commit

{-# LINE 54 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_tree_entry git_tree_entry; -}
data C'git_tree_entry = C'git_tree_entry

{-# LINE 56 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_tree git_tree; -}
data C'git_tree = C'git_tree

{-# LINE 58 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_treebuilder git_treebuilder; -}
data C'git_treebuilder = C'git_treebuilder

{-# LINE 60 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_index git_index; -}
data C'git_index = C'git_index

{-# LINE 62 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_config git_config; -}
data C'git_config = C'git_config

{-# LINE 64 "Bindings/Libgit2/Types.hsc" #-}
-- {- typedef struct git_config_file git_config_file; -}
-- #opaque_t git_config_file
{- typedef struct git_reflog_entry git_reflog_entry; -}
data C'git_reflog_entry = C'git_reflog_entry

{-# LINE 68 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_reflog git_reflog; -}
data C'git_reflog = C'git_reflog

{-# LINE 70 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_note git_note; -}
data C'git_note = C'git_note

{-# LINE 72 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_time {
            git_time_t time; int offset;
        } git_time; -}

{-# LINE 76 "Bindings/Libgit2/Types.hsc" #-}

{-# LINE 77 "Bindings/Libgit2/Types.hsc" #-}

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

{-# LINE 79 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_signature {
            char * name; char * email; git_time when;
        } git_signature; -}

{-# LINE 83 "Bindings/Libgit2/Types.hsc" #-}

{-# LINE 84 "Bindings/Libgit2/Types.hsc" #-}

{-# LINE 85 "Bindings/Libgit2/Types.hsc" #-}

{-# LINE 86 "Bindings/Libgit2/Types.hsc" #-}
data C'git_signature = C'git_signature{
  c'git_signature'name :: CString,
  c'git_signature'email :: CString,
  c'git_signature'when :: C'git_time
} deriving (Eq,Show)
p'git_signature'name p = plusPtr p 0
p'git_signature'name :: Ptr (C'git_signature) -> Ptr (CString)
p'git_signature'email p = plusPtr p 4
p'git_signature'email :: Ptr (C'git_signature) -> Ptr (CString)
p'git_signature'when p = plusPtr p 8
p'git_signature'when :: Ptr (C'git_signature) -> Ptr (C'git_time)
instance Storable C'git_signature where
  sizeOf _ = 20
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'git_signature v0 v1 v2
  poke p (C'git_signature v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 87 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_reference git_reference; -}
data C'git_reference = C'git_reference

{-# LINE 89 "Bindings/Libgit2/Types.hsc" #-}
{- typedef enum {
            GIT_REF_INVALID = 0,
            GIT_REF_OID = 1,
            GIT_REF_SYMBOLIC = 2,
            GIT_REF_PACKED = 4,
            GIT_REF_HAS_PEEL = 8,
            GIT_REF_LISTALL = GIT_REF_OID | GIT_REF_SYMBOLIC | GIT_REF_PACKED
        } git_ref_t; -}
type C'git_ref_t = CUInt

{-# LINE 98 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_INVALID = 0
c'GIT_REF_INVALID :: (Num a) => a

{-# LINE 99 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_OID = 1
c'GIT_REF_OID :: (Num a) => a

{-# LINE 100 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_SYMBOLIC = 2
c'GIT_REF_SYMBOLIC :: (Num a) => a

{-# LINE 101 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_PACKED = 4
c'GIT_REF_PACKED :: (Num a) => a

{-# LINE 102 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_HAS_PEEL = 8
c'GIT_REF_HAS_PEEL :: (Num a) => a

{-# LINE 103 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_REF_LISTALL = 7
c'GIT_REF_LISTALL :: (Num a) => a

{-# LINE 104 "Bindings/Libgit2/Types.hsc" #-}
{- typedef enum {
            GIT_BRANCH_LOCAL = 1, GIT_BRANCH_REMOTE = 2
        } git_branch_t; -}
type C'git_branch_t = CUInt

{-# LINE 108 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_BRANCH_LOCAL = 1
c'GIT_BRANCH_LOCAL :: (Num a) => a

{-# LINE 109 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_BRANCH_REMOTE = 2
c'GIT_BRANCH_REMOTE :: (Num a) => a

{-# LINE 110 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_refspec git_refspec; -}
data C'git_refspec = C'git_refspec

{-# LINE 112 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_remote git_remote; -}
data C'git_remote = C'git_remote

{-# LINE 114 "Bindings/Libgit2/Types.hsc" #-}
-- {- typedef struct git_remote_head git_remote_head; -}
-- #opaque_t git_remote_head