{-# LINE 1 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
-- | Mappings of types used by libpq/libpqtypes to Haskell ADTs.
module Database.PostgreSQL.PQTypes.Internal.C.Types (
    PGcancel
  , PGconn
  , PGparam
  , PGresult
  , PGtypeArgs
  , ConnStatusType(..)
  , c_CONNECTION_OK, c_CONNECTION_BAD, c_CONNECTION_STARTED
  , c_CONNECTION_MADE, c_CONNECTION_AWAITING_RESPONSE, c_CONNECTION_AUTH_OK
  , c_CONNECTION_SETENV, c_CONNECTION_SSL_STARTUP, c_CONNECTION_NEEDED
  , PostgresPollingStatusType(..)
  , c_PGRES_POLLING_FAILED, c_PGRES_POLLING_READING, c_PGRES_POLLING_WRITING
  , c_PGRES_POLLING_OK, c_PGRES_POLLING_ACTIVE
  , ResultFormat(..)
  , c_RESULT_TEXT, c_RESULT_BINARY
  , ExecStatusType(..)
  , c_PGRES_EMPTY_QUERY, c_PGRES_COMMAND_OK, c_PGRES_TUPLES_OK
  , c_PGRES_COPY_OUT, c_PGRES_COPY_IN, c_PGRES_BAD_RESPONSE
  , c_PGRES_NONFATAL_ERROR, c_PGRES_FATAL_ERROR, c_PGRES_COPY_BOTH
  , ErrorField(..)
  , c_PG_DIAG_SEVERITY, c_PG_DIAG_SQLSTATE, c_PG_DIAG_MESSAGE_PRIMARY
  , c_PG_DIAG_MESSAGE_DETAIL, c_PG_DIAG_MESSAGE_HINT
  , c_PG_DIAG_STATEMENT_POSITION, c_PG_DIAG_INTERNAL_POSITION
  , c_PG_DIAG_INTERNAL_QUERY, c_PG_DIAG_CONTEXT, c_PG_DIAG_SOURCE_FILE
  , c_PG_DIAG_SOURCE_LINE, c_PG_DIAG_SOURCE_FUNCTION
  , TypeClass(..)
  , c_PQT_SUBCLASS, c_PQT_COMPOSITE, c_PQT_USERDEFINED
  , PGerror(..)
  , PGregisterType(..)
  , PGarray(..)
  , PGbytea(..)
  , PGuuid(..)
  , PGdate(..)
  , PGtime(..)
  , PGtimestamp(..)
  ) where

import Data.Word
import Data.ByteString.Unsafe
import Foreign.C
import Foreign.ForeignPtr
import Foreign.Marshal.Array
import Foreign.Ptr
import Foreign.Storable
import qualified Data.ByteString as BS
import qualified Data.Vector.Storable as V

data PGcancel
data PGconn
data PGparam
data PGresult
data PGtypeArgs




foreign import ccall unsafe htonl :: Word32 -> Word32
foreign import ccall unsafe ntohl :: Word32 -> Word32

----------------------------------------

newtype ConnStatusType = ConnStatusType CInt
  deriving ConnStatusType -> ConnStatusType -> Bool
(ConnStatusType -> ConnStatusType -> Bool)
-> (ConnStatusType -> ConnStatusType -> Bool) -> Eq ConnStatusType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConnStatusType -> ConnStatusType -> Bool
$c/= :: ConnStatusType -> ConnStatusType -> Bool
== :: ConnStatusType -> ConnStatusType -> Bool
$c== :: ConnStatusType -> ConnStatusType -> Bool
Eq

c_CONNECTION_OK  :: ConnStatusType
c_CONNECTION_OK :: ConnStatusType
c_CONNECTION_OK  = CInt -> ConnStatusType
ConnStatusType CInt
0
c_CONNECTION_BAD  :: ConnStatusType
c_CONNECTION_BAD :: ConnStatusType
c_CONNECTION_BAD  = CInt -> ConnStatusType
ConnStatusType CInt
1
c_CONNECTION_STARTED  :: ConnStatusType
c_CONNECTION_STARTED :: ConnStatusType
c_CONNECTION_STARTED  = CInt -> ConnStatusType
ConnStatusType CInt
2
c_CONNECTION_MADE  :: ConnStatusType
c_CONNECTION_MADE :: ConnStatusType
c_CONNECTION_MADE  = CInt -> ConnStatusType
ConnStatusType CInt
3
c_CONNECTION_AWAITING_RESPONSE  :: ConnStatusType
c_CONNECTION_AWAITING_RESPONSE :: ConnStatusType
c_CONNECTION_AWAITING_RESPONSE  = CInt -> ConnStatusType
ConnStatusType CInt
4
c_CONNECTION_AUTH_OK  :: ConnStatusType
c_CONNECTION_AUTH_OK :: ConnStatusType
c_CONNECTION_AUTH_OK  = CInt -> ConnStatusType
ConnStatusType CInt
5
c_CONNECTION_SETENV  :: ConnStatusType
c_CONNECTION_SETENV :: ConnStatusType
c_CONNECTION_SETENV  = CInt -> ConnStatusType
ConnStatusType CInt
6
c_CONNECTION_SSL_STARTUP  :: ConnStatusType
c_CONNECTION_SSL_STARTUP :: ConnStatusType
c_CONNECTION_SSL_STARTUP  = CInt -> ConnStatusType
ConnStatusType CInt
7
c_CONNECTION_NEEDED  :: ConnStatusType
c_CONNECTION_NEEDED :: ConnStatusType
c_CONNECTION_NEEDED  = ConnStatusType 8

{-# LINE 77 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

newtype PostgresPollingStatusType = PostgresPollingStatusType CInt
  deriving Eq

c_PGRES_POLLING_FAILED   :: PostgresPollingStatusType
c_PGRES_POLLING_FAILED   = PostgresPollingStatusType 0
c_PGRES_POLLING_READING  :: PostgresPollingStatusType
c_PGRES_POLLING_READING :: PostgresPollingStatusType
c_PGRES_POLLING_READING  = CInt -> PostgresPollingStatusType
PostgresPollingStatusType CInt
1
c_PGRES_POLLING_WRITING  :: PostgresPollingStatusType
c_PGRES_POLLING_WRITING :: PostgresPollingStatusType
c_PGRES_POLLING_WRITING  = CInt -> PostgresPollingStatusType
PostgresPollingStatusType CInt
2
c_PGRES_POLLING_OK       :: PostgresPollingStatusType
c_PGRES_POLLING_OK :: PostgresPollingStatusType
c_PGRES_POLLING_OK       = CInt -> PostgresPollingStatusType
PostgresPollingStatusType CInt
3
c_PGRES_POLLING_ACTIVE   :: PostgresPollingStatusType
c_PGRES_POLLING_ACTIVE :: PostgresPollingStatusType
c_PGRES_POLLING_ACTIVE   = CInt -> PostgresPollingStatusType
PostgresPollingStatusType CInt
4

{-# LINE 90 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

newtype ResultFormat = ResultFormat CInt

c_RESULT_TEXT :: ResultFormat
c_RESULT_TEXT :: ResultFormat
c_RESULT_TEXT = CInt -> ResultFormat
ResultFormat CInt
0

c_RESULT_BINARY :: ResultFormat
c_RESULT_BINARY :: ResultFormat
c_RESULT_BINARY = CInt -> ResultFormat
ResultFormat CInt
1

----------------------------------------

newtype ExecStatusType = ExecStatusType CInt
  deriving ExecStatusType -> ExecStatusType -> Bool
(ExecStatusType -> ExecStatusType -> Bool)
-> (ExecStatusType -> ExecStatusType -> Bool) -> Eq ExecStatusType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExecStatusType -> ExecStatusType -> Bool
$c/= :: ExecStatusType -> ExecStatusType -> Bool
== :: ExecStatusType -> ExecStatusType -> Bool
$c== :: ExecStatusType -> ExecStatusType -> Bool
Eq

c_PGRES_EMPTY_QUERY  :: ExecStatusType
c_PGRES_EMPTY_QUERY :: ExecStatusType
c_PGRES_EMPTY_QUERY  = CInt -> ExecStatusType
ExecStatusType CInt
0
c_PGRES_COMMAND_OK  :: ExecStatusType
c_PGRES_COMMAND_OK :: ExecStatusType
c_PGRES_COMMAND_OK  = CInt -> ExecStatusType
ExecStatusType CInt
1
c_PGRES_TUPLES_OK  :: ExecStatusType
c_PGRES_TUPLES_OK :: ExecStatusType
c_PGRES_TUPLES_OK  = CInt -> ExecStatusType
ExecStatusType CInt
2
c_PGRES_COPY_OUT  :: ExecStatusType
c_PGRES_COPY_OUT :: ExecStatusType
c_PGRES_COPY_OUT  = CInt -> ExecStatusType
ExecStatusType CInt
3
c_PGRES_COPY_IN  :: ExecStatusType
c_PGRES_COPY_IN :: ExecStatusType
c_PGRES_COPY_IN  = CInt -> ExecStatusType
ExecStatusType CInt
4
c_PGRES_BAD_RESPONSE  :: ExecStatusType
c_PGRES_BAD_RESPONSE :: ExecStatusType
c_PGRES_BAD_RESPONSE  = CInt -> ExecStatusType
ExecStatusType CInt
5
c_PGRES_NONFATAL_ERROR  :: ExecStatusType
c_PGRES_NONFATAL_ERROR :: ExecStatusType
c_PGRES_NONFATAL_ERROR  = CInt -> ExecStatusType
ExecStatusType CInt
6
c_PGRES_FATAL_ERROR  :: ExecStatusType
c_PGRES_FATAL_ERROR :: ExecStatusType
c_PGRES_FATAL_ERROR  = CInt -> ExecStatusType
ExecStatusType CInt
7
c_PGRES_COPY_BOTH  :: ExecStatusType
c_PGRES_COPY_BOTH :: ExecStatusType
c_PGRES_COPY_BOTH  = CInt -> ExecStatusType
ExecStatusType CInt
8

{-# LINE 117 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

newtype ErrorField = ErrorField CInt
  deriving Eq

c_PG_DIAG_SEVERITY  :: ErrorField
c_PG_DIAG_SEVERITY  = ErrorField 83
c_PG_DIAG_SQLSTATE  :: ErrorField
c_PG_DIAG_SQLSTATE :: ErrorField
c_PG_DIAG_SQLSTATE  = CInt -> ErrorField
ErrorField CInt
67
c_PG_DIAG_MESSAGE_PRIMARY  :: ErrorField
c_PG_DIAG_MESSAGE_PRIMARY :: ErrorField
c_PG_DIAG_MESSAGE_PRIMARY  = CInt -> ErrorField
ErrorField CInt
77
c_PG_DIAG_MESSAGE_DETAIL  :: ErrorField
c_PG_DIAG_MESSAGE_DETAIL :: ErrorField
c_PG_DIAG_MESSAGE_DETAIL  = CInt -> ErrorField
ErrorField CInt
68
c_PG_DIAG_MESSAGE_HINT  :: ErrorField
c_PG_DIAG_MESSAGE_HINT :: ErrorField
c_PG_DIAG_MESSAGE_HINT  = CInt -> ErrorField
ErrorField CInt
72
c_PG_DIAG_STATEMENT_POSITION  :: ErrorField
c_PG_DIAG_STATEMENT_POSITION :: ErrorField
c_PG_DIAG_STATEMENT_POSITION  = CInt -> ErrorField
ErrorField CInt
80
c_PG_DIAG_INTERNAL_POSITION  :: ErrorField
c_PG_DIAG_INTERNAL_POSITION :: ErrorField
c_PG_DIAG_INTERNAL_POSITION  = CInt -> ErrorField
ErrorField CInt
112
c_PG_DIAG_INTERNAL_QUERY  :: ErrorField
c_PG_DIAG_INTERNAL_QUERY :: ErrorField
c_PG_DIAG_INTERNAL_QUERY  = CInt -> ErrorField
ErrorField CInt
113
c_PG_DIAG_CONTEXT  :: ErrorField
c_PG_DIAG_CONTEXT :: ErrorField
c_PG_DIAG_CONTEXT  = ErrorField 87
c_PG_DIAG_SOURCE_FILE  :: ErrorField
c_PG_DIAG_SOURCE_FILE :: ErrorField
c_PG_DIAG_SOURCE_FILE  = CInt -> ErrorField
ErrorField CInt
70
c_PG_DIAG_SOURCE_LINE  :: ErrorField
c_PG_DIAG_SOURCE_LINE :: ErrorField
c_PG_DIAG_SOURCE_LINE  = ErrorField 76
c_PG_DIAG_SOURCE_FUNCTION  :: ErrorField
c_PG_DIAG_SOURCE_FUNCTION :: ErrorField
c_PG_DIAG_SOURCE_FUNCTION  = CInt -> ErrorField
ErrorField CInt
82

{-# LINE 137 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

newtype TypeClass = TypeClass CInt
  deriving Eq

c_PQT_SUBCLASS  :: TypeClass
c_PQT_SUBCLASS  = TypeClass 0
c_PQT_COMPOSITE  :: TypeClass
c_PQT_COMPOSITE  = TypeClass 1
c_PQT_USERDEFINED  :: TypeClass
c_PQT_USERDEFINED  = TypeClass 2

{-# LINE 148 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

newtype PGerror = PGerror {
  PGerror -> String
pgErrorMsg :: String
} deriving Int -> PGerror -> ShowS
[PGerror] -> ShowS
PGerror -> String
(Int -> PGerror -> ShowS)
-> (PGerror -> String) -> ([PGerror] -> ShowS) -> Show PGerror
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGerror] -> ShowS
$cshowList :: [PGerror] -> ShowS
show :: PGerror -> String
$cshow :: PGerror -> String
showsPrec :: Int -> PGerror -> ShowS
$cshowsPrec :: Int -> PGerror -> ShowS
Show

instance Storable PGerror where
  sizeOf :: PGerror -> Int
sizeOf PGerror
_ = (Int
2048)
{-# LINE 157 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 1
{-# LINE 158 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGerror <$> peekCString ((\hsc_ptr -> hsc_ptr `plusPtr` 0) ptr)
{-# LINE 159 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke _ _ = error "Storable PGerror: poke is not supposed to be used"

----------------------------------------

data PGregisterType = PGregisterType
  { PGregisterType -> CString
pgRegisterTypeTypName :: !CString
  , PGregisterType -> FunPtr (Ptr PGtypeArgs -> IO CInt)
pgRegisterTypeTypPut  :: !(FunPtr (Ptr PGtypeArgs -> IO CInt))
  , PGregisterType -> FunPtr (Ptr PGtypeArgs -> IO CInt)
pgRegisterTypeTypGet  :: !(FunPtr (Ptr PGtypeArgs -> IO CInt))
  } deriving Int -> PGregisterType -> ShowS
[PGregisterType] -> ShowS
PGregisterType -> String
(Int -> PGregisterType -> ShowS)
-> (PGregisterType -> String)
-> ([PGregisterType] -> ShowS)
-> Show PGregisterType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGregisterType] -> ShowS
$cshowList :: [PGregisterType] -> ShowS
show :: PGregisterType -> String
$cshow :: PGregisterType -> String
showsPrec :: Int -> PGregisterType -> ShowS
$cshowsPrec :: Int -> PGregisterType -> ShowS
Show

instance Storable PGregisterType where
  sizeOf :: PGregisterType -> Int
sizeOf PGregisterType
_ = (Int
24)
{-# LINE 171 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 8
{-# LINE 172 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGregisterType
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 174 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 175 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 176 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke ptr PGregisterType{..} = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr pgRegisterTypeTypName
{-# LINE 178 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr pgRegisterTypeTypPut
{-# LINE 179 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr pgRegisterTypeTypGet
{-# LINE 180 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

c_MAXDIM :: Int
c_MAXDIM :: Int
c_MAXDIM = Int
6
{-# LINE 185 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

data PGarray = PGarray
  { PGarray -> CInt
pgArrayNDims  :: !CInt
  , PGarray -> Vector CInt
pgArrayLBound :: !(V.Vector CInt)
  , PGarray -> Vector CInt
pgArrayDims   :: !(V.Vector CInt)
  , PGarray -> Ptr PGparam
pgArrayParam  :: !(Ptr PGparam)
  , PGarray -> Ptr PGresult
pgArrayRes    :: !(Ptr PGresult)
  } deriving Int -> PGarray -> ShowS
[PGarray] -> ShowS
PGarray -> String
(Int -> PGarray -> ShowS)
-> (PGarray -> String) -> ([PGarray] -> ShowS) -> Show PGarray
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGarray] -> ShowS
$cshowList :: [PGarray] -> ShowS
show :: PGarray -> String
$cshow :: PGarray -> String
showsPrec :: Int -> PGarray -> ShowS
$cshowsPrec :: Int -> PGarray -> ShowS
Show

instance Storable PGarray where
  sizeOf :: PGarray -> Int
sizeOf PGarray
_ = (Int
72)
{-# LINE 196 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 8
{-# LINE 197 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGarray
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 199 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> readVector ((\hsc_ptr -> hsc_ptr `plusPtr` 4) ptr)
{-# LINE 200 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> readVector ((\hsc_ptr -> hsc_ptr `plusPtr` 28) ptr)
{-# LINE 201 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 202 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 203 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    where
      readVector :: Ptr CInt -> IO (V.Vector CInt)
      readVector src = do
        let len = c_MAXDIM
        fptr <- mallocForeignPtrArray len
        withForeignPtr fptr $ \dest -> copyArray dest src len
        return (V.unsafeFromForeignPtr0 fptr len)

  poke :: Ptr PGarray -> PGarray -> IO ()
poke Ptr PGarray
ptr PGarray{Ptr PGresult
Ptr PGparam
CInt
Vector CInt
pgArrayRes :: Ptr PGresult
pgArrayParam :: Ptr PGparam
pgArrayDims :: Vector CInt
pgArrayLBound :: Vector CInt
pgArrayNDims :: CInt
pgArrayRes :: PGarray -> Ptr PGresult
pgArrayParam :: PGarray -> Ptr PGparam
pgArrayDims :: PGarray -> Vector CInt
pgArrayLBound :: PGarray -> Vector CInt
pgArrayNDims :: PGarray -> CInt
..} = do
    (\Ptr PGarray
hsc_ptr -> Ptr PGarray -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr PGarray
hsc_ptr Int
0) Ptr PGarray
ptr CInt
pgArrayNDims
{-# LINE 213 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    writeVector pgArrayLBound $ (\hsc_ptr -> hsc_ptr `plusPtr` 4) ptr
{-# LINE 214 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    writeVector pgArrayDims $ (\hsc_ptr -> hsc_ptr `plusPtr` 28) ptr
{-# LINE 215 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 56) ptr pgArrayParam
{-# LINE 216 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr pgArrayRes
{-# LINE 217 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    where
      writeVector :: V.Vector CInt -> Ptr CInt -> IO ()
      writeVector :: Vector CInt -> Ptr CInt -> IO ()
writeVector Vector CInt
v Ptr CInt
dest = do
        let (ForeignPtr CInt
fptr, Int
baseLen) = Vector CInt -> (ForeignPtr CInt, Int)
forall a. Storable a => Vector a -> (ForeignPtr a, Int)
V.unsafeToForeignPtr0 Vector CInt
v
        ForeignPtr CInt -> (Ptr CInt -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CInt
fptr ((Ptr CInt -> IO ()) -> IO ()) -> (Ptr CInt -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
src -> do
          let len :: Int
len = Int -> Int -> Int
forall a. Ord a => a -> a -> a
min Int
baseLen Int
c_MAXDIM
          Ptr CInt -> Ptr CInt -> Int -> IO ()
forall a. Storable a => Ptr a -> Ptr a -> Int -> IO ()
copyArray Ptr CInt
dest Ptr CInt
src Int
len

----------------------------------------

data PGbytea = PGbytea
  { PGbytea -> CInt
pgByteaLen  :: !CInt
  , PGbytea -> CString
pgByteaData :: !CString
  } deriving Int -> PGbytea -> ShowS
[PGbytea] -> ShowS
PGbytea -> String
(Int -> PGbytea -> ShowS)
-> (PGbytea -> String) -> ([PGbytea] -> ShowS) -> Show PGbytea
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGbytea] -> ShowS
$cshowList :: [PGbytea] -> ShowS
show :: PGbytea -> String
$cshow :: PGbytea -> String
showsPrec :: Int -> PGbytea -> ShowS
$cshowsPrec :: Int -> PGbytea -> ShowS
Show

instance Storable PGbytea where
  sizeOf :: PGbytea -> Int
sizeOf PGbytea
_ = (Int
16)
{-# LINE 234 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 8
{-# LINE 235 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGbytea
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 237 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 238 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke ptr PGbytea{..} = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr pgByteaLen
{-# LINE 240 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr pgByteaData
{-# LINE 241 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

-- Same as the UUID type from uuid-types package except for the Storable
-- instance: PostgreSQL expects the binary representation to be encoded in
-- network byte order (as per RFC 4122), whereas Storable instance of UUID
-- preserves host byte order, so we need to have our own version.
data PGuuid = PGuuid
  { PGuuid -> Word32
pgUuidW1 :: !Word32
  , PGuuid -> Word32
pgUuidW2 :: !Word32
  , PGuuid -> Word32
pgUuidW3 :: !Word32
  , PGuuid -> Word32
pgUuidW4 :: !Word32
  } deriving Int -> PGuuid -> ShowS
[PGuuid] -> ShowS
PGuuid -> String
(Int -> PGuuid -> ShowS)
-> (PGuuid -> String) -> ([PGuuid] -> ShowS) -> Show PGuuid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGuuid] -> ShowS
$cshowList :: [PGuuid] -> ShowS
show :: PGuuid -> String
$cshow :: PGuuid -> String
showsPrec :: Int -> PGuuid -> ShowS
$cshowsPrec :: Int -> PGuuid -> ShowS
Show

instance Storable PGuuid where
  sizeOf :: PGuuid -> Int
sizeOf PGuuid
_ = (Int
16)
{-# LINE 257 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 4
{-# LINE 258 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

  peek :: Ptr PGuuid -> IO PGuuid
peek Ptr PGuuid
ptr = Word32 -> Word32 -> Word32 -> Word32 -> PGuuid
PGuuid
    (Word32 -> Word32 -> Word32 -> Word32 -> PGuuid)
-> IO Word32 -> IO (Word32 -> Word32 -> Word32 -> PGuuid)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Word32 -> Word32
ntohl (Word32 -> Word32) -> IO Word32 -> IO Word32
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (\Ptr PGuuid
hsc_ptr -> Ptr PGuuid -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PGuuid
hsc_ptr Int
0) Ptr PGuuid
ptr)
{-# LINE 261 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (Word32 -> Word32
ntohl (Word32 -> Word32) -> IO Word32 -> IO Word32
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (\Ptr PGuuid
hsc_ptr -> Ptr PGuuid -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PGuuid
hsc_ptr Int
4) Ptr PGuuid
ptr)
{-# LINE 262 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (Word32 -> Word32
ntohl (Word32 -> Word32) -> IO Word32 -> IO Word32
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (\Ptr PGuuid
hsc_ptr -> Ptr PGuuid -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PGuuid
hsc_ptr Int
8) Ptr PGuuid
ptr)
{-# LINE 263 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (Word32 -> Word32
ntohl (Word32 -> Word32) -> IO Word32 -> IO Word32
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (\Ptr PGuuid
hsc_ptr -> Ptr PGuuid -> Int -> IO Word32
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr PGuuid
hsc_ptr Int
12) Ptr PGuuid
ptr)
{-# LINE 264 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

  poke :: Ptr PGuuid -> PGuuid -> IO ()
poke Ptr PGuuid
ptr PGuuid{Word32
pgUuidW4 :: Word32
pgUuidW3 :: Word32
pgUuidW2 :: Word32
pgUuidW1 :: Word32
pgUuidW4 :: PGuuid -> Word32
pgUuidW3 :: PGuuid -> Word32
pgUuidW2 :: PGuuid -> Word32
pgUuidW1 :: PGuuid -> Word32
..} = do
    (\Ptr PGuuid
hsc_ptr -> Ptr PGuuid -> Int -> Word32 -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr PGuuid
hsc_ptr Int
0) Ptr PGuuid
ptr (Word32 -> IO ()) -> Word32 -> IO ()
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32
htonl Word32
pgUuidW1
{-# LINE 267 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ htonl pgUuidW2
{-# LINE 268 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ htonl pgUuidW3
{-# LINE 269 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr $ htonl pgUuidW4
{-# LINE 270 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

data PGdate = PGdate
  { PGdate -> CInt
pgDateIsBC :: !CInt
  , PGdate -> CInt
pgDateYear :: !CInt
  , PGdate -> CInt
pgDateMon  :: !CInt
  , PGdate -> CInt
pgDateMDay :: !CInt
  , PGdate -> CInt
pgDateJDay :: !CInt
  , PGdate -> CInt
pgDateYDay :: !CInt
  , PGdate -> CInt
pgDateWDay :: !CInt
  } deriving Int -> PGdate -> ShowS
[PGdate] -> ShowS
PGdate -> String
(Int -> PGdate -> ShowS)
-> (PGdate -> String) -> ([PGdate] -> ShowS) -> Show PGdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGdate] -> ShowS
$cshowList :: [PGdate] -> ShowS
show :: PGdate -> String
$cshow :: PGdate -> String
showsPrec :: Int -> PGdate -> ShowS
$cshowsPrec :: Int -> PGdate -> ShowS
Show

instance Storable PGdate where
  sizeOf :: PGdate -> Int
sizeOf PGdate
_ = (Int
28)
{-# LINE 283 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 4
{-# LINE 284 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGdate
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 286 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 287 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 8)  ptr
{-# LINE 288 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 289 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 290 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 291 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 292 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke ptr PGdate{..} = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr pgDateIsBC
{-# LINE 294 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr pgDateYear
{-# LINE 295 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8)  ptr pgDateMon
{-# LINE 296 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr pgDateMDay
{-# LINE 297 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr pgDateJDay
{-# LINE 298 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 20) ptr pgDateYDay
{-# LINE 299 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr pgDateWDay
{-# LINE 300 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}

----------------------------------------

data PGtime = PGtime
  { PGtime -> CInt
pgTimeHour   :: !CInt
  , PGtime -> CInt
pgTimeMin    :: !CInt
  , PGtime -> CInt
pgTimeSec    :: !CInt
  , PGtime -> CInt
pgTimeUSec   :: !CInt
  , PGtime -> CInt
pgTimeWithTZ :: !CInt
  , PGtime -> CInt
pgTimeIsDST  :: !CInt
  , PGtime -> CInt
pgTimeGMTOff :: !CInt
  , PGtime -> ByteString
pgTimeTZAbbr :: !BS.ByteString
  } deriving Int -> PGtime -> ShowS
[PGtime] -> ShowS
PGtime -> String
(Int -> PGtime -> ShowS)
-> (PGtime -> String) -> ([PGtime] -> ShowS) -> Show PGtime
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGtime] -> ShowS
$cshowList :: [PGtime] -> ShowS
show :: PGtime -> String
$cshow :: PGtime -> String
showsPrec :: Int -> PGtime -> ShowS
$cshowsPrec :: Int -> PGtime -> ShowS
Show

instance Storable PGtime where
  sizeOf :: PGtime -> Int
sizeOf PGtime
_ = (Int
44)
{-# LINE 316 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 4
{-# LINE 317 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGtime
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0)   ptr
{-# LINE 319 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 4)    ptr
{-# LINE 320 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 8)    ptr
{-# LINE 321 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 12)   ptr
{-# LINE 322 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 323 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 20)  ptr
{-# LINE 324 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 325 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> BS.packCString ((\hsc_ptr -> hsc_ptr `plusPtr` 28) ptr)
{-# LINE 326 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke ptr PGtime{..} = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0)   ptr pgTimeHour
{-# LINE 328 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4)    ptr pgTimeMin
{-# LINE 329 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8)    ptr pgTimeSec
{-# LINE 330 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12)   ptr pgTimeUSec
{-# LINE 331 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr pgTimeWithTZ
{-# LINE 332 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 20)  ptr pgTimeIsDST
{-# LINE 333 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr pgTimeGMTOff
{-# LINE 334 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    unsafeUseAsCStringLen pgTimeTZAbbr $ \(cs, len) -> do
      let tzabbr = (\hsc_ptr -> hsc_ptr `plusPtr` 28) ptr
{-# LINE 336 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
      copyArray tzabbr cs (min len 16)
      pokeElemOff tzabbr (min len 15) (0::CChar)

----------------------------------------

data PGtimestamp = PGtimestamp
  { PGtimestamp -> CLLong
pgTimestampEpoch :: !CLLong
  , PGtimestamp -> PGdate
pgTimestampDate  :: !PGdate
  , PGtimestamp -> PGtime
pgTimestampTime  :: !PGtime
  } deriving Int -> PGtimestamp -> ShowS
[PGtimestamp] -> ShowS
PGtimestamp -> String
(Int -> PGtimestamp -> ShowS)
-> (PGtimestamp -> String)
-> ([PGtimestamp] -> ShowS)
-> Show PGtimestamp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PGtimestamp] -> ShowS
$cshowList :: [PGtimestamp] -> ShowS
show :: PGtimestamp -> String
$cshow :: PGtimestamp -> String
showsPrec :: Int -> PGtimestamp -> ShowS
$cshowsPrec :: Int -> PGtimestamp -> ShowS
Show

instance Storable PGtimestamp where
  sizeOf :: PGtimestamp -> Int
sizeOf PGtimestamp
_ = (Int
80)
{-# LINE 349 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  alignment _ = 8
{-# LINE 350 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  peek ptr = PGtimestamp
    <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 352 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 8)  ptr
{-# LINE 353 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    <*> (\hsc_ptr -> peekByteOff hsc_ptr 36)  ptr
{-# LINE 354 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
  poke ptr PGtimestamp{..} = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr pgTimestampEpoch
{-# LINE 356 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8)  ptr pgTimestampDate
{-# LINE 357 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 36)  ptr pgTimestampTime
{-# LINE 358 "src/Database/PostgreSQL/PQTypes/Internal/C/Types.hsc" #-}