{-# LINE 1 "Bindings/Libgit2/Types.hsc" #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LINE 2 "Bindings/Libgit2/Types.hsc" #-}

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

{-# LINE 4 "Bindings/Libgit2/Types.hsc" #-}
module Bindings.Libgit2.Types where
import Foreign.Ptr
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 7 "Bindings/Libgit2/Types.hsc" #-}

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

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

{-# LINE 13 "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 26 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_OBJ_ANY = -2
c'GIT_OBJ_ANY :: (Num a) => a

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

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

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

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

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

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

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

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

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

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

{-# LINE 38 "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 42 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_odb_stream git_odb_stream; -}
{-  #opaque_t git_odb_stream -}
{- typedef struct git_odb_writepack git_odb_writepack; -}
{-  #opaque_t git_odb_writepack -}
{- typedef struct git_refdb git_refdb; -}
data C'git_refdb = C'git_refdb

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{-# LINE 88 "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 _ = 16
  alignment _ = 8
  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 89 "Bindings/Libgit2/Types.hsc" #-}
{- typedef struct git_signature {
            char * name; char * email; git_time when;
        } git_signature; -}

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

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

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

{-# LINE 96 "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 8
p'git_signature'email :: Ptr (C'git_signature) -> Ptr (CString)
p'git_signature'when p = plusPtr p 16
p'git_signature'when :: Ptr (C'git_signature) -> Ptr (C'git_time)
instance Storable C'git_signature where
  sizeOf _ = 32
  alignment _ = 8
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 8
    v2 <- peekByteOff p 16
    return $ C'git_signature v0 v1 v2
  poke p (C'git_signature v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 8 v1
    pokeByteOff p 16 v2
    return ()

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

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

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

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

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

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

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

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

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

{-# LINE 116 "Bindings/Libgit2/Types.hsc" #-}
{- typedef enum {
            GIT_FILEMODE_NEW = 00,
            GIT_FILEMODE_TREE = 040000,
            GIT_FILEMODE_BLOB = 0100644,
            GIT_FILEMODE_BLOB_EXECUTABLE = 0100755,
            GIT_FILEMODE_LINK = 0120000,
            GIT_FILEMODE_COMMIT = 0160000
        } git_filemode_t; -}
type C'git_filemode_t = CUInt

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

{-# LINE 126 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_FILEMODE_TREE = 16384
c'GIT_FILEMODE_TREE :: (Num a) => a

{-# LINE 127 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_FILEMODE_BLOB = 33188
c'GIT_FILEMODE_BLOB :: (Num a) => a

{-# LINE 128 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_FILEMODE_BLOB_EXECUTABLE = 33261
c'GIT_FILEMODE_BLOB_EXECUTABLE :: (Num a) => a

{-# LINE 129 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_FILEMODE_LINK = 40960
c'GIT_FILEMODE_LINK :: (Num a) => a

{-# LINE 130 "Bindings/Libgit2/Types.hsc" #-}
c'GIT_FILEMODE_COMMIT = 57344
c'GIT_FILEMODE_COMMIT :: (Num a) => a

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

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

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

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