module Sqlite3Functions where
import Foreign
import Foreign.C
import Bindings.Utilities
import Sqlite3Types

foreign import ccall "_sqlite3_version" sqlite3_version
    :: CString

foreign import ccall "sqlite3_libversion" sqlite3_libversion
    :: IO CString

foreign import ccall "sqlite3_libversion_number" sqlite3_libversion_number
    :: CInt

foreign import ccall "sqlite3_threadsafe" sqlite3_threadsafe
    :: IO CInt

foreign import ccall "sqlite3_close" sqlite3_close
    :: Ptr Sqlite3 -> CInt

foreign import ccall "sqlite3_exec" sqlite3_exec
    :: Ptr Sqlite3 -> CString -> FunPtr (Ptr a -> CInt ->
       Ptr CString -> Ptr CString -> IO CInt) -> Ptr a ->
       Ptr CString -> IO CInt

foreign import ccall "sqlite3_initialize" sqlite3_initialize
    :: CInt

foreign import ccall "sqlite3_shutdown" sqlite3_shutdown
    :: CInt

foreign import ccall "sqlite3_os_init" sqlite3_os_init
    :: CInt

foreign import ccall "sqlite3_os_end" sqlite3_os_end
    :: CInt

foreign import ccall "sqlite3_extended_result_codes" 
 sqlite3_extended_result_codes
    :: Ptr Sqlite3 -> CInt -> IO CInt

foreign import ccall "sqlite3_last_insert_rowid" 
 sqlite3_last_insert_rowid
    :: Ptr Sqlite3 -> IO Int64

foreign import ccall "sqlite3_changes" sqlite3_changes
    :: Ptr Sqlite3 -> IO CInt

foreign import ccall "sqlite3_total_changes" sqlite3_total_changes
    :: Ptr Sqlite3 -> IO CInt

foreign import ccall "sqlite3_interrupt" sqlite3_interrupt
    :: Ptr Sqlite3 -> IO ()

foreign import ccall "sqlite3_complete" sqlite3_complete
    :: CString -> IO CInt

foreign import ccall "sqlite3_complete16" sqlite3_complete16
    :: Ptr () -> IO CInt

foreign import ccall "sqlite3_busy_handler" sqlite3_busy_handler
    :: Ptr Sqlite3 -> FunPtr (Ptr a -> CInt -> IO CInt) ->
       Ptr a -> IO CInt

foreign import ccall "sqlite3_busy_timeout" sqlite3_busy_timeout
    :: Ptr Sqlite3 -> CInt -> IO CInt

foreign import ccall "sqlite3_get_table" sqlite3_get_table
    :: Ptr Sqlite3 -> CString -> Ptr (Ptr CString) ->
       Ptr CInt -> Ptr CInt -> Ptr CString -> IO CInt

foreign import ccall "sqlite3_free_table" sqlite3_free_table
    :: Ptr CString -> IO ()

foreign import ccall "sqlite3_malloc" sqlite3_malloc
    :: CInt -> IO (Ptr ())

foreign import ccall "sqlite3_realloc" sqlite3_realloc
    :: Ptr () -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_free" sqlite3_free
    :: Ptr () -> IO ()

foreign import ccall "sqlite3_memory_used" sqlite3_memory_used
    :: IO Int64

foreign import ccall "sqlite3_memory_highwater" sqlite3_memory_highwater
    :: CInt -> IO Int64

foreign import ccall "sqlite3_randomness" sqlite3_randomness
    :: CInt -> Ptr () -> IO ()

foreign import ccall "sqlite3_set_authorizer" sqlite3_set_authorizer
    :: Ptr Sqlite3 -> FunPtr (Ptr a -> CInt -> CString ->
       CString -> CString -> CString -> IO CInt) -> Ptr a -> IO CInt

foreign import ccall "sqlite3_progress_handler" sqlite3_progress_handler
    :: Ptr Sqlite3 -> CInt -> FunPtr (Ptr a -> IO CInt) ->
       Ptr a -> IO ()

foreign import ccall "sqlite3_open" sqlite3_open
    :: CString -> Ptr (Ptr Sqlite3) -> IO CInt

foreign import ccall "sqlite3_open16" sqlite3_open16
    :: Ptr () -> Ptr (Ptr Sqlite3) -> IO CInt

foreign import ccall "sqlite3_open_v2" sqlite3_open_v2
    :: CString -> Ptr (Ptr Sqlite3) -> CInt -> CString -> IO CInt

foreign import ccall "sqlite3_errcode" sqlite3_errcode
    :: Ptr Sqlite3 -> IO CInt

foreign import ccall "sqlite3_extended_errcode" sqlite3_extended_errcode
    :: Ptr Sqlite3 -> IO CInt

foreign import ccall "sqlite3_errmsg" sqlite3_errmsg
    :: Ptr Sqlite3 -> IO CString

foreign import ccall "sqlite3_errmsg16" sqlite3_errmsg16
    :: Ptr Sqlite3 -> IO (Ptr ())

foreign import ccall "sqlite3_limit" sqlite3_limit
    :: Ptr Sqlite3 -> CInt -> CInt -> IO CInt

foreign import ccall "sqlite3_prepare" sqlite3_prepare
    :: Ptr Sqlite3 -> CString -> CInt -> Ptr (Ptr Sqlite3_stmt) ->
       Ptr CString -> IO CInt

foreign import ccall "sqlite3_prepare_v2" sqlite3_prepare_v2
    :: Ptr Sqlite3 -> CString -> CInt -> Ptr (Ptr Sqlite3) ->
       Ptr CString -> IO CInt

foreign import ccall "sqlite3_prepare16" sqlite3_prepare16
    :: Ptr Sqlite3 -> Ptr () -> CInt -> Ptr (Ptr Sqlite3_stmt) ->
       Ptr (Ptr ()) -> IO CInt

foreign import ccall "sqlite3_prepare16_v2" sqlite3_prepare16_v2
    :: Ptr Sqlite3 -> Ptr () -> CInt -> Ptr (Ptr Sqlite3_stmt) ->
       Ptr (Ptr ()) -> IO CInt

foreign import ccall "sqlite3_sql" sqlite3_sql
    :: Ptr Sqlite3_stmt -> IO CString

foreign import ccall "sqlite3_bind_blob" sqlite3_bind_blob
    :: Ptr Sqlite3_stmt -> CInt -> Ptr () ->
       CInt -> Sqlite3_destructor_type ()-> IO CInt

foreign import ccall "sqlite3_bind_double" sqlite3_bind_double
    :: Ptr Sqlite3_stmt -> CInt -> CDouble -> IO CInt

foreign import ccall "sqlite3_bind_int" sqlite3_bind_int
    :: Ptr Sqlite3_stmt -> CInt -> CInt -> IO CInt

foreign import ccall "sqlite3_bind_int64" sqlite3_bind_int64
    :: Ptr Sqlite3_stmt -> CInt -> Int64 -> IO CInt

foreign import ccall "sqlite3_bind_null" sqlite3_bind_null
    :: Ptr Sqlite3_stmt -> CInt -> IO CInt

foreign import ccall "sqlite3_bind_text" sqlite3_bind_text
    :: Ptr Sqlite3_stmt -> CInt -> CString -> CInt ->
       Sqlite3_destructor_type CString -> IO CInt

foreign import ccall "sqlite3_bind_text16" sqlite3_bind_text16
    :: Ptr Sqlite3_stmt -> CInt -> Ptr () -> CInt ->
       Sqlite3_destructor_type ()-> IO CInt

foreign import ccall "sqlite3_bind_value" sqlite3_bind_value
    :: Ptr Sqlite3_stmt -> CInt -> Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_bind_zeroblob" sqlite3_bind_zeroblob
    :: Ptr Sqlite3_stmt -> CInt -> CInt -> IO CInt

foreign import ccall "sqlite3_bind_parameter_count"
 sqlite3_bind_parameter_count
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_bind_parameter_name"
 sqlite3_bind_parameter_name
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_bind_parameter_index"
 sqlite3_bind_parameter_index
    :: Ptr Sqlite3_stmt -> CString -> IO CInt

foreign import ccall "sqlite3_clear_bindings" sqlite3_clear_bindings
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_column_count" sqlite3_column_count
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_column_name" sqlite3_column_name
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_name16" sqlite3_column_name16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_database_name"
 sqlite3_column_database_name
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_database_name16"
 sqlite3_column_database_name16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_table_name"
 sqlite3_column_table_name
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_table_name16"
 sqlite3_column_table_name16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_origin_name"
 sqlite3_column_origin_name
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_origin_name16"
 sqlite3_column_origin_name16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_decltype"
 sqlite3_column_decltype
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_decltype16"
 sqlite3_column_decltype16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_step" sqlite3_step
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_data_count" sqlite3_data_count
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_column_blob" sqlite3_column_blob
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_bytes" sqlite3_column_bytes
    :: Ptr Sqlite3_stmt -> CInt -> IO CInt

foreign import ccall "sqlite3_column_bytes16" sqlite3_column_bytes16
    :: Ptr Sqlite3_stmt -> CInt -> IO CInt

foreign import ccall "sqlite3_column_double" sqlite3_column_double
    :: Ptr Sqlite3_stmt -> CInt -> IO CDouble

foreign import ccall "sqlite3_column_int" sqlite3_column_int
    :: Ptr Sqlite3_stmt -> CInt -> IO CInt

foreign import ccall "sqlite3_column_int64" sqlite3_column_int64
    :: Ptr Sqlite3_stmt -> CInt -> IO Int64

foreign import ccall "sqlite3_column_text" sqlite3_column_text
    :: Ptr Sqlite3_stmt -> CInt -> IO CString

foreign import ccall "sqlite3_column_text16" sqlite3_column_text16
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_column_type" sqlite3_column_type
    :: Ptr Sqlite3_stmt -> CInt -> IO CInt

foreign import ccall "sqlite3_column_value" sqlite3_column_value
    :: Ptr Sqlite3_stmt -> CInt -> IO (Ptr Sqlite3_value)

foreign import ccall "sqlite3_finalize" sqlite3_finalize
    :: Ptr Sqlite3_stmt -> IO CInt

foreign import ccall "sqlite3_create_function" sqlite3_create_function
    :: Ptr Sqlite3 -> CString -> CInt -> CInt -> Ptr () ->
       FunPtr (Ptr Sqlite3_context -> CInt -> Ptr (Ptr Sqlite3_value) ->
       IO ()) -> FunPtr (Ptr Sqlite3_context -> CInt -> Ptr
       (Ptr Sqlite3_value) -> IO ()) -> FunPtr (Ptr Sqlite3_context ->
       IO ()) -> IO CInt

foreign import ccall "sqlite3_create_function16" sqlite3_create_function16
    :: Ptr Sqlite3 -> Ptr () -> CInt -> CInt -> Ptr () ->
       FunPtr (Ptr Sqlite3_context -> CInt -> Ptr (Ptr Sqlite3_value) ->
       IO ()) -> FunPtr (Ptr Sqlite3_context -> CInt -> Ptr 
       (Ptr Sqlite3_value) -> IO ()) -> FunPtr (Ptr Sqlite3_context ->
       IO ()) -> IO CInt

foreign import ccall "sqlite3_value_blob" sqlite3_value_blob
    :: Ptr Sqlite3_value -> IO (Ptr ())

foreign import ccall "sqlite3_value_bytes" sqlite3_value_bytes
    :: Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_value_bytes16" sqlite3_value_bytes16
    :: Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_value_double" sqlite3_value_double
    :: Ptr Sqlite3_value -> IO CDouble

foreign import ccall "sqlite3_value_int" sqlite3_value_int
    :: Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_value_int64" sqlite3_value_int64
    :: Ptr Sqlite3_value -> IO Int64

foreign import ccall "sqlite3_value_text" sqlite3_value_text
    :: Ptr Sqlite3_value -> IO CString

foreign import ccall "sqlite3_value_text16" sqlite3_value_text16
    :: Ptr Sqlite3_value -> IO (Ptr ())

foreign import ccall "sqlite3_value_text16le" sqlite3_value_text16le
    :: Ptr Sqlite3_value -> IO (Ptr ())

foreign import ccall "sqlite3_value_text16be" sqlite3_value_text16be
    :: Ptr Sqlite3_value -> IO (Ptr ())

foreign import ccall "sqlite3_value_type" sqlite3_value_type
    :: Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_value_numeric_type"
 sqlite3_value_numeric_type
    :: Ptr Sqlite3_value -> IO CInt

foreign import ccall "sqlite3_aggregate_context"
 sqlite3_aggregate_context
    :: Ptr Sqlite3_context -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_user_data" sqlite3_user_data
    :: Ptr Sqlite3_context -> IO (Ptr ())

foreign import ccall "sqlite3_context_db_handle"
 sqlite3_context_db_handle
    :: Ptr Sqlite3_context -> IO (Ptr Sqlite3)

foreign import ccall "sqlite3_get_auxdata" sqlite3_get_auxdata
    :: Ptr Sqlite3_context -> CInt -> IO (Ptr ())

foreign import ccall "sqlite3_set_auxdata" sqlite3_set_auxdata
    :: Ptr Sqlite3_context -> CInt -> Ptr () ->
       Sqlite3_destructor_type ()-> IO ()

foreign import ccall "sqlite3_result_blob" sqlite3_result_blob
    :: Ptr Sqlite3_context -> Ptr () -> CInt ->
       Sqlite3_destructor_type ()-> IO ()

foreign import ccall "sqlite3_result_double" sqlite3_result_double
    :: Ptr Sqlite3_context -> CDouble -> IO ()

foreign import ccall "sqlite3_result_error" sqlite3_result_error
    :: Ptr Sqlite3_context -> CString -> CInt -> IO ()

foreign import ccall "sqlite3_result_error16" sqlite3_result_error16
    :: Ptr Sqlite3_context -> Ptr () -> CInt -> IO ()

foreign import ccall "sqlite3_result_error_toobig"
 sqlite3_result_error_toobig
    :: Ptr Sqlite3_context -> IO ()

foreign import ccall "sqlite3_result_error_nomem"
 sqlite3_result_error_nomem
    :: Ptr Sqlite3_context -> IO ()

foreign import ccall "sqlite3_result_error_code" sqlite3_result_error_code
    :: Ptr Sqlite3_context -> CInt -> IO ()

foreign import ccall "sqlite3_result_int" sqlite3_result_int
    :: Ptr Sqlite3_context -> CInt -> IO ()

foreign import ccall "sqlite3_result_int64" sqlite3_result_int64
    :: Ptr Sqlite3_context -> Int64 -> IO ()

foreign import ccall "sqlite3_result_null" sqlite3_result_null
    :: Ptr Sqlite3_context -> IO ()

foreign import ccall "sqlite3_result_text" sqlite3_result_text
    :: Ptr Sqlite3_context -> CString -> CInt ->
       Sqlite3_destructor_type CString -> IO ()

foreign import ccall "sqlite3_result_text16" sqlite3_result_text16
    :: Ptr Sqlite3_context -> Ptr () -> CInt ->
       Sqlite3_destructor_type ()-> IO ()

foreign import ccall "sqlite3_result_text16le" sqlite3_result_text16le
    :: Ptr Sqlite3_context -> Ptr () -> CInt ->
       Sqlite3_destructor_type ()-> IO ()

foreign import ccall "sqlite3_result_text16be" sqlite3_result_text16be
    :: Ptr Sqlite3_context -> Ptr () -> CInt ->
       Sqlite3_destructor_type ()-> IO ()

foreign import ccall "sqlite3_result_value" sqlite3_result_value
    :: Ptr Sqlite3_context -> Ptr Sqlite3_value -> IO ()

foreign import ccall "sqlite3_result_zeroblob" sqlite3_result_zeroblob
    :: Ptr Sqlite3_context -> CInt -> IO ()

foreign import ccall "sqlite3_create_collation"
 sqlite3_create_collation
    :: Ptr Sqlite3 -> CString -> CInt -> Ptr a ->
       FunPtr (Ptr a -> CInt -> Ptr () -> CInt -> Ptr () -> IO CInt) ->
       IO CInt

foreign import ccall "sqlite3_create_collation_v2"
 sqlite3_create_collation_v2
    :: Ptr Sqlite3 -> CString -> CInt -> Ptr a ->
       FunPtr (Ptr a -> CInt -> Ptr () -> CInt -> Ptr () -> IO CInt) ->
       Sqlite3_destructor_type a -> IO CInt

foreign import ccall "sqlite3_create_collation16"
 sqlite3_create_collation16
    :: Ptr Sqlite3 -> Ptr () -> CInt -> Ptr a ->
       FunPtr (Ptr a -> CInt -> Ptr () -> CInt -> Ptr () -> IO CInt) ->
       IO CInt

foreign import ccall "sqlite3_collation_needed"
 sqlite3_collation_needed
    :: Ptr Sqlite3 -> Ptr a -> FunPtr (Ptr a -> Ptr Sqlite3 ->
       CInt -> CString -> IO ()) -> IO CInt

foreign import ccall "sqlite3_collation_needed16"
 sqlite3_collation_needed16
    :: Ptr Sqlite3 -> Ptr a -> FunPtr (Ptr a -> Ptr Sqlite3 ->
       CInt -> Ptr () -> IO ()) -> IO CInt

foreign import ccall "sqlite3_sleep" sqlite3_sleep
    :: CInt -> IO CInt

foreign import ccall "&sqlite_temp_directory" sqlite_temp_directory
    :: GlobalVariable CString

foreign import ccall "sqlite3_get_autocommit" sqlite3_get_autocommit
    :: Ptr Sqlite3 -> IO CInt

foreign import ccall "sqlite3_db_handle" sqlite3_db_handle
    :: Ptr Sqlite3_stmt -> IO (Ptr Sqlite3)

foreign import ccall "sqlite3_next_stmt" sqlite3_next_stmt
    :: Ptr Sqlite3 -> Ptr Sqlite3_stmt -> IO (Ptr Sqlite3_stmt)

foreign import ccall "sqlite3_commit_hook" sqlite3_commit_hook
    :: Ptr Sqlite3 -> FunPtr (Ptr a -> IO CInt) -> Ptr a -> IO (Ptr ())

foreign import ccall "sqlite3_rollback_hook" sqlite3_rollback_hook
    :: Ptr Sqlite3 -> FunPtr (Ptr a -> IO ()) -> Ptr a -> IO (Ptr ())

foreign import ccall "sqlite3_update_hook" sqlite3_update_hook
    :: Ptr Sqlite3 -> FunPtr (Ptr a -> CInt -> CString -> CString ->
       Int64 -> IO ()) -> Ptr a -> IO (Ptr ())

foreign import ccall "sqlite3_enable_shared_cache"
 sqlite3_enable_shared_cache
    :: CInt -> IO CInt

foreign import ccall "sqlite3_release_memory" sqlite3_release_memory
    :: CInt -> IO CInt

foreign import ccall "sqlite3_soft_heap_limit" sqlite3_soft_heap_limit
    :: CInt -> IO ()

foreign import ccall "sqlite3_load_extension" sqlite3_load_extension
    :: Ptr Sqlite3 -> CString -> CString -> Ptr CString -> IO CInt

foreign import ccall "sqlite3_enable_load_extension"
 sqlite3_enable_load_extension
    :: Ptr Sqlite3 -> CInt -> IO CInt

foreign import ccall "sqlite3_auto_extension" sqlite3_auto_extension
    :: FunPtr (IO ()) -> IO CInt

foreign import ccall "sqlite3_reset_auto_extension"
 sqlite3_reset_auto_extension
    :: IO ()

foreign import ccall "sqlite3_blob_open" sqlite3_blob_open
    :: Ptr Sqlite3 -> CString -> CString -> CString -> Int64 -> CInt ->
       Ptr (Ptr Sqlite3_blob) -> IO CInt

foreign import ccall "sqlite3_blob_close" sqlite3_blob_close
    :: Ptr Sqlite3_blob -> IO CInt

foreign import ccall "sqlite3_blob_bytes" sqlite3_blob_bytes
    :: Ptr Sqlite3_blob -> IO CInt

foreign import ccall "sqlite3_blob_read" sqlite3_blob_read
    :: Ptr Sqlite3_blob -> Ptr () -> CInt -> CInt -> IO CInt

foreign import ccall "sqlite3_blob_write" sqlite3_blob_write
    :: Ptr Sqlite3_blob -> Ptr () -> CInt -> CInt -> IO CInt

foreign import ccall "sqlite3_vfs_find" sqlite3_vfs_find
    :: CString -> Ptr Sqlite3_vfs

foreign import ccall "sqlite3_vfs_register" sqlite3_vfs_register
    :: Ptr Sqlite3_vfs -> CInt -> IO CInt

foreign import ccall "sqlite3_vfs_unregister" sqlite3_vfs_unregister
    :: Ptr Sqlite3_vfs -> IO CInt

foreign import ccall "sqlite3_mutex_alloc" sqlite3_mutex_alloc
    :: CInt -> IO (Ptr Sqlite3_mutex)

foreign import ccall "sqlite3_mutex_free" sqlite3_mutex_free
    :: Ptr Sqlite3_mutex -> IO ()

foreign import ccall "sqlite3_mutex_enter" sqlite3_mutex_enter
    :: Ptr Sqlite3_mutex -> IO ()

foreign import ccall "sqlite3_mutex_try" sqlite3_mutex_try
    :: Ptr Sqlite3_mutex -> IO CInt

foreign import ccall "sqlite3_mutex_leave" sqlite3_mutex_leave
    :: Ptr Sqlite3_mutex -> IO ()

foreign import ccall "sqlite3_mutex_held" sqlite3_mutex_held
    :: Ptr Sqlite3_mutex -> IO CInt

foreign import ccall "sqlite3_mutex_notheld" sqlite3_mutex_notheld
    :: Ptr Sqlite3_mutex -> IO CInt

foreign import ccall "sqlite3_db_mutex" sqlite3_db_mutex
    :: Ptr Sqlite3 -> IO (Ptr Sqlite3_mutex)

foreign import ccall "sqlite3_file_control" sqlite3_file_control
    :: Ptr Sqlite3 -> CString -> CInt -> Ptr () -> IO CInt