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

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

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

import Bindings.Libgit2.Common
import Bindings.Libgit2.Types
{- struct git_config_file {
    struct git_config * cfg;
    int (* open)(struct git_config_file *);
    int (* get)(struct git_config_file *,
                const char * key,
                const char * * value);
    int (* get_multivar)(struct git_config_file *,
                         const char * key,
                         const char * regexp,
                         int (* fn)(const char *, void *),
                         void * data);
    int (* set)(struct git_config_file *,
                const char * key,
                const char * value);
    int (* set_multivar)(git_config_file * cfg,
                         const char * name,
                         const char * regexp,
                         const char * value);
    int (* del)(struct git_config_file *, const char * key);
    int (* foreach)(struct git_config_file *,
                    int (* fn)(const char *, const char *, void *),
                    void * data);
    void (* free)(struct git_config_file *);
}; -}
type C'git_config_open_callback = FunPtr (Ptr C'git_config_file -> IO CInt)
foreign import ccall "wrapper" mk'git_config_open_callback
  :: (Ptr C'git_config_file -> IO CInt) -> IO C'git_config_open_callback
foreign import ccall "dynamic" mK'git_config_open_callback
  :: C'git_config_open_callback -> (Ptr C'git_config_file -> IO CInt)

{-# LINE 33 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_get_callback = FunPtr (Ptr C'git_config_file -> CString -> Ptr (CString) -> IO CInt)
foreign import ccall "wrapper" mk'git_config_get_callback
  :: (Ptr C'git_config_file -> CString -> Ptr (CString) -> IO CInt) -> IO C'git_config_get_callback
foreign import ccall "dynamic" mK'git_config_get_callback
  :: C'git_config_get_callback -> (Ptr C'git_config_file -> CString -> Ptr (CString) -> IO CInt)

{-# LINE 34 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_get_multivar_inner_callback = FunPtr (CString -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_config_get_multivar_inner_callback
  :: (CString -> Ptr () -> IO CInt) -> IO C'git_config_get_multivar_inner_callback
foreign import ccall "dynamic" mK'git_config_get_multivar_inner_callback
  :: C'git_config_get_multivar_inner_callback -> (CString -> Ptr () -> IO CInt)

{-# LINE 35 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_get_multivar_callback = FunPtr (Ptr C'git_config_file -> CString -> CString -> C'git_config_get_multivar_inner_callback -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_config_get_multivar_callback
  :: (Ptr C'git_config_file -> CString -> CString -> C'git_config_get_multivar_inner_callback -> Ptr () -> IO CInt) -> IO C'git_config_get_multivar_callback
foreign import ccall "dynamic" mK'git_config_get_multivar_callback
  :: C'git_config_get_multivar_callback -> (Ptr C'git_config_file -> CString -> CString -> C'git_config_get_multivar_inner_callback -> Ptr () -> IO CInt)

{-# LINE 36 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_set_callback = FunPtr (Ptr C'git_config_file -> CString -> CString -> IO CInt)
foreign import ccall "wrapper" mk'git_config_set_callback
  :: (Ptr C'git_config_file -> CString -> CString -> IO CInt) -> IO C'git_config_set_callback
foreign import ccall "dynamic" mK'git_config_set_callback
  :: C'git_config_set_callback -> (Ptr C'git_config_file -> CString -> CString -> IO CInt)

{-# LINE 37 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_set_multivar_callback = FunPtr (Ptr C'git_config_file -> CString -> CString -> CString -> IO CInt)
foreign import ccall "wrapper" mk'git_config_set_multivar_callback
  :: (Ptr C'git_config_file -> CString -> CString -> CString -> IO CInt) -> IO C'git_config_set_multivar_callback
foreign import ccall "dynamic" mK'git_config_set_multivar_callback
  :: C'git_config_set_multivar_callback -> (Ptr C'git_config_file -> CString -> CString -> CString -> IO CInt)

{-# LINE 38 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_del_callback = FunPtr (Ptr C'git_config_file -> CString -> IO CInt)
foreign import ccall "wrapper" mk'git_config_del_callback
  :: (Ptr C'git_config_file -> CString -> IO CInt) -> IO C'git_config_del_callback
foreign import ccall "dynamic" mK'git_config_del_callback
  :: C'git_config_del_callback -> (Ptr C'git_config_file -> CString -> IO CInt)

{-# LINE 39 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_foreach_inner_callback = FunPtr (CString -> CString -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_config_foreach_inner_callback
  :: (CString -> CString -> Ptr () -> IO CInt) -> IO C'git_config_foreach_inner_callback
foreign import ccall "dynamic" mK'git_config_foreach_inner_callback
  :: C'git_config_foreach_inner_callback -> (CString -> CString -> Ptr () -> IO CInt)

{-# LINE 40 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_foreach_callback = FunPtr (Ptr C'git_config_file -> C'git_config_foreach_inner_callback -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'git_config_foreach_callback
  :: (Ptr C'git_config_file -> C'git_config_foreach_inner_callback -> Ptr () -> IO CInt) -> IO C'git_config_foreach_callback
foreign import ccall "dynamic" mK'git_config_foreach_callback
  :: C'git_config_foreach_callback -> (Ptr C'git_config_file -> C'git_config_foreach_inner_callback -> Ptr () -> IO CInt)

{-# LINE 41 "Bindings/Libgit2/Config.hsc" #-}
type C'git_config_free_callback = FunPtr (Ptr C'git_config_file -> IO ())
foreign import ccall "wrapper" mk'git_config_free_callback
  :: (Ptr C'git_config_file -> IO ()) -> IO C'git_config_free_callback
foreign import ccall "dynamic" mK'git_config_free_callback
  :: C'git_config_free_callback -> (Ptr C'git_config_file -> IO ())

{-# LINE 42 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 43 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 44 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 45 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 46 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 47 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 48 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 49 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 50 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 51 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 52 "Bindings/Libgit2/Config.hsc" #-}
data C'git_config_file = C'git_config_file{
  c'git_config_file'cfg :: Ptr C'git_config,
  c'git_config_file'open :: C'git_config_open_callback,
  c'git_config_file'get :: C'git_config_get_callback,
  c'git_config_file'get_multivar :: C'git_config_get_multivar_callback,
  c'git_config_file'set :: C'git_config_set_callback,
  c'git_config_file'set_multivar :: C'git_config_set_multivar_callback,
  c'git_config_file'del :: C'git_config_del_callback,
  c'git_config_file'foreach :: C'git_config_foreach_callback,
  c'git_config_file'free :: C'git_config_free_callback
} deriving (Eq,Show)
p'git_config_file'cfg p = plusPtr p 0
p'git_config_file'cfg :: Ptr (C'git_config_file) -> Ptr (Ptr C'git_config)
p'git_config_file'open p = plusPtr p 4
p'git_config_file'open :: Ptr (C'git_config_file) -> Ptr (C'git_config_open_callback)
p'git_config_file'get p = plusPtr p 8
p'git_config_file'get :: Ptr (C'git_config_file) -> Ptr (C'git_config_get_callback)
p'git_config_file'get_multivar p = plusPtr p 12
p'git_config_file'get_multivar :: Ptr (C'git_config_file) -> Ptr (C'git_config_get_multivar_callback)
p'git_config_file'set p = plusPtr p 16
p'git_config_file'set :: Ptr (C'git_config_file) -> Ptr (C'git_config_set_callback)
p'git_config_file'set_multivar p = plusPtr p 20
p'git_config_file'set_multivar :: Ptr (C'git_config_file) -> Ptr (C'git_config_set_multivar_callback)
p'git_config_file'del p = plusPtr p 24
p'git_config_file'del :: Ptr (C'git_config_file) -> Ptr (C'git_config_del_callback)
p'git_config_file'foreach p = plusPtr p 28
p'git_config_file'foreach :: Ptr (C'git_config_file) -> Ptr (C'git_config_foreach_callback)
p'git_config_file'free p = plusPtr p 32
p'git_config_file'free :: Ptr (C'git_config_file) -> Ptr (C'git_config_free_callback)
instance Storable C'git_config_file where
  sizeOf _ = 36
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    v3 <- peekByteOff p 12
    v4 <- peekByteOff p 16
    v5 <- peekByteOff p 20
    v6 <- peekByteOff p 24
    v7 <- peekByteOff p 28
    v8 <- peekByteOff p 32
    return $ C'git_config_file v0 v1 v2 v3 v4 v5 v6 v7 v8
  poke p (C'git_config_file v0 v1 v2 v3 v4 v5 v6 v7 v8) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    pokeByteOff p 12 v3
    pokeByteOff p 16 v4
    pokeByteOff p 20 v5
    pokeByteOff p 24 v6
    pokeByteOff p 28 v7
    pokeByteOff p 32 v8
    return ()

{-# LINE 53 "Bindings/Libgit2/Config.hsc" #-}
{- typedef enum {
            GIT_CVAR_FALSE = 0,
            GIT_CVAR_TRUE = 1,
            GIT_CVAR_INT32,
            GIT_CVAR_STRING
        } git_cvar_t; -}
type C'git_cvar_t = CUInt

{-# LINE 60 "Bindings/Libgit2/Config.hsc" #-}
c'GIT_CVAR_FALSE = 0
c'GIT_CVAR_FALSE :: (Num a) => a

{-# LINE 61 "Bindings/Libgit2/Config.hsc" #-}
c'GIT_CVAR_TRUE = 1
c'GIT_CVAR_TRUE :: (Num a) => a

{-# LINE 62 "Bindings/Libgit2/Config.hsc" #-}
c'GIT_CVAR_INT32 = 2
c'GIT_CVAR_INT32 :: (Num a) => a

{-# LINE 63 "Bindings/Libgit2/Config.hsc" #-}
c'GIT_CVAR_STRING = 3
c'GIT_CVAR_STRING :: (Num a) => a

{-# LINE 64 "Bindings/Libgit2/Config.hsc" #-}
{- typedef struct {
            git_cvar_t cvar_type; const char * str_match; int map_value;
        } git_cvar_map; -}

{-# LINE 68 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 69 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 70 "Bindings/Libgit2/Config.hsc" #-}

{-# LINE 71 "Bindings/Libgit2/Config.hsc" #-}
data C'git_cvar_map = C'git_cvar_map{
  c'git_cvar_map'cvar_type :: C'git_cvar_t,
  c'git_cvar_map'str_match :: CString,
  c'git_cvar_map'map_value :: CInt
} deriving (Eq,Show)
p'git_cvar_map'cvar_type p = plusPtr p 0
p'git_cvar_map'cvar_type :: Ptr (C'git_cvar_map) -> Ptr (C'git_cvar_t)
p'git_cvar_map'str_match p = plusPtr p 4
p'git_cvar_map'str_match :: Ptr (C'git_cvar_map) -> Ptr (CString)
p'git_cvar_map'map_value p = plusPtr p 8
p'git_cvar_map'map_value :: Ptr (C'git_cvar_map) -> Ptr (CInt)
instance Storable C'git_cvar_map where
  sizeOf _ = 12
  alignment _ = 4
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekByteOff p 8
    return $ C'git_cvar_map v0 v1 v2
  poke p (C'git_cvar_map v0 v1 v2) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeByteOff p 8 v2
    return ()

{-# LINE 72 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_find_global" c'git_config_find_global
  :: CString -> CSize -> IO (CInt)
foreign import ccall "&git_config_find_global" p'git_config_find_global
  :: FunPtr (CString -> CSize -> IO (CInt))

{-# LINE 73 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_find_system" c'git_config_find_system
  :: CString -> CSize -> IO (CInt)
foreign import ccall "&git_config_find_system" p'git_config_find_system
  :: FunPtr (CString -> CSize -> IO (CInt))

{-# LINE 74 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_open_global" c'git_config_open_global
  :: Ptr (Ptr C'git_config) -> IO (CInt)
foreign import ccall "&git_config_open_global" p'git_config_open_global
  :: FunPtr (Ptr (Ptr C'git_config) -> IO (CInt))

{-# LINE 75 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_file__ondisk" c'git_config_file__ondisk
  :: Ptr (Ptr C'git_config_file) -> CString -> IO (CInt)
foreign import ccall "&git_config_file__ondisk" p'git_config_file__ondisk
  :: FunPtr (Ptr (Ptr C'git_config_file) -> CString -> IO (CInt))

{-# LINE 76 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_new" c'git_config_new
  :: Ptr (Ptr C'git_config) -> IO (CInt)
foreign import ccall "&git_config_new" p'git_config_new
  :: FunPtr (Ptr (Ptr C'git_config) -> IO (CInt))

{-# LINE 77 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_add_file" c'git_config_add_file
  :: Ptr C'git_config -> Ptr C'git_config_file -> CInt -> IO (CInt)
foreign import ccall "&git_config_add_file" p'git_config_add_file
  :: FunPtr (Ptr C'git_config -> Ptr C'git_config_file -> CInt -> IO (CInt))

{-# LINE 78 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_add_file_ondisk" c'git_config_add_file_ondisk
  :: Ptr C'git_config -> CString -> CInt -> IO (CInt)
foreign import ccall "&git_config_add_file_ondisk" p'git_config_add_file_ondisk
  :: FunPtr (Ptr C'git_config -> CString -> CInt -> IO (CInt))

{-# LINE 79 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_open_ondisk" c'git_config_open_ondisk
  :: Ptr (Ptr C'git_config) -> CString -> IO (CInt)
foreign import ccall "&git_config_open_ondisk" p'git_config_open_ondisk
  :: FunPtr (Ptr (Ptr C'git_config) -> CString -> IO (CInt))

{-# LINE 80 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_free" c'git_config_free
  :: Ptr C'git_config -> IO ()
foreign import ccall "&git_config_free" p'git_config_free
  :: FunPtr (Ptr C'git_config -> IO ())

{-# LINE 81 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_int32" c'git_config_get_int32
  :: Ptr CInt -> Ptr C'git_config -> CString -> IO (CInt)
foreign import ccall "&git_config_get_int32" p'git_config_get_int32
  :: FunPtr (Ptr CInt -> Ptr C'git_config -> CString -> IO (CInt))

{-# LINE 82 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_int64" c'git_config_get_int64
  :: Ptr CLong -> Ptr C'git_config -> CString -> IO (CInt)
foreign import ccall "&git_config_get_int64" p'git_config_get_int64
  :: FunPtr (Ptr CLong -> Ptr C'git_config -> CString -> IO (CInt))

{-# LINE 83 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_bool" c'git_config_get_bool
  :: Ptr CInt -> Ptr C'git_config -> CString -> IO (CInt)
foreign import ccall "&git_config_get_bool" p'git_config_get_bool
  :: FunPtr (Ptr CInt -> Ptr C'git_config -> CString -> IO (CInt))

{-# LINE 84 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_string" c'git_config_get_string
  :: Ptr (CString) -> Ptr C'git_config -> CString -> IO (CInt)
foreign import ccall "&git_config_get_string" p'git_config_get_string
  :: FunPtr (Ptr (CString) -> Ptr C'git_config -> CString -> IO (CInt))

{-# LINE 85 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_multivar" c'git_config_get_multivar
  :: Ptr C'git_config -> CString -> CString -> C'git_config_get_multivar_inner_callback -> Ptr () -> IO (CInt)
foreign import ccall "&git_config_get_multivar" p'git_config_get_multivar
  :: FunPtr (Ptr C'git_config -> CString -> CString -> C'git_config_get_multivar_inner_callback -> Ptr () -> IO (CInt))

{-# LINE 86 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_set_int32" c'git_config_set_int32
  :: Ptr C'git_config -> CString -> CInt -> IO (CInt)
foreign import ccall "&git_config_set_int32" p'git_config_set_int32
  :: FunPtr (Ptr C'git_config -> CString -> CInt -> IO (CInt))

{-# LINE 87 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_set_int64" c'git_config_set_int64
  :: Ptr C'git_config -> CString -> CLong -> IO (CInt)
foreign import ccall "&git_config_set_int64" p'git_config_set_int64
  :: FunPtr (Ptr C'git_config -> CString -> CLong -> IO (CInt))

{-# LINE 88 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_set_bool" c'git_config_set_bool
  :: Ptr C'git_config -> CString -> CInt -> IO (CInt)
foreign import ccall "&git_config_set_bool" p'git_config_set_bool
  :: FunPtr (Ptr C'git_config -> CString -> CInt -> IO (CInt))

{-# LINE 89 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_set_string" c'git_config_set_string
  :: Ptr C'git_config -> CString -> CString -> IO (CInt)
foreign import ccall "&git_config_set_string" p'git_config_set_string
  :: FunPtr (Ptr C'git_config -> CString -> CString -> IO (CInt))

{-# LINE 90 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_set_multivar" c'git_config_set_multivar
  :: Ptr C'git_config -> CString -> CString -> CString -> IO (CInt)
foreign import ccall "&git_config_set_multivar" p'git_config_set_multivar
  :: FunPtr (Ptr C'git_config -> CString -> CString -> CString -> IO (CInt))

{-# LINE 91 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_delete" c'git_config_delete
  :: Ptr C'git_config -> CString -> IO (CInt)
foreign import ccall "&git_config_delete" p'git_config_delete
  :: FunPtr (Ptr C'git_config -> CString -> IO (CInt))

{-# LINE 92 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_foreach" c'git_config_foreach
  :: Ptr C'git_config -> C'git_config_foreach_inner_callback -> Ptr () -> IO (CInt)
foreign import ccall "&git_config_foreach" p'git_config_foreach
  :: FunPtr (Ptr C'git_config -> C'git_config_foreach_inner_callback -> Ptr () -> IO (CInt))

{-# LINE 93 "Bindings/Libgit2/Config.hsc" #-}
foreign import ccall "git_config_get_mapped" c'git_config_get_mapped
  :: Ptr CInt -> Ptr C'git_config -> CString -> Ptr C'git_cvar_map -> CSize -> IO (CInt)
foreign import ccall "&git_config_get_mapped" p'git_config_get_mapped
  :: FunPtr (Ptr CInt -> Ptr C'git_config -> CString -> Ptr C'git_cvar_map -> CSize -> IO (CInt))

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