{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE EmptyDataDecls #-}
module Database.PostgreSQL.LibPQ.FFI where
import Data.Word (Word8)
import Foreign.C.String (CString)
import Foreign.C.Types (CChar, CInt (..), CSize (..), CUInt (..))
import Foreign.Ptr (FunPtr, Ptr)
import Database.PostgreSQL.LibPQ.Internal (CNoticeBuffer, NoticeBuffer, PGconn)
import Database.PostgreSQL.LibPQ.Notify (Notify, PGnotice)
import Database.PostgreSQL.LibPQ.Oid (Oid (..))
data PGresult
data PGcancel
type CFd = CInt
type NoticeReceiver = NoticeBuffer -> Ptr PGresult -> IO ()
foreign import capi "hs-libpq.h PQconnectdb"
c_PQconnectdb :: CString -> IO (Ptr PGconn)
foreign import capi "hs-libpq.h PQconnectStart"
c_PQconnectStart :: CString -> IO (Ptr PGconn)
foreign import capi "hs-libpq.h PQconnectPoll"
c_PQconnectPoll :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQdb"
c_PQdb :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQuser"
c_PQuser :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQpass"
c_PQpass :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQhost"
c_PQhost :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQport"
c_PQport :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQoptions"
c_PQoptions :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQbackendPID"
c_PQbackendPID :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQconnectionNeedsPassword"
c_PQconnectionNeedsPassword :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQconnectionUsedPassword"
c_PQconnectionUsedPassword :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQstatus"
c_PQstatus :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQtransactionStatus"
c_PQtransactionStatus :: Ptr PGconn -> IO CInt
foreign import ccall "hs-libpq.h PQparameterStatus"
c_PQparameterStatus :: Ptr PGconn -> CString -> IO CString
foreign import capi "hs-libpq.h PQprotocolVersion"
c_PQprotocolVersion :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQserverVersion"
c_PQserverVersion :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQlibVersion"
c_PQlibVersion :: IO CInt
foreign import capi "hs-libpq.h PQsocket"
c_PQsocket :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQerrorMessage"
c_PQerrorMessage :: Ptr PGconn -> IO CString
foreign import capi "hs-libpq.h PQfinish"
c_PQfinish :: Ptr PGconn -> IO ()
foreign import capi "hs-libpq.h PQreset"
c_PQreset :: Ptr PGconn -> IO ()
foreign import capi "hs-libpq.h PQresetStart"
c_PQresetStart :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQresetPoll"
c_PQresetPoll :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQclientEncoding"
c_PQclientEncoding :: Ptr PGconn -> IO CInt
foreign import ccall "hs-libpq.h pg_encoding_to_char"
c_pg_encoding_to_char :: CInt -> IO CString
foreign import capi "hs-libpq.h PQsetClientEncoding"
c_PQsetClientEncoding :: Ptr PGconn -> CString -> IO CInt
type PGVerbosity = CInt
foreign import capi "hs-libpq.h PQsetErrorVerbosity"
c_PQsetErrorVerbosity :: Ptr PGconn -> PGVerbosity -> IO PGVerbosity
foreign import capi "hs-libpq.h PQputCopyData"
c_PQputCopyData :: Ptr PGconn -> Ptr CChar -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQputCopyEnd"
c_PQputCopyEnd :: Ptr PGconn -> CString -> IO CInt
foreign import ccall "hs-libpq.h PQgetCopyData"
c_PQgetCopyData :: Ptr PGconn -> Ptr (Ptr Word8) -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQsendQuery"
c_PQsendQuery :: Ptr PGconn -> CString -> IO CInt
foreign import ccall "hs-libpq.h PQsendQueryParams"
c_PQsendQueryParams :: Ptr PGconn -> CString -> CInt -> Ptr Oid
-> Ptr CString -> Ptr CInt -> Ptr CInt -> CInt
-> IO CInt
foreign import capi "hs-libpq.h PQsendPrepare"
c_PQsendPrepare :: Ptr PGconn -> CString -> CString -> CInt -> Ptr Oid
-> IO CInt
foreign import ccall "hs-libpq.h PQsendQueryPrepared"
c_PQsendQueryPrepared :: Ptr PGconn -> CString -> CInt -> Ptr CString
-> Ptr CInt -> Ptr CInt -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQsendDescribePrepared"
c_PQsendDescribePrepared :: Ptr PGconn -> CString -> IO CInt
foreign import capi "hs-libpq.h PQsendDescribePortal"
c_PQsendDescribePortal :: Ptr PGconn -> CString -> IO CInt
foreign import capi "hs-libpq.h PQflush"
c_PQflush :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQgetCancel"
c_PQgetCancel :: Ptr PGconn -> IO (Ptr PGcancel)
foreign import capi "hs-libpq.h &PQfreeCancel"
p_PQfreeCancel :: FunPtr (Ptr PGcancel -> IO ())
foreign import capi "hs-libpq.h PQcancel"
c_PQcancel :: Ptr PGcancel -> CString -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQnotifies"
c_PQnotifies :: Ptr PGconn -> IO (Ptr Notify)
foreign import capi "hs-libpq.h PQconsumeInput"
c_PQconsumeInput :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQisBusy"
c_PQisBusy :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQsetnonblocking"
c_PQsetnonblocking :: Ptr PGconn -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQisnonblocking"
c_PQisnonblocking :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQsetSingleRowMode"
c_PQsetSingleRowMode :: Ptr PGconn -> IO CInt
foreign import capi "hs-libpq.h PQgetResult"
c_PQgetResult :: Ptr PGconn -> IO (Ptr PGresult)
foreign import capi "hs-libpq.h PQexec"
c_PQexec :: Ptr PGconn -> CString -> IO (Ptr PGresult)
foreign import ccall "hs-libpq.h PQexecParams"
c_PQexecParams :: Ptr PGconn -> CString -> CInt -> Ptr Oid
-> Ptr CString -> Ptr CInt -> Ptr CInt -> CInt
-> IO (Ptr PGresult)
foreign import capi "hs-libpq.h PQprepare"
c_PQprepare :: Ptr PGconn -> CString -> CString -> CInt -> Ptr Oid
-> IO (Ptr PGresult)
foreign import ccall "hs-libpq.h PQexecPrepared"
c_PQexecPrepared :: Ptr PGconn -> CString -> CInt -> Ptr CString
-> Ptr CInt -> Ptr CInt -> CInt -> IO (Ptr PGresult)
foreign import capi "hs-libpq.h PQdescribePrepared"
c_PQdescribePrepared :: Ptr PGconn -> CString -> IO (Ptr PGresult)
foreign import capi "hs-libpq.h PQdescribePortal"
c_PQdescribePortal :: Ptr PGconn -> CString -> IO (Ptr PGresult)
foreign import capi "hs-libpq.h &PQclear"
p_PQclear :: FunPtr (Ptr PGresult -> IO ())
foreign import capi "hs-libpq.h PQresultStatus"
c_PQresultStatus :: Ptr PGresult -> IO CInt
foreign import capi "hs-libpq.h PQresStatus"
c_PQresStatus :: CInt -> IO CString
foreign import capi "hs-libpq.h PQresultErrorMessage"
c_PQresultErrorMessage :: Ptr PGresult -> IO CString
foreign import capi "hs-libpq.h PQresultErrorField"
c_PQresultErrorField :: Ptr PGresult -> CInt -> IO CString
foreign import capi "hs-libpq.h PQntuples"
c_PQntuples :: Ptr PGresult -> CInt
foreign import capi "hs-libpq.h PQnfields"
c_PQnfields :: Ptr PGresult -> CInt
foreign import capi "hs-libpq.h PQfname"
c_PQfname :: Ptr PGresult -> CInt -> IO CString
foreign import capi "hs-libpq.h PQfnumber"
c_PQfnumber :: Ptr PGresult -> CString -> IO CInt
foreign import capi "hs-libpq.h PQftable"
c_PQftable :: Ptr PGresult -> CInt -> IO Oid
foreign import capi "hs-libpq.h PQftablecol"
c_PQftablecol :: Ptr PGresult -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQfformat"
c_PQfformat :: Ptr PGresult -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQftype"
c_PQftype :: Ptr PGresult -> CInt -> IO Oid
foreign import capi "hs-libpq.h PQfmod"
c_PQfmod :: Ptr PGresult -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQfsize"
c_PQfsize :: Ptr PGresult -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQgetvalue"
c_PQgetvalue :: Ptr PGresult -> CInt -> CInt -> IO CString
foreign import capi "hs-libpq.h PQgetisnull"
c_PQgetisnull :: Ptr PGresult -> CInt -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQgetlength"
c_PQgetlength :: Ptr PGresult -> CInt -> CInt -> IO CInt
foreign import capi "hs-libpq.h PQnparams"
c_PQnparams :: Ptr PGresult -> IO CInt
foreign import capi "hs-libpq.h PQparamtype"
c_PQparamtype :: Ptr PGresult -> CInt -> IO Oid
foreign import capi "hs-libpq.h PQcmdStatus"
c_PQcmdStatus :: Ptr PGresult -> IO CString
foreign import capi "hs-libpq.h PQcmdTuples"
c_PQcmdTuples :: Ptr PGresult -> IO CString
foreign import capi "hs-libpq.h PQescapeStringConn"
c_PQescapeStringConn :: Ptr PGconn
-> Ptr Word8
-> CString
-> CSize
-> Ptr CInt
-> IO CSize
foreign import capi "hs-libpq.h PQescapeByteaConn"
c_PQescapeByteaConn :: Ptr PGconn
-> CString
-> CSize
-> Ptr CSize
-> IO (Ptr Word8)
foreign import capi "hs-libpq.h PQunescapeBytea"
c_PQunescapeBytea :: CString
-> Ptr CSize
-> IO (Ptr Word8)
foreign import capi "hs-libpq.h PQescapeIdentifier"
c_PQescapeIdentifier :: Ptr PGconn
-> CString
-> CSize
-> IO CString
foreign import capi "hs-libpq.h &PQfreemem"
p_PQfreemem :: FunPtr (Ptr a -> IO ())
foreign import capi "hs-libpq.h PQfreemem"
c_PQfreemem :: Ptr a -> IO ()
foreign import capi "hs-libpq.h hs_postgresql_libpq_malloc_noticebuffer"
c_malloc_noticebuffer :: IO (Ptr CNoticeBuffer)
foreign import capi "hs-libpq.h hs_postgresql_libpq_free_noticebuffer"
c_free_noticebuffer :: Ptr CNoticeBuffer -> IO ()
foreign import capi "hs-libpq.h hs_postgresql_libpq_get_notice"
c_get_notice :: Ptr CNoticeBuffer -> IO (Ptr PGnotice)
foreign import capi "hs-libpq.h &hs_postgresql_libpq_discard_notices"
p_discard_notices :: FunPtr NoticeReceiver
foreign import capi "hs-libpq.h &hs_postgresql_libpq_store_notices"
p_store_notices :: FunPtr NoticeReceiver
foreign import capi "hs-libpq.h PQsetNoticeReceiver"
c_PQsetNoticeReceiver :: Ptr PGconn -> FunPtr NoticeReceiver -> Ptr CNoticeBuffer -> IO (FunPtr NoticeReceiver)
foreign import capi "hs-libpq.h lo_creat"
c_lo_creat :: Ptr PGconn -> CInt -> IO Oid
foreign import capi "hs-libpq.h lo_create"
c_lo_create :: Ptr PGconn -> Oid -> IO Oid
foreign import capi "hs-libpq.h lo_import"
c_lo_import :: Ptr PGconn -> CString -> IO Oid
foreign import capi "hs-libpq.h lo_import_with_oid"
c_lo_import_with_oid :: Ptr PGconn -> CString -> Oid -> IO Oid
foreign import capi "hs-libpq.h lo_export"
c_lo_export :: Ptr PGconn -> Oid -> CString -> IO CInt
foreign import capi "hs-libpq.h lo_open"
c_lo_open :: Ptr PGconn -> Oid -> CInt -> IO CFd
foreign import capi "hs-libpq.h lo_write"
c_lo_write :: Ptr PGconn -> CFd -> CString -> CSize -> IO CInt
foreign import capi "hs-libpq.h lo_read"
c_lo_read :: Ptr PGconn -> CFd -> Ptr Word8 -> CSize -> IO CInt
foreign import capi "hs-libpq.h lo_lseek"
c_lo_lseek :: Ptr PGconn -> CFd -> CInt -> CInt -> IO CInt
foreign import capi "hs-libpq.h lo_tell"
c_lo_tell :: Ptr PGconn -> CFd -> IO CInt
foreign import capi "hs-libpq.h lo_truncate"
c_lo_truncate :: Ptr PGconn -> CFd -> CSize -> IO CInt
foreign import capi "hs-libpq.h lo_close"
c_lo_close :: Ptr PGconn -> CFd -> IO CInt
foreign import capi "hs-libpq.h lo_unlink"
c_lo_unlink :: Ptr PGconn -> Oid -> IO CInt