--------------------------------------------------------------------
-- |
-- Module    : Network.Curl.Opts
-- Copyright : (c) Galois Inc 2007-2009
-- License   : BSD3
--
-- Maintainer: Sigbjorn Finne <sof@galois.com>
-- Stability : provisional
-- Portability: portable
--
-- This module contains the various options that specify what happens
-- when we use @perform@ on a @Curl@ handle.
--------------------------------------------------------------------
module Network.Curl.Opts where

import Network.Curl.Types
import Network.Curl.Post
import Data.List

import Foreign.Ptr
import Foreign.C.Types
import Data.Bits

data CurlOption
 = CurlFileObj (Ptr ())  -- ^ external pointer to pass to as 'WriteFunction's last argument.
 | CurlURL  URLString    -- ^ the URL to use for next request; can be the full URL or just the authority\/hostname.
 | CurlPort  Long        -- ^ what port to use.
 | CurlProxy String      -- ^ name of proxy
 | CurlUserPwd String    -- ^ the "user:pass" string to use
 | CurlProxyUserPwd String -- ^ same thing, but for the proxy.
 | CurlRange String      -- ^ byte range to fetch
 | CurlInFile FilePath   -- ^ external pointer to pass to as 'WriteFunction's last argument.
 | CurlErrorBuffer (Ptr CChar) -- ^ buffer for curl to deposit error messages (must at least CURL_ERROR_SIZE bytes long). Uses standard error if not specified.
 | CurlWriteFunction WriteFunction -- ^ callback to handle incoming data.
 | CurlReadFunction  ReadFunction  -- ^ callback for supplying outgoing\/uploaded data.
 | CurlTimeout Long{-secs-}        -- ^ number of seconds before timing out curl operation\/request.
 | CurlInFileSize Long{-bytes-}    -- ^ expected size of uploaded data.
 | CurlPostFields [String]         -- ^ (Multipart) POST data.
 | CurlReferer String              -- ^ Set the Referer: header to the given string.
 | CurlFtpPort String              -- ^ The string to feed to the FTP PORT command.
 | CurlUserAgent String            -- ^ Set the User-Agent: header to the given string.
 | CurlLowSpeed  Long              -- ^ If the bytes per sec drops below the given value, the operation is aborted.
 | CurlLowSpeedTime Long           -- ^ Upper bound for request to complete.
 | CurlResumeFrom Long             -- ^ Byte offset at which the transfer (HTTP or FTP) should start from.
 | CurlCookie String               -- ^ Set the Cookie: header to the given cookie (name=value pairs, semicolon-separated) string.
 | CurlHttpHeaders [String]        -- ^ Embellish the outgoing request with the given list of (formatted) header values.
 | CurlHttpPost  [HttpPost]        -- ^ (Multipart) POST data.
 | CurlSSLCert FilePath            -- ^ file holding your private SSL certificates (default format is PEM).
 | CurlSSLPassword String          -- ^ password to the above file.
 | CurlSSLKeyPassword String       -- ^ an alias for the previous.
 | CurlCRLF Bool                   -- ^ If true, convert Unix newlines into CRLFs when transferring.
 | CurlQuote [String]              -- ^ Sequence of FTP commands to execute prior to the main request.
 | CurlWriteHeader (Ptr ())        -- ^ State \/ pointer argument to pass to WriteFunction callback.
 | CurlCookieFile FilePath         -- ^ Path to file holding initial cookie data; also enables cookie handling.
 | CurlSSLVersion Long             -- ^ What protocol to attempt using (0:default;1:TLS;2:SSLv2;3:SSLv3)
 | CurlTimeCondition TimeCond      -- ^ How to interpret a conditional time value.
 | CurlTimeValue Long              -- ^ Number of secs since Jan 1, 1970. Interpretation is determined by CurlTimeCondition.
 | CurlCustomRequest String        -- ^ String holding alternative request command (WebDAV anyone?)
 {- | CurlStderr String {- XXX: should be FILE* ? -}               -- ^ File object to use for outputting debug info to. -}
 | CurlPostQuote [String]          -- ^ List of commands to issue to FTP server after the main request.
 | CurlWriteInfo String            -- ^ Not sure what this one does; something about passing it to the output function.
 | CurlVerbose Bool                -- ^ Control verbosity
 | CurlHeader Bool                 -- ^ Display outgoing and incoming headers 
 | CurlNoProgress Bool             -- ^ Control progress meter
 | CurlNoBody Bool                 -- ^ Use HEAD instead of GET
 | CurlFailOnError Bool            -- ^ If status response is >= 300, return an error (and no other output).
 | CurlUpload Bool                 -- ^ Control the main dataflow, i.e., True to perform uploads.
 | CurlPost Bool                   -- ^ Issue a POST request.
 | CurlFtpListOnly Bool            -- ^ Switch NLST for FTP directory listings
 | CurlFtpAppend Bool              -- ^ Control if FTP uploads append rather than overwrite files 
 | CurlUseNetRc NetRcOption        -- ^ control how or if a user's.netrc will be consulted for user:password
 | CurlFollowLocation Bool         -- ^ Handle auto-redirects by chasing down Location: values in responses.
 | CurlTransferTextASCII Bool      -- ^ Turn on ASCII transfers for FTP transfers; default is binary (i.e. off).
 | CurlPut Bool                    -- ^ Use PUT to upload data.
 | CurlProgressFunction ProgressFunction  -- ^ callback for showing progress
 | CurlProgressData (Ptr ())       -- ^ state argumentto pass to progress callback.
 | CurlAutoReferer Bool            -- ^ Control if the Referer: field is set upon following Location: redirects
 | CurlProxyPort Long              -- ^ (Numeric) proxy port to use.
 | CurlPostFieldSize Long          -- ^ Size of the POSTed data.
 | CurlHttpProxyTunnel Bool        -- ^ tunnel all HTTP operations through the proxy.
 | CurlInterface String            -- ^ Interface name of outgoing network interface ( network interface, IP address, host name.)
 | CurlKrb4Level String            -- ^ Kerberos security level ("clear", "safe", "confidential", "private" are good values, seemingly.)
 | CurlSSLVerifyPeer Bool          -- ^ Enable the authentication of peer certificate. Default is True.
 | CurlCAInfo FilePath             -- ^ If verifying peer's certificate, use certificates in this file to do so.
 | CurlMaxRedirs Long              -- ^ Maximum number of Location: redirects to chase down before giving up.
 | CurlFiletime Bool               -- ^ Try to determine the modification date of remote document; can be queried for.
 | CurlTelnetOptions [String]      -- ^ List of commands to use for initial telnet negotiations.
 | CurlMaxConnects Long            -- ^ Maximum number of cached active connections.
 | CurlClosePolicy Long            -- ^ No effect (obsolete.)
 | CurlFreshConnect Bool           -- ^ Force the opening up a new connection rather than try to reuse active connections. Default is not to.
 | CurlForbidReuse Bool            -- ^ Do not reuse the connection of next transfer when done.
 | CurlRandomFile FilePath         -- ^ Path to file used to seed (Open)SSL PRNG.
 | CurlEgdSocket FilePath          -- ^ Path to domain socket of EG Daemon.
 | CurlConnectTimeout Long         -- ^ max number of seconds to wait for the initial connection to happen.
 | CurlHeaderFunction WriteFunction -- ^ callback used to handle _incoming_ header data.
 | CurlHttpGet Bool                -- ^ Revert to a GET for the next request.
 | CurlSSLVerifyHost Long          -- ^ Perform Common name checking in peer certificate (1=> existence;2=> matches hostname.)
 | CurlCookieJar FilePath          -- ^ Path to file where additional cookie information will be stored.
 | CurlSSLCipherList String        -- ^ Colon-separated string list of cipher preferences to use for upcoming connection (e.g., "3DES:+RSA")
 | CurlHttpVersion HttpVersion     -- ^ What HTTP version to use, should you want to drop back for some reason.
 | CurlFtpUseEPSV Bool             -- ^ Attempt the use of EPSV before PASV for passive FTP downloads.
 | CurlSSLCertType String          -- ^ The format of your certificates ("PEM", "DER")
 | CurlSSLKey FilePath             -- ^ Filename of private key.
 | CurlSSLKeyType String           -- ^ Format of private key; use "ENG" to load from a crypto engine.
 | CurlSSLEngine String            -- ^ Name of crypto engine to use.
 | CurlSSLEngineDefault            -- ^ Make crypto engine the default for crypto operations.
 | CurlDNSUseGlobalCache Bool      -- ^ Have library uses its MT-unfriendly DNS global cache.
 | CurlDNSCacheTimeout Long        -- ^ Number of seconds to cache results of DNS lookups in memory.
 | CurlPreQuote [String]           -- ^ FTP commands to issue after connection and transfer mode has been set.
 | CurlDebugFunction DebugFunction -- ^ callback to catch and report transfer operations.
 | CurlDebugData (Ptr ())          -- ^ state argument to pass to debug callback.
 | CurlCookieSession Bool          -- ^ Signal the start of a cookie session, ignoring previous session cookies.
 | CurlCAPath FilePath             -- ^ Directory holding CA certificates; used when verifying peer certificate.
 | CurlBufferSize Long             -- ^ Turn (down, presumably) the buffers the received data is chunked up into (and reported to the WriteFunction.) A hint, library is free to ignore.
 | CurlNoSignal Bool               -- ^ Turn off use of signals internally.
 | CurlShare (Ptr ())              -- ^ Share handles are used for sharing data among concurrent Curl objects.
 | CurlProxyType Long              -- ^ What type of proxy to use.
 | CurlEncoding String             -- ^ What to report in the Accept-Encoding: header
 | CurlPrivate (Ptr ())            -- ^ Data associated with a Curl handle.
 | CurlHttp200Aliases String       -- ^ Alternatives to standard 200 OK response strings; whatever it takes, I suppose.
 | CurlUnrestrictedAuth Bool       -- ^ Pass on user:pass when following redirects.
 | CurlFtppUseEPRT Bool            -- ^ For active FTP downloads, try using EPRT command over LPRT.
 | CurlHttpAuth [HttpAuth]         -- ^ State your authentication preferences.
 | CurlSSLCtxFunction SSLCtxtFunction -- ^ callback to handle setting up SSL connections; have the power to abort them.
 | CurlSSLCtxData (Ptr ())         -- ^ state argument to pass into the above callback.
 | CurlFtpCreateMissingDirs Bool   -- ^ Have remote directories be created if not already there
 | CurlProxyAuth [HttpAuth]        -- ^ What preferred authentication schemes to use wrt. proxy.
 | CurlFtpResponseTimeout Long     -- ^ max number of seconds to wait for remote server to ACK commands.
 | CurlIPResolve Long              -- ^ Whether to resolve wrt IPv4 or IPv6.
 | CurlMaxFileSize Long            -- ^ Limit the number of bytes you're willing to download.
 | CurlInFileSizeLarge LLong       -- ^ Wider alternative of option giving upper bound of uploaded content (-1 => unknown.)
 | CurlResumeFromLarge LLong       -- ^ Wider alternative for specifying initial transfer offset.
 | CurlMaxFileSizeLarge LLong      -- ^ Wider alternative for specifying max download size.
 | CurlNetrcFile FilePath          -- ^ Path to user\'s .netrc
 | CurlFtpSSL Long                 -- ^ Try enabling the use of SSL for FTP control connections and\/or transfers.
 | CurlPostFieldSizeLarge LLong    -- ^ Size of data to POST; if unspecified (or -1), curl uses strlen().
 | CurlTCPNoDelay Bool             -- ^ Turn on or off the TCP\/IP NODELAY option.
 | CurlFtpSSLAuth Long             -- ^ Twiddle if TLS or SSL is used.
 | CurlIOCTLFunction (Ptr ())      -- ^ somewhat obscure callback for handling read stream resets.
 | CurlIOCTLData (Ptr ())          -- ^ state argument to the above.
 | CurlFtpAccount String           -- ^ The string to use when server asks for account info.
 | CurlCookieList String           -- ^ Cookie string to pass cookie engine; "ALL" scrubs all cookie info; "SESS" scrubs session ones.
 | CurlIgnoreContentLength Bool    -- ^ If Content-Length: values are troublesome (wrong, perhaps?), use this option to ignore using them as guidance.
 | CurlFtpSkipPASVIP Bool          -- ^ Ignore IP address in 227 responses.
 | CurlFtpFileMethod Long          -- ^ How to navigate to a file on the remote server (single, multiple CWDs).
 | CurlLocalPort Port              -- ^ What local port to use for established connection.
 | CurlLocalPortRange Port         -- ^ Number of attempts at finding local ports (using LocalPort as initial base.)
 | CurlConnectOnly Bool            -- ^ If enabled, perform all steps up until actual transfer.
     -- next three for completeness.
 | CurlConvFromNetworkFunction (Ptr ()) -- ^ callback for doing character translations from network format.
 | CurlConvToNetworkFunction (Ptr ())   -- ^ callback for doing character translations to network format.
 | CurlConvFromUtf8Function (Ptr ())    -- ^ callback for translating UTF8 into host encoding.
 | CurlMaxSendSpeedLarge LLong          -- ^ Specifies throttle value for outgoing data.
 | CurlMaxRecvSpeedLarge LLong          -- ^ Specifies throttle for incoming data.
 | CurlFtpAlternativeToUser String      -- ^ Alternative (to user:pass) for FTP authentication; weird.
 | CurlSockOptFunction (Ptr ())         -- ^ callback that's injected between socket creation and connection.
 | CurlSockOptData (Ptr ())             -- ^ state argument to the above.
 | CurlSSLSessionIdCache Bool           -- ^ Enable the SSL session id cache; default is on, so use this to disable.
 | CurlSSHAuthTypes [SSHAuthType]       -- ^ SSH authentication methods to use.
 | CurlSSHPublicKeyFile FilePath        -- ^ Path to file holding user's SSH public key.
 | CurlSSHPrivateKeyFile FilePath       -- ^ Path to file holding user's SSH private key.
 | CurlFtpSSLCCC Bool                   -- ^ Send CCC command after FTP connection has been authenticated.
 | CurlTimeoutMS Long                   -- ^ Max number of milliseconds that a transfer may take.
 | CurlConnectTimeoutMS Long            -- ^ Max number of milliseconds that a connection attempt may take to complete.
 | CurlHttpTransferDecoding Bool        -- ^ Disable transfer decoding; if disabled, curl will turn off chunking.
 | CurlHttpContentDecoding  Bool        -- ^ Disable content decoding, getting the raw bits.
   -- sync'ed wrt 7.19.2
 | CurlNewFilePerms Long
 | CurlNewDirectoryPerms Long
 | CurlPostRedirect Bool
   -- no support for open socket callbacks/function overrides.
 | CurlSSHHostPublicKeyMD5 String
 | CurlCopyPostFields Bool
 | CurlProxyTransferMode Long
   -- no support for seeking in the input stream.
 | CurlCRLFile       FilePath
 | CurlIssuerCert    FilePath
 | CurlAddressScope  Long
 | CurlCertInfo      Long
 | CurlUserName      String
 | CurlUserPassword  String
 | CurlProxyUser     String
 | CurlProxyPassword String
  

instance Show CurlOption where
  show :: CurlOption -> String
show x :: CurlOption
x = CurlOption -> String
showCurlOption CurlOption
x

data HttpVersion
 = HttpVersionNone
 | HttpVersion10
 | HttpVersion11
   deriving ( Int -> HttpVersion
HttpVersion -> Int
HttpVersion -> [HttpVersion]
HttpVersion -> HttpVersion
HttpVersion -> HttpVersion -> [HttpVersion]
HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion]
(HttpVersion -> HttpVersion)
-> (HttpVersion -> HttpVersion)
-> (Int -> HttpVersion)
-> (HttpVersion -> Int)
-> (HttpVersion -> [HttpVersion])
-> (HttpVersion -> HttpVersion -> [HttpVersion])
-> (HttpVersion -> HttpVersion -> [HttpVersion])
-> (HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion])
-> Enum HttpVersion
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion]
$cenumFromThenTo :: HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion]
enumFromTo :: HttpVersion -> HttpVersion -> [HttpVersion]
$cenumFromTo :: HttpVersion -> HttpVersion -> [HttpVersion]
enumFromThen :: HttpVersion -> HttpVersion -> [HttpVersion]
$cenumFromThen :: HttpVersion -> HttpVersion -> [HttpVersion]
enumFrom :: HttpVersion -> [HttpVersion]
$cenumFrom :: HttpVersion -> [HttpVersion]
fromEnum :: HttpVersion -> Int
$cfromEnum :: HttpVersion -> Int
toEnum :: Int -> HttpVersion
$ctoEnum :: Int -> HttpVersion
pred :: HttpVersion -> HttpVersion
$cpred :: HttpVersion -> HttpVersion
succ :: HttpVersion -> HttpVersion
$csucc :: HttpVersion -> HttpVersion
Enum,Int -> HttpVersion -> ShowS
[HttpVersion] -> ShowS
HttpVersion -> String
(Int -> HttpVersion -> ShowS)
-> (HttpVersion -> String)
-> ([HttpVersion] -> ShowS)
-> Show HttpVersion
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HttpVersion] -> ShowS
$cshowList :: [HttpVersion] -> ShowS
show :: HttpVersion -> String
$cshow :: HttpVersion -> String
showsPrec :: Int -> HttpVersion -> ShowS
$cshowsPrec :: Int -> HttpVersion -> ShowS
Show )

data TimeCond
 = TimeCondNone
 | TimeCondIfModSince
 | TimeCondIfUnmodSince
 | TimeCondLastMode
   deriving ( Int -> TimeCond
TimeCond -> Int
TimeCond -> [TimeCond]
TimeCond -> TimeCond
TimeCond -> TimeCond -> [TimeCond]
TimeCond -> TimeCond -> TimeCond -> [TimeCond]
(TimeCond -> TimeCond)
-> (TimeCond -> TimeCond)
-> (Int -> TimeCond)
-> (TimeCond -> Int)
-> (TimeCond -> [TimeCond])
-> (TimeCond -> TimeCond -> [TimeCond])
-> (TimeCond -> TimeCond -> [TimeCond])
-> (TimeCond -> TimeCond -> TimeCond -> [TimeCond])
-> Enum TimeCond
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: TimeCond -> TimeCond -> TimeCond -> [TimeCond]
$cenumFromThenTo :: TimeCond -> TimeCond -> TimeCond -> [TimeCond]
enumFromTo :: TimeCond -> TimeCond -> [TimeCond]
$cenumFromTo :: TimeCond -> TimeCond -> [TimeCond]
enumFromThen :: TimeCond -> TimeCond -> [TimeCond]
$cenumFromThen :: TimeCond -> TimeCond -> [TimeCond]
enumFrom :: TimeCond -> [TimeCond]
$cenumFrom :: TimeCond -> [TimeCond]
fromEnum :: TimeCond -> Int
$cfromEnum :: TimeCond -> Int
toEnum :: Int -> TimeCond
$ctoEnum :: Int -> TimeCond
pred :: TimeCond -> TimeCond
$cpred :: TimeCond -> TimeCond
succ :: TimeCond -> TimeCond
$csucc :: TimeCond -> TimeCond
Enum, Int -> TimeCond -> ShowS
[TimeCond] -> ShowS
TimeCond -> String
(Int -> TimeCond -> ShowS)
-> (TimeCond -> String) -> ([TimeCond] -> ShowS) -> Show TimeCond
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TimeCond] -> ShowS
$cshowList :: [TimeCond] -> ShowS
show :: TimeCond -> String
$cshow :: TimeCond -> String
showsPrec :: Int -> TimeCond -> ShowS
$cshowsPrec :: Int -> TimeCond -> ShowS
Show )
 
data NetRcOption
 = NetRcIgnored
 | NetRcOptional
 | NetRcRequired
   deriving ( Int -> NetRcOption
NetRcOption -> Int
NetRcOption -> [NetRcOption]
NetRcOption -> NetRcOption
NetRcOption -> NetRcOption -> [NetRcOption]
NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption]
(NetRcOption -> NetRcOption)
-> (NetRcOption -> NetRcOption)
-> (Int -> NetRcOption)
-> (NetRcOption -> Int)
-> (NetRcOption -> [NetRcOption])
-> (NetRcOption -> NetRcOption -> [NetRcOption])
-> (NetRcOption -> NetRcOption -> [NetRcOption])
-> (NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption])
-> Enum NetRcOption
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption]
$cenumFromThenTo :: NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption]
enumFromTo :: NetRcOption -> NetRcOption -> [NetRcOption]
$cenumFromTo :: NetRcOption -> NetRcOption -> [NetRcOption]
enumFromThen :: NetRcOption -> NetRcOption -> [NetRcOption]
$cenumFromThen :: NetRcOption -> NetRcOption -> [NetRcOption]
enumFrom :: NetRcOption -> [NetRcOption]
$cenumFrom :: NetRcOption -> [NetRcOption]
fromEnum :: NetRcOption -> Int
$cfromEnum :: NetRcOption -> Int
toEnum :: Int -> NetRcOption
$ctoEnum :: Int -> NetRcOption
pred :: NetRcOption -> NetRcOption
$cpred :: NetRcOption -> NetRcOption
succ :: NetRcOption -> NetRcOption
$csucc :: NetRcOption -> NetRcOption
Enum, Int -> NetRcOption -> ShowS
[NetRcOption] -> ShowS
NetRcOption -> String
(Int -> NetRcOption -> ShowS)
-> (NetRcOption -> String)
-> ([NetRcOption] -> ShowS)
-> Show NetRcOption
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NetRcOption] -> ShowS
$cshowList :: [NetRcOption] -> ShowS
show :: NetRcOption -> String
$cshow :: NetRcOption -> String
showsPrec :: Int -> NetRcOption -> ShowS
$cshowsPrec :: Int -> NetRcOption -> ShowS
Show )

data HttpAuth
 = HttpAuthNone
 | HttpAuthBasic
 | HttpAuthDigest
 | HttpAuthGSSNegotiate
 | HttpAuthNTLM
 | HttpAuthAny
 | HttpAuthAnySafe
   deriving ( Int -> HttpAuth
HttpAuth -> Int
HttpAuth -> [HttpAuth]
HttpAuth -> HttpAuth
HttpAuth -> HttpAuth -> [HttpAuth]
HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth]
(HttpAuth -> HttpAuth)
-> (HttpAuth -> HttpAuth)
-> (Int -> HttpAuth)
-> (HttpAuth -> Int)
-> (HttpAuth -> [HttpAuth])
-> (HttpAuth -> HttpAuth -> [HttpAuth])
-> (HttpAuth -> HttpAuth -> [HttpAuth])
-> (HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth])
-> Enum HttpAuth
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth]
$cenumFromThenTo :: HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth]
enumFromTo :: HttpAuth -> HttpAuth -> [HttpAuth]
$cenumFromTo :: HttpAuth -> HttpAuth -> [HttpAuth]
enumFromThen :: HttpAuth -> HttpAuth -> [HttpAuth]
$cenumFromThen :: HttpAuth -> HttpAuth -> [HttpAuth]
enumFrom :: HttpAuth -> [HttpAuth]
$cenumFrom :: HttpAuth -> [HttpAuth]
fromEnum :: HttpAuth -> Int
$cfromEnum :: HttpAuth -> Int
toEnum :: Int -> HttpAuth
$ctoEnum :: Int -> HttpAuth
pred :: HttpAuth -> HttpAuth
$cpred :: HttpAuth -> HttpAuth
succ :: HttpAuth -> HttpAuth
$csucc :: HttpAuth -> HttpAuth
Enum, Int -> HttpAuth -> ShowS
[HttpAuth] -> ShowS
HttpAuth -> String
(Int -> HttpAuth -> ShowS)
-> (HttpAuth -> String) -> ([HttpAuth] -> ShowS) -> Show HttpAuth
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HttpAuth] -> ShowS
$cshowList :: [HttpAuth] -> ShowS
show :: HttpAuth -> String
$cshow :: HttpAuth -> String
showsPrec :: Int -> HttpAuth -> ShowS
$cshowsPrec :: Int -> HttpAuth -> ShowS
Show )

toHttpAuthMask :: [HttpAuth] -> Long
toHttpAuthMask :: [HttpAuth] -> Long
toHttpAuthMask [] = 0
toHttpAuthMask (x :: HttpAuth
x:xs :: [HttpAuth]
xs) = 
  let vs :: Long
vs = [HttpAuth] -> Long
toHttpAuthMask [HttpAuth]
xs in
  case HttpAuth
x of 
    HttpAuthNone  -> Long
vs
    HttpAuthBasic -> 0x1 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    HttpAuthDigest -> 0x2 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    HttpAuthGSSNegotiate -> 0x4 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    HttpAuthNTLM -> 0x8 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    HttpAuthAny -> (Long -> Long
forall a. Bits a => a -> a
complement 0) Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    HttpAuthAnySafe -> (Long -> Long
forall a. Bits a => a -> a
complement 1) Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs


data SSHAuthType
 = SSHAuthAny
 | SSHAuthNone
 | SSHAuthPublickey
 | SSHAuthPassword
 | SSHAuthHost
 | SSHAuthKeyboard
   deriving ( Int -> SSHAuthType -> ShowS
[SSHAuthType] -> ShowS
SSHAuthType -> String
(Int -> SSHAuthType -> ShowS)
-> (SSHAuthType -> String)
-> ([SSHAuthType] -> ShowS)
-> Show SSHAuthType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SSHAuthType] -> ShowS
$cshowList :: [SSHAuthType] -> ShowS
show :: SSHAuthType -> String
$cshow :: SSHAuthType -> String
showsPrec :: Int -> SSHAuthType -> ShowS
$cshowsPrec :: Int -> SSHAuthType -> ShowS
Show )


toSSHAuthMask :: [SSHAuthType] -> Long
toSSHAuthMask :: [SSHAuthType] -> Long
toSSHAuthMask [] = 0
toSSHAuthMask (x :: SSHAuthType
x:xs :: [SSHAuthType]
xs) = 
  let vs :: Long
vs = [SSHAuthType] -> Long
toSSHAuthMask [SSHAuthType]
xs in 
  case SSHAuthType
x of
    SSHAuthAny -> (Long -> Long
forall a. Bits a => a -> a
complement 0) Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    SSHAuthNone -> Long
vs
    SSHAuthPublickey -> 1 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    SSHAuthPassword -> 2 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    SSHAuthHost -> 4 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs
    SSHAuthKeyboard -> 8 Long -> Long -> Long
forall a. Bits a => a -> a -> a
.|. Long
vs


type WriteFunction
  = Ptr CChar  --  pointer to external buffer holding data
 -> CInt       --  width (in bytes) of each item
 -> CInt       --  number of items
 -> Ptr ()     --  state argument (file pointer etc.)
 -> IO CInt    --  number of bytes written.

type ReadFunction
  = Ptr CChar  --  pointer to external buffer to fill in.
 -> CInt       --  width (in bytes) of each item
 -> CInt       --  number of items
 -> Ptr ()     --  state argument (file pointer etc.)
 -> IO (Maybe CInt) --  how many bytes was copied into buffer; Nothing => abort.
 
type ReadFunctionPrim
  = Ptr CChar
 -> CInt
 -> CInt
 -> Ptr ()
 -> IO CInt
 

type ProgressFunction
  = Ptr ()  --  state argument
 -> Double  --  expected download totals
 -> Double  --  download totals so far
 -> Double  --  expected upload totals
 -> Double  --  upload totals so far
 -> IO CInt --  not sure; 0 is a good one.

type DebugFunction
  = Curl       --  connection handle
 -> DebugInfo  --  type of call
 -> Ptr CChar  --  data buffer
 -> CInt       --  length of buffer
 -> Ptr ()     --  state argument
 -> IO ()      --  always 0

data DebugInfo
 = InfoText
 | InfoHeaderIn
 | InfoHeaderOut
 | InfoDataIn
 | InfoDataOut
 | InfoSslDataIn
 | InfoSslDataOut
   deriving ( DebugInfo -> DebugInfo -> Bool
(DebugInfo -> DebugInfo -> Bool)
-> (DebugInfo -> DebugInfo -> Bool) -> Eq DebugInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DebugInfo -> DebugInfo -> Bool
$c/= :: DebugInfo -> DebugInfo -> Bool
== :: DebugInfo -> DebugInfo -> Bool
$c== :: DebugInfo -> DebugInfo -> Bool
Eq, Int -> DebugInfo
DebugInfo -> Int
DebugInfo -> [DebugInfo]
DebugInfo -> DebugInfo
DebugInfo -> DebugInfo -> [DebugInfo]
DebugInfo -> DebugInfo -> DebugInfo -> [DebugInfo]
(DebugInfo -> DebugInfo)
-> (DebugInfo -> DebugInfo)
-> (Int -> DebugInfo)
-> (DebugInfo -> Int)
-> (DebugInfo -> [DebugInfo])
-> (DebugInfo -> DebugInfo -> [DebugInfo])
-> (DebugInfo -> DebugInfo -> [DebugInfo])
-> (DebugInfo -> DebugInfo -> DebugInfo -> [DebugInfo])
-> Enum DebugInfo
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: DebugInfo -> DebugInfo -> DebugInfo -> [DebugInfo]
$cenumFromThenTo :: DebugInfo -> DebugInfo -> DebugInfo -> [DebugInfo]
enumFromTo :: DebugInfo -> DebugInfo -> [DebugInfo]
$cenumFromTo :: DebugInfo -> DebugInfo -> [DebugInfo]
enumFromThen :: DebugInfo -> DebugInfo -> [DebugInfo]
$cenumFromThen :: DebugInfo -> DebugInfo -> [DebugInfo]
enumFrom :: DebugInfo -> [DebugInfo]
$cenumFrom :: DebugInfo -> [DebugInfo]
fromEnum :: DebugInfo -> Int
$cfromEnum :: DebugInfo -> Int
toEnum :: Int -> DebugInfo
$ctoEnum :: Int -> DebugInfo
pred :: DebugInfo -> DebugInfo
$cpred :: DebugInfo -> DebugInfo
succ :: DebugInfo -> DebugInfo
$csucc :: DebugInfo -> DebugInfo
Enum )

type DebugFunctionPrim
  = CurlH      --  connection handle
 -> CInt       --  type of call
 -> Ptr CChar  --  data buffer
 -> CInt       --  length of buffer
 -> Ptr ()     --  state argument
 -> IO CInt    --  always 0



type SSLCtxtFunction
  = CurlH   --  connection handle
 -> Ptr ()  --  the SSL_CTX handle
 -> Ptr ()  --  state argument
 -> IO CInt

curl_readfunc_abort :: CInt
curl_readfunc_abort :: CInt
curl_readfunc_abort = 0x10000000

baseLong :: Int
baseLong :: Int
baseLong = 0

baseObject :: Int
baseObject :: Int
baseObject = 10000

baseFunction :: Int
baseFunction :: Int
baseFunction = 20000

baseOffT :: Int
baseOffT :: Int
baseOffT = 30000

unmarshallOption :: Unmarshaller a -> CurlOption -> IO a
unmarshallOption :: Unmarshaller a -> CurlOption -> IO a
unmarshallOption um :: Unmarshaller a
um c :: CurlOption
c =
 let 
  l :: Int -> Int
l   = (Int
baseLongInt -> Int -> Int
forall a. Num a => a -> a -> a
+)
  o :: Int -> Int
o   = (Int
baseObjectInt -> Int -> Int
forall a. Num a => a -> a -> a
+)
  f :: Int -> Int
f   = (Int
baseFunctionInt -> Int -> Int
forall a. Num a => a -> a -> a
+)
  off :: Int -> Int
off = (Int
baseOffTInt -> Int -> Int
forall a. Num a => a -> a -> a
+)
 in
 case CurlOption
c of
  CurlFileObj x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 1) Ptr ()
x
  CurlURL x :: String
x   -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 2) String
x
  CurlPort x :: Long
x  -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long   Unmarshaller a
um (Int -> Int
l 3) Long
x
  CurlProxy x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 4) String
x
  CurlUserPwd x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 5) String
x
  CurlProxyUserPwd x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 6) String
x
  CurlRange x :: String
x   -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 7) String
x
  CurlInFile x :: String
x  -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 9) String
x
  CurlErrorBuffer x :: Ptr CChar
x   -> Unmarshaller a -> Int -> Ptr CChar -> IO a
forall a. Unmarshaller a -> Int -> Ptr CChar -> IO a
u_cptr Unmarshaller a
um (Int -> Int
o 10) Ptr CChar
x
  CurlWriteFunction x :: WriteFunction
x -> Unmarshaller a -> Int -> WriteFunction -> IO a
forall a. Unmarshaller a -> Int -> WriteFunction -> IO a
u_writeFun Unmarshaller a
um (Int -> Int
f 11) WriteFunction
x
  CurlReadFunction x :: ReadFunction
x  -> Unmarshaller a -> Int -> ReadFunction -> IO a
forall a. Unmarshaller a -> Int -> ReadFunction -> IO a
u_readFun  Unmarshaller a
um (Int -> Int
f 12) ReadFunction
x
  CurlTimeout x :: Long
x ->  Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 13) Long
x
  CurlInFileSize x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 14) Long
x
  CurlPostFields x :: [String]
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 15) ([String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ String -> [String] -> [String]
forall a. a -> [a] -> [a]
intersperse "&" [String]
x)
  CurlReferer x :: String
x ->  Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 16) String
x
  CurlFtpPort x :: String
x ->  Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 17) String
x
  CurlUserAgent x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 18) String
x
  CurlLowSpeed x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 19) Long
x
  CurlLowSpeedTime x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 20) Long
x
  CurlResumeFrom x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 21) Long
x
  CurlCookie x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 22) String
x
  CurlHttpHeaders x :: [String]
x -> Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings Unmarshaller a
um (Int -> Int
o 23) [String]
x
  CurlHttpPost x :: [HttpPost]
x -> Unmarshaller a -> Int -> [HttpPost] -> IO a
forall a. Unmarshaller a -> Int -> [HttpPost] -> IO a
u_posts Unmarshaller a
um (Int -> Int
o 24) [HttpPost]
x
  CurlSSLCert x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 25) String
x
  CurlSSLPassword x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 26) String
x
  CurlSSLKeyPassword x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 26) String
x -- yes, duplicate.
  CurlCRLF x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 27) Bool
x
  CurlQuote x :: [String]
x -> Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings Unmarshaller a
um (Int -> Int
o 28) [String]
x
  CurlWriteHeader x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 29) Ptr ()
x
  CurlCookieFile x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 31) String
x
  CurlSSLVersion x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 32) Long
x
  CurlTimeCondition x :: TimeCond
x -> Unmarshaller a -> Int -> TimeCond -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 33) TimeCond
x
  CurlTimeValue x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 34) Long
x
  CurlCustomRequest x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 36) String
x
  -- CurlStderr x -> u_string um (o 37) x
  CurlPostQuote x :: [String]
x -> Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings Unmarshaller a
um (Int -> Int
o 39) [String]
x
  CurlWriteInfo x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 40) String
x
  CurlVerbose x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 41) Bool
x
  CurlHeader x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 42) Bool
x
  CurlNoProgress x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 43) Bool
x
  CurlNoBody x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 44) Bool
x
  CurlFailOnError x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 45) Bool
x
  CurlUpload x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 46) Bool
x
  CurlPost x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 47) Bool
x
  CurlFtpListOnly x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 48) Bool
x
  CurlFtpAppend x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 50) Bool
x
  CurlUseNetRc x :: NetRcOption
x -> Unmarshaller a -> Int -> NetRcOption -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 51) NetRcOption
x
  CurlFollowLocation x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 52) Bool
x
  CurlTransferTextASCII x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 53) Bool
x
  CurlPut x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 54) Bool
x
  CurlProgressFunction x :: ProgressFunction
x -> Unmarshaller a -> Int -> ProgressFunction -> IO a
forall a. Unmarshaller a -> Int -> ProgressFunction -> IO a
u_progressFun Unmarshaller a
um (Int -> Int
f 56) ProgressFunction
x
  CurlProgressData x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 57) Ptr ()
x
  CurlAutoReferer x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 58) Bool
x
  CurlProxyPort x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 59) Long
x
  CurlPostFieldSize x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 60) Long
x
  CurlHttpProxyTunnel x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 61) Bool
x
  CurlInterface x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 62) String
x
  CurlKrb4Level x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 63) String
x
  CurlSSLVerifyPeer x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 64) Bool
x
  CurlCAInfo x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 65) String
x
  CurlMaxRedirs x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 68) Long
x
  CurlFiletime x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 69) Bool
x
  CurlTelnetOptions x :: [String]
x -> Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings Unmarshaller a
um (Int -> Int
o 70) [String]
x
  CurlMaxConnects x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 71) Long
x
  CurlClosePolicy x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 72) Long
x
  CurlFreshConnect x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 74) Bool
x
  CurlForbidReuse x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 75) Bool
x
  CurlRandomFile x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 76) String
x
  CurlEgdSocket x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 77) String
x
  CurlConnectTimeout x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 78) Long
x
  CurlHeaderFunction x :: WriteFunction
x -> Unmarshaller a -> Int -> WriteFunction -> IO a
forall a. Unmarshaller a -> Int -> WriteFunction -> IO a
u_writeFun Unmarshaller a
um (Int -> Int
f 79) WriteFunction
x
  CurlHttpGet x :: Bool
x        -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 80) Bool
x
  CurlSSLVerifyHost x :: Long
x  -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 81) Long
x
  CurlCookieJar x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 82) String
x
  CurlSSLCipherList x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 83) String
x -- a string (or a l-list of them)?
  CurlHttpVersion x :: HttpVersion
x -> Unmarshaller a -> Int -> HttpVersion -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 84) HttpVersion
x
  CurlFtpUseEPSV x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 85) Bool
x
  CurlSSLCertType x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 86) String
x
  CurlSSLKey x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 87) String
x
  CurlSSLKeyType x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 88) String
x
  CurlSSLEngine x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 89) String
x
  CurlSSLEngineDefault -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 90) Bool
True
  CurlDNSUseGlobalCache x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 91) Bool
x
  CurlDNSCacheTimeout x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 92) Long
x
  CurlPreQuote x :: [String]
x -> Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings Unmarshaller a
um (Int -> Int
o 93) [String]
x
  CurlDebugFunction x :: DebugFunction
x -> Unmarshaller a -> Int -> DebugFunction -> IO a
forall a. Unmarshaller a -> Int -> DebugFunction -> IO a
u_debugFun Unmarshaller a
um (Int -> Int
f 94) DebugFunction
x
  CurlDebugData x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 95) Ptr ()
x
  CurlCookieSession x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 96) Bool
x
  CurlCAPath x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 97) String
x
  CurlBufferSize x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 98) Long
x
  CurlNoSignal x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 99) Bool
x
  CurlShare x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 100) Ptr ()
x
  CurlProxyType x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 101) Long
x
  CurlEncoding x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 102) String
x
  CurlPrivate x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 103) Ptr ()
x
  CurlHttp200Aliases x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 104) String
x -- correct?
  CurlUnrestrictedAuth x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 105) Bool
x
  CurlFtppUseEPRT x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 106) Bool
x
  CurlHttpAuth xs :: [HttpAuth]
xs -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 107) ([HttpAuth] -> Long
toHttpAuthMask [HttpAuth]
xs)
  CurlSSLCtxFunction x :: SSLCtxtFunction
x -> Unmarshaller a -> Int -> SSLCtxtFunction -> IO a
forall a. Unmarshaller a -> Int -> SSLCtxtFunction -> IO a
u_sslctxt Unmarshaller a
um (Int -> Int
f 108) SSLCtxtFunction
x
  CurlSSLCtxData x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 109) Ptr ()
x
  CurlFtpCreateMissingDirs x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 110) Bool
x
  CurlProxyAuth x :: [HttpAuth]
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 111) ([HttpAuth] -> Long
toHttpAuthMask [HttpAuth]
x)
  CurlFtpResponseTimeout x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 112) Long
x
  CurlIPResolve x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 113) Long
x
  CurlMaxFileSize x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 114) Long
x
  CurlInFileSizeLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 115) LLong
x
  CurlResumeFromLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 116) LLong
x
  CurlMaxFileSizeLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 117) LLong
x
  CurlNetrcFile x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 118) String
x
  CurlFtpSSL x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 119) Long
x
  CurlPostFieldSizeLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 120) LLong
x
  CurlTCPNoDelay x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 121) Bool
x
  CurlFtpSSLAuth x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 129) Long
x
  CurlIOCTLFunction x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ioctl_fun Unmarshaller a
um (Int -> Int
f 130) Ptr ()
x
  CurlIOCTLData x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 131) Ptr ()
x
  CurlFtpAccount x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 134) String
x
  CurlCookieList x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 135) String
x
  CurlIgnoreContentLength x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 136) Bool
x
  CurlFtpSkipPASVIP x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 137) Bool
x
  CurlFtpFileMethod x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall b a. Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum Unmarshaller a
um (Int -> Int
l 138) Long
x
  CurlLocalPort x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 139) Long
x
  CurlLocalPortRange x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 140) Long
x
  CurlConnectOnly x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 141) Bool
x
  CurlConvFromNetworkFunction x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromNetwork Unmarshaller a
um (Int -> Int
f 142) Ptr ()
x
  CurlConvToNetworkFunction x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convToNetwork Unmarshaller a
um (Int -> Int
f 143) Ptr ()
x
  CurlConvFromUtf8Function x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromUtf8 Unmarshaller a
um (Int -> Int
f 144) Ptr ()
x
  CurlMaxSendSpeedLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 145) LLong
x
  CurlMaxRecvSpeedLarge x :: LLong
x -> Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong Unmarshaller a
um (Int -> Int
off 146) LLong
x
  CurlFtpAlternativeToUser x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 147) String
x
  CurlSockOptFunction x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_sockoptFun Unmarshaller a
um (Int -> Int
f 148) Ptr ()
x
  CurlSockOptData x :: Ptr ()
x -> Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um (Int -> Int
o 149) Ptr ()
x
  CurlSSLSessionIdCache x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 150) Bool
x
  CurlSSHAuthTypes xs :: [SSHAuthType]
xs -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 151) ([SSHAuthType] -> Long
toSSHAuthMask [SSHAuthType]
xs)
  CurlSSHPublicKeyFile x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 152) String
x
  CurlSSHPrivateKeyFile x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
o 153) String
x
  CurlFtpSSLCCC x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 154) Bool
x
  CurlTimeoutMS x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 155) Long
x
  CurlConnectTimeoutMS x :: Long
x -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 156) Long
x
  CurlHttpTransferDecoding x :: Bool
x -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 157) Bool
x
  CurlHttpContentDecoding x :: Bool
x ->  Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 158) Bool
x
  CurlNewFilePerms x :: Long
x        -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 159) Long
x
  CurlNewDirectoryPerms x :: Long
x   -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 160) Long
x
  CurlPostRedirect x :: Bool
x        -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 161) Bool
x
  CurlSSHHostPublicKeyMD5 x :: String
x -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 162) String
x
  CurlCopyPostFields x :: Bool
x      -> Unmarshaller a -> Int -> Bool -> IO a
forall a. Unmarshaller a -> Int -> Bool -> IO a
u_bool Unmarshaller a
um (Int -> Int
l 165) Bool
x
  CurlProxyTransferMode x :: Long
x   -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um (Int -> Int
l 166) Long
x
  CurlCRLFile x :: String
x             -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 169) String
x
  CurlIssuerCert x :: String
x          -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 170) String
x
  CurlAddressScope x :: Long
x        -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um   (Int -> Int
l 171) Long
x
  CurlCertInfo x :: Long
x            -> Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um   (Int -> Int
l 172) Long
x
  CurlUserName x :: String
x            -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 173) String
x
  CurlUserPassword x :: String
x        -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 174) String
x
  CurlProxyUser x :: String
x           -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 175) String
x
  CurlProxyPassword x :: String
x       -> Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string Unmarshaller a
um (Int -> Int
l 176) String
x

data Unmarshaller a
 = Unmarshaller
     { Unmarshaller a -> Int -> Long -> IO a
u_long    :: Int -> Long     -> IO a
     , Unmarshaller a -> Int -> LLong -> IO a
u_llong   :: Int -> LLong    -> IO a
     , Unmarshaller a -> Int -> String -> IO a
u_string  :: Int -> String   -> IO a
     , Unmarshaller a -> Int -> [String] -> IO a
u_strings :: Int -> [String] -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr     :: Int -> Ptr ()   -> IO a
     , Unmarshaller a -> Int -> WriteFunction -> IO a
u_writeFun :: Int -> WriteFunction -> IO a
     , Unmarshaller a -> Int -> ReadFunction -> IO a
u_readFun :: Int -> ReadFunction -> IO a
     , Unmarshaller a -> Int -> ProgressFunction -> IO a
u_progressFun :: Int -> ProgressFunction -> IO a
     , Unmarshaller a -> Int -> DebugFunction -> IO a
u_debugFun :: Int -> DebugFunction -> IO a
     , Unmarshaller a -> Int -> [HttpPost] -> IO a
u_posts    :: Int -> [HttpPost] -> IO a
     , Unmarshaller a -> Int -> SSLCtxtFunction -> IO a
u_sslctxt  :: Int -> SSLCtxtFunction -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_ioctl_fun :: Int -> Ptr () -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromNetwork :: Int -> Ptr () -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_convToNetwork :: Int -> Ptr () -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromUtf8 :: Int -> Ptr () -> IO a
     , Unmarshaller a -> Int -> Ptr () -> IO a
u_sockoptFun  :: Int -> Ptr () -> IO a
     }

verboseUnmarshaller :: Unmarshaller a -> Unmarshaller a
verboseUnmarshaller :: Unmarshaller a -> Unmarshaller a
verboseUnmarshaller u :: Unmarshaller a
u =
  let two :: String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two m :: String
m f :: Unmarshaller a -> t -> t -> IO b
f x :: t
x y :: t
y = String -> IO ()
putStrLn String
m IO () -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Unmarshaller a -> t -> t -> IO b
f Unmarshaller a
u t
x t
y 
      twoS :: String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS m :: String
m f :: Unmarshaller a -> t -> t -> IO b
f x :: t
x y :: t
y = String -> IO ()
putStrLn (String
m String -> ShowS
forall a. [a] -> [a] -> [a]
++ ": " String -> ShowS
forall a. [a] -> [a] -> [a]
++ (t, t) -> String
forall a. Show a => a -> String
show (t
x,t
y)) IO () -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Unmarshaller a -> t -> t -> IO b
f Unmarshaller a
u t
x t
y 
  in Unmarshaller a
u 
    { u_long :: Int -> Long -> IO a
u_long        = String
-> (Unmarshaller a -> Int -> Long -> IO a) -> Int -> Long -> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_long" Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long
    , u_llong :: Int -> LLong -> IO a
u_llong       = String
-> (Unmarshaller a -> Int -> LLong -> IO a) -> Int -> LLong -> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_llong" Unmarshaller a -> Int -> LLong -> IO a
forall a. Unmarshaller a -> Int -> LLong -> IO a
u_llong
    , u_string :: Int -> String -> IO a
u_string      = String
-> (Unmarshaller a -> Int -> String -> IO a)
-> Int
-> String
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_string" Unmarshaller a -> Int -> String -> IO a
forall a. Unmarshaller a -> Int -> String -> IO a
u_string 
    , u_strings :: Int -> [String] -> IO a
u_strings     = String
-> (Unmarshaller a -> Int -> [String] -> IO a)
-> Int
-> [String]
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_strings" Unmarshaller a -> Int -> [String] -> IO a
forall a. Unmarshaller a -> Int -> [String] -> IO a
u_strings
    , u_ptr :: Int -> Ptr () -> IO a
u_ptr         = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_ptr" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr
    , u_writeFun :: Int -> WriteFunction -> IO a
u_writeFun    = String
-> (Unmarshaller a -> Int -> WriteFunction -> IO a)
-> Int
-> WriteFunction
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_writeFun" Unmarshaller a -> Int -> WriteFunction -> IO a
forall a. Unmarshaller a -> Int -> WriteFunction -> IO a
u_writeFun
    , u_readFun :: Int -> ReadFunction -> IO a
u_readFun     = String
-> (Unmarshaller a -> Int -> ReadFunction -> IO a)
-> Int
-> ReadFunction
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_readFun" Unmarshaller a -> Int -> ReadFunction -> IO a
forall a. Unmarshaller a -> Int -> ReadFunction -> IO a
u_readFun
    , u_progressFun :: Int -> ProgressFunction -> IO a
u_progressFun = String
-> (Unmarshaller a -> Int -> ProgressFunction -> IO a)
-> Int
-> ProgressFunction
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_progressFun" Unmarshaller a -> Int -> ProgressFunction -> IO a
forall a. Unmarshaller a -> Int -> ProgressFunction -> IO a
u_progressFun
    , u_debugFun :: Int -> DebugFunction -> IO a
u_debugFun    = String
-> (Unmarshaller a -> Int -> DebugFunction -> IO a)
-> Int
-> DebugFunction
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_debugFun" Unmarshaller a -> Int -> DebugFunction -> IO a
forall a. Unmarshaller a -> Int -> DebugFunction -> IO a
u_debugFun
    , u_posts :: Int -> [HttpPost] -> IO a
u_posts       = String
-> (Unmarshaller a -> Int -> [HttpPost] -> IO a)
-> Int
-> [HttpPost]
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_posts" Unmarshaller a -> Int -> [HttpPost] -> IO a
forall a. Unmarshaller a -> Int -> [HttpPost] -> IO a
u_posts
    , u_sslctxt :: Int -> SSLCtxtFunction -> IO a
u_sslctxt     = String
-> (Unmarshaller a -> Int -> SSLCtxtFunction -> IO a)
-> Int
-> SSLCtxtFunction
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_sslctxt" Unmarshaller a -> Int -> SSLCtxtFunction -> IO a
forall a. Unmarshaller a -> Int -> SSLCtxtFunction -> IO a
u_sslctxt
    , u_ioctl_fun :: Int -> Ptr () -> IO a
u_ioctl_fun        = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
two "u_ioctl_fun" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ioctl_fun
    , u_convFromNetwork :: Int -> Ptr () -> IO a
u_convFromNetwork  = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_convFromNetwork" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromNetwork
    , u_convToNetwork :: Int -> Ptr () -> IO a
u_convToNetwork    = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_convToNetwork" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convToNetwork
    , u_convFromUtf8 :: Int -> Ptr () -> IO a
u_convFromUtf8     = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_convFromUtf8" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_convFromUtf8
    , u_sockoptFun :: Int -> Ptr () -> IO a
u_sockoptFun       = String
-> (Unmarshaller a -> Int -> Ptr () -> IO a)
-> Int
-> Ptr ()
-> IO a
forall t t b.
(Show t, Show t) =>
String -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
twoS "u_sockoptFun" Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_sockoptFun
    }


u_bool :: Unmarshaller a -> Int -> Bool -> IO a
u_bool :: Unmarshaller a -> Int -> Bool -> IO a
u_bool um :: Unmarshaller a
um x :: Int
x b :: Bool
b = Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um Int
x (if Bool
b then 1 else 0)

u_enum :: Enum b => Unmarshaller a -> Int -> b -> IO a
u_enum :: Unmarshaller a -> Int -> b -> IO a
u_enum um :: Unmarshaller a
um x :: Int
x b :: b
b = Unmarshaller a -> Int -> Long -> IO a
forall a. Unmarshaller a -> Int -> Long -> IO a
u_long Unmarshaller a
um Int
x (Int -> Long
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Long) -> Int -> Long
forall a b. (a -> b) -> a -> b
$ b -> Int
forall a. Enum a => a -> Int
fromEnum b
b)

u_cptr :: Unmarshaller a -> Int -> Ptr CChar -> IO a
u_cptr :: Unmarshaller a -> Int -> Ptr CChar -> IO a
u_cptr um :: Unmarshaller a
um x :: Int
x p :: Ptr CChar
p = Unmarshaller a -> Int -> Ptr () -> IO a
forall a. Unmarshaller a -> Int -> Ptr () -> IO a
u_ptr Unmarshaller a
um Int
x (Ptr CChar -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr Ptr CChar
p)

showCurlOption :: CurlOption -> String
showCurlOption :: CurlOption -> String
showCurlOption o :: CurlOption
o = 
  case CurlOption
o of
    CurlFileObj p :: Ptr ()
p  -> "CurlFileObj " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlURL u :: String
u      -> "CurlURL " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
u
    CurlPort p :: Long
p     -> "CurlPort " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlProxy s :: String
s    -> "CurlProxy " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
s
    CurlUserPwd p :: String
p  -> "CurlUserPwd " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlProxyUserPwd p :: String
p -> "CurlProxyUserPwd " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlRange p :: String
p -> "CurlRange " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlInFile p :: String
p -> "CurlInFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlErrorBuffer p :: Ptr CChar
p -> "CurlErrorBuffer " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr CChar -> String
forall a. Show a => a -> String
show Ptr CChar
p
    CurlWriteFunction{} -> "CurlWriteFunction <fun>"
    CurlReadFunction{}  -> "CurlReadFunction <fun>"
    CurlTimeout l :: Long
l       -> "CurlTimeout " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
l
    CurlInFileSize l :: Long
l    -> "CurlInFileSize " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
l
    CurlPostFields p :: [String]
p    -> "CurlPostFields " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlReferer p :: String
p       -> "CurlReferer " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlFtpPort p :: String
p       -> "CurlFtpPort " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlUserAgent p :: String
p     -> "CurlUserAgent " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlLowSpeed  p :: Long
p     -> "CurlLowSpeed " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlLowSpeedTime p :: Long
p  -> "CurlLowSpeedTime " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlResumeFrom p :: Long
p    -> "CurlResumeFrom " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlCookie p :: String
p        -> "CurlCookie " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlHttpHeaders p :: [String]
p   -> "CurlHttpHeaders " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlHttpPost p :: [HttpPost]
p      -> "CurlHttpPost " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [HttpPost] -> String
forall a. Show a => a -> String
show [HttpPost]
p
    CurlSSLCert p :: String
p       -> "CurlSSLCert " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLPassword p :: String
p   -> "CurlSSLPassword " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLKeyPassword p :: String
p -> "CurlSSLKeyPassword " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlCRLF p :: Bool
p -> "CurlCRLF " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlQuote p :: [String]
p -> "CurlQuote " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlWriteHeader p :: Ptr ()
p -> "CurlWriteHeader " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlCookieFile p :: String
p -> "CurlCookieFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLVersion p :: Long
p -> "CurlSSLVersion " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlTimeCondition p :: TimeCond
p -> "CurlTimeCondition " String -> ShowS
forall a. [a] -> [a] -> [a]
++ TimeCond -> String
forall a. Show a => a -> String
show TimeCond
p
    CurlTimeValue p :: Long
p -> "CurlTimeValue " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlCustomRequest p :: String
p -> "CurlCustomRequest " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlPostQuote p :: [String]
p -> "CurlPostQuote " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlWriteInfo p :: String
p -> "CurlWriteInfo " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlVerbose p :: Bool
p -> "CurlVerbose " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlHeader p :: Bool
p -> "CurlHeader " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlNoProgress p :: Bool
p -> "CurlNoProgress " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlNoBody p :: Bool
p -> "CurlNoBody " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFailOnError p :: Bool
p -> "CurlFailOnError " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlUpload p :: Bool
p -> "CurlUpload " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlPost p :: Bool
p -> "CurlPost " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtpListOnly p :: Bool
p -> "CurlFtpListOnly " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtpAppend p :: Bool
p -> "CurlFtpAppend " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlUseNetRc p :: NetRcOption
p -> "CurlUseNetRc " String -> ShowS
forall a. [a] -> [a] -> [a]
++ NetRcOption -> String
forall a. Show a => a -> String
show NetRcOption
p
    CurlFollowLocation p :: Bool
p -> "CurlFollowLocation " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlTransferTextASCII p :: Bool
p -> "CurlTransferTextASCII " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlPut p :: Bool
p -> "CurlPut " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlProgressFunction{} -> "CurlProgressFunction <fun>"
    CurlProgressData p :: Ptr ()
p -> "CurlProgressData " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlAutoReferer p :: Bool
p -> "CurlAutoReferer " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlProxyPort p :: Long
p -> "CurlProxyPort " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlPostFieldSize p :: Long
p -> "CurlPostFieldSize " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlHttpProxyTunnel p :: Bool
p -> "CurlHttpProxyTunnel " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlInterface p :: String
p -> "CurlInterface " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlKrb4Level p :: String
p -> "CurlKrb4Level " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLVerifyPeer p :: Bool
p -> "CurlSSLVerifyPeer " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlCAInfo p :: String
p -> "CurlCAInfo " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlMaxRedirs p :: Long
p -> "CurlMaxRedirs " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlFiletime p :: Bool
p -> "CurlFiletime " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlTelnetOptions p :: [String]
p -> "CurlTelnetOptions " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlMaxConnects p :: Long
p -> "CurlMaxConnects " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlClosePolicy p :: Long
p -> "CurlClosePolicy " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlFreshConnect p :: Bool
p -> "CurlFreshConnect " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlForbidReuse p :: Bool
p -> "CurlForbidReuse " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlRandomFile p :: String
p -> "CurlRandomFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlEgdSocket p :: String
p -> "CurlEgdSocket " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlConnectTimeout p :: Long
p -> "CurlConnectTimeout " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlHeaderFunction{} -> "CurlHeaderFunction <fun>"
    CurlHttpGet p :: Bool
p -> "CurlHttpGet " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlSSLVerifyHost p :: Long
p -> "CurlSSLVerifyHost " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlCookieJar p :: String
p -> "CurlCookieJar " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLCipherList p :: String
p -> "CurlSSLCipherList " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlHttpVersion p :: HttpVersion
p -> "CurlHttpVersion " String -> ShowS
forall a. [a] -> [a] -> [a]
++ HttpVersion -> String
forall a. Show a => a -> String
show HttpVersion
p
    CurlFtpUseEPSV p :: Bool
p -> "CurlFtpUseEPSV " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlSSLCertType p :: String
p -> "CurlSSLCertType " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLKey p :: String
p -> "CurlSSLKey " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLKeyType p :: String
p -> "CurlSSLKeyType " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLEngine p :: String
p -> "CurlSSLEngine " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSLEngineDefault-> "CurlSSLEngineDefault"
    CurlDNSUseGlobalCache p :: Bool
p -> "CurlDNSUseGlobalCache " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlDNSCacheTimeout p :: Long
p -> "CurlDNSCacheTimeout " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlPreQuote p :: [String]
p -> "CurlPreQuote " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
p
    CurlDebugFunction{} -> "CurlDebugFunction <fun>"
    CurlDebugData p :: Ptr ()
p -> "CurlDebugData " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlCookieSession p :: Bool
p -> "CurlCookieSession " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlCAPath p :: String
p -> "CurlCAPath " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlBufferSize p :: Long
p -> "CurlBufferSize " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlNoSignal p :: Bool
p -> "CurlNoSignal " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlShare p :: Ptr ()
p -> "CurlShare " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlProxyType p :: Long
p -> "CurlProxyType " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlEncoding p :: String
p -> "CurlEncoding " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlPrivate p :: Ptr ()
p -> "CurlPrivate " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlHttp200Aliases p :: String
p -> "CurlHttp200Aliases " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlUnrestrictedAuth p :: Bool
p -> "CurlUnrestrictedAuth " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtppUseEPRT p :: Bool
p -> "CurlFtppUseEPRT " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlHttpAuth p :: [HttpAuth]
p -> "CurlHttpAuth " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [HttpAuth] -> String
forall a. Show a => a -> String
show [HttpAuth]
p
    CurlSSLCtxFunction{} -> "CurlSSLCtxFunction <fun>"
    CurlSSLCtxData p :: Ptr ()
p -> "CurlSSLCtxData " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlFtpCreateMissingDirs p :: Bool
p -> "CurlFtpCreateMissingDirs " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlProxyAuth p :: [HttpAuth]
p -> "CurlProxyAuth " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [HttpAuth] -> String
forall a. Show a => a -> String
show [HttpAuth]
p
    CurlFtpResponseTimeout p :: Long
p -> "CurlFtpResponseTimeout " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlIPResolve p :: Long
p -> "CurlIPResolve " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlMaxFileSize p :: Long
p -> "CurlMaxFileSize " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlInFileSizeLarge p :: LLong
p -> "CurlInFileSizeLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlResumeFromLarge p :: LLong
p -> "CurlResumeFromLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlMaxFileSizeLarge p :: LLong
p -> "CurlMaxFileSizeLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlNetrcFile p :: String
p -> "CurlNetrcFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlFtpSSL p :: Long
p -> "CurlFtpSSL " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlPostFieldSizeLarge p :: LLong
p -> "CurlPostFieldSizeLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlTCPNoDelay p :: Bool
p -> "CurlTCPNoDelay " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtpSSLAuth p :: Long
p -> "CurlFtpSSLAuth " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlIOCTLFunction p :: Ptr ()
p -> "CurlIOCTLFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlIOCTLData p :: Ptr ()
p -> "CurlIOCTLData " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlFtpAccount p :: String
p -> "CurlFtpAccount " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlCookieList p :: String
p -> "CurlCookieList " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlIgnoreContentLength p :: Bool
p -> "CurlIgnoreContentLength " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtpSkipPASVIP p :: Bool
p -> "CurlFtpSkipPASVIP " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlFtpFileMethod p :: Long
p -> "CurlFtpFileMethod " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlLocalPort p :: Long
p -> "CurlLocalPort " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlLocalPortRange p :: Long
p -> "CurlLocalPortRange " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlConnectOnly p :: Bool
p -> "CurlConnectOnly " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlConvFromNetworkFunction p :: Ptr ()
p -> "CurlConvFromNetworkFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlConvToNetworkFunction p :: Ptr ()
p -> "CurlConvToNetworkFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlConvFromUtf8Function p :: Ptr ()
p -> "CurlConvFromUtf8Function " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlMaxSendSpeedLarge p :: LLong
p -> "CurlMaxSendSpeedLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlMaxRecvSpeedLarge p :: LLong
p -> "CurlMaxRecvSpeedLarge " String -> ShowS
forall a. [a] -> [a] -> [a]
++ LLong -> String
forall a. Show a => a -> String
show LLong
p
    CurlFtpAlternativeToUser p :: String
p -> "CurlFtpAlternativeToUser " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSockOptFunction p :: Ptr ()
p -> "CurlSockOptFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlSockOptData p :: Ptr ()
p -> "CurlSockOptData " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Ptr () -> String
forall a. Show a => a -> String
show Ptr ()
p
    CurlSSLSessionIdCache p :: Bool
p -> "CurlSSLSessionIdCache " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlSSHAuthTypes p :: [SSHAuthType]
p -> "CurlSSHAuthTypes " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [SSHAuthType] -> String
forall a. Show a => a -> String
show [SSHAuthType]
p
    CurlSSHPublicKeyFile p :: String
p -> "CurlSSHPublicKeyFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlSSHPrivateKeyFile p :: String
p -> "CurlSSHPrivateKeyFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlFtpSSLCCC p :: Bool
p -> "CurlFtpSSLCCC " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlTimeoutMS p :: Long
p -> "CurlTimeoutMS " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlConnectTimeoutMS p :: Long
p -> "CurlConnectTimeoutMS " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlHttpTransferDecoding p :: Bool
p -> "CurlHttpTransferDecoding " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlHttpContentDecoding p :: Bool
p -> "CurlHttpContentDecoding " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlNewFilePerms l :: Long
l -> "CurlNewFilePerms " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
l
    CurlNewDirectoryPerms p :: Long
p -> "CurlNewDirectoryPerms " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlPostRedirect p :: Bool
p -> "CurlPostRedirect " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlSSHHostPublicKeyMD5 p :: String
p -> "CurlSSHHostPublicKeyMD5 " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlCopyPostFields p :: Bool
p -> "CurlCopyPostFields " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Bool -> String
forall a. Show a => a -> String
show Bool
p
    CurlProxyTransferMode p :: Long
p -> "CurlProxyTransferMode " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlCRLFile       p :: String
p -> "CurlCRLFile " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlIssuerCert    p :: String
p -> "CurlIssuerCert " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlAddressScope  p :: Long
p -> "CurlAddressScope " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlCertInfo      p :: Long
p -> "CurlCertInfo " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Long -> String
forall a. Show a => a -> String
show Long
p
    CurlUserName      p :: String
p -> "CurlUserName " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlUserPassword  p :: String
p -> "CurlUserPassword " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlProxyUser     p :: String
p -> "CurlProxyUser " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p
    CurlProxyPassword p :: String
p -> "CurlProxyPassword " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
p