    --------------------------------------------------------------------
    -- |
    -- 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 -> URLString
    show CurlOption
    x = CurlOption -> URLString
    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
    $csucc :: HttpVersion -> HttpVersion
    succ :: HttpVersion -> HttpVersion
    $cpred :: HttpVersion -> HttpVersion
    pred :: HttpVersion -> HttpVersion
    $ctoEnum :: Int -> HttpVersion
    toEnum :: Int -> HttpVersion
    $cfromEnum :: HttpVersion -> Int
    fromEnum :: HttpVersion -> Int
    $cenumFrom :: HttpVersion -> [HttpVersion]
    enumFrom :: HttpVersion -> [HttpVersion]
    $cenumFromThen :: HttpVersion -> HttpVersion -> [HttpVersion]
    enumFromThen :: HttpVersion -> HttpVersion -> [HttpVersion]
    $cenumFromTo :: HttpVersion -> HttpVersion -> [HttpVersion]
    enumFromTo :: HttpVersion -> HttpVersion -> [HttpVersion]
    $cenumFromThenTo :: HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion]
    enumFromThenTo :: HttpVersion -> HttpVersion -> HttpVersion -> [HttpVersion]
    Enum,Int -> HttpVersion -> ShowS
    [HttpVersion] -> ShowS
    HttpVersion -> URLString
    (Int -> HttpVersion -> ShowS)
    -> (HttpVersion -> URLString)
    -> ([HttpVersion] -> ShowS)
    -> Show HttpVersion
    forall a.
    (Int -> a -> ShowS) -> (a -> URLString) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> HttpVersion -> ShowS
    showsPrec :: Int -> HttpVersion -> ShowS
    $cshow :: HttpVersion -> URLString
    show :: HttpVersion -> URLString
    $cshowList :: [HttpVersion] -> ShowS
    showList :: [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
    $csucc :: TimeCond -> TimeCond
    succ :: TimeCond -> TimeCond
    $cpred :: TimeCond -> TimeCond
    pred :: TimeCond -> TimeCond
    $ctoEnum :: Int -> TimeCond
    toEnum :: Int -> TimeCond
    $cfromEnum :: TimeCond -> Int
    fromEnum :: TimeCond -> Int
    $cenumFrom :: TimeCond -> [TimeCond]
    enumFrom :: TimeCond -> [TimeCond]
    $cenumFromThen :: TimeCond -> TimeCond -> [TimeCond]
    enumFromThen :: TimeCond -> TimeCond -> [TimeCond]
    $cenumFromTo :: TimeCond -> TimeCond -> [TimeCond]
    enumFromTo :: TimeCond -> TimeCond -> [TimeCond]
    $cenumFromThenTo :: TimeCond -> TimeCond -> TimeCond -> [TimeCond]
    enumFromThenTo :: TimeCond -> TimeCond -> TimeCond -> [TimeCond]
    Enum, Int -> TimeCond -> ShowS
    [TimeCond] -> ShowS
    TimeCond -> URLString
    (Int -> TimeCond -> ShowS)
    -> (TimeCond -> URLString)
    -> ([TimeCond] -> ShowS)
    -> Show TimeCond
    forall a.
    (Int -> a -> ShowS) -> (a -> URLString) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> TimeCond -> ShowS
    showsPrec :: Int -> TimeCond -> ShowS
    $cshow :: TimeCond -> URLString
    show :: TimeCond -> URLString
    $cshowList :: [TimeCond] -> ShowS
    showList :: [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
    $csucc :: NetRcOption -> NetRcOption
    succ :: NetRcOption -> NetRcOption
    $cpred :: NetRcOption -> NetRcOption
    pred :: NetRcOption -> NetRcOption
    $ctoEnum :: Int -> NetRcOption
    toEnum :: Int -> NetRcOption
    $cfromEnum :: NetRcOption -> Int
    fromEnum :: NetRcOption -> Int
    $cenumFrom :: NetRcOption -> [NetRcOption]
    enumFrom :: NetRcOption -> [NetRcOption]
    $cenumFromThen :: NetRcOption -> NetRcOption -> [NetRcOption]
    enumFromThen :: NetRcOption -> NetRcOption -> [NetRcOption]
    $cenumFromTo :: NetRcOption -> NetRcOption -> [NetRcOption]
    enumFromTo :: NetRcOption -> NetRcOption -> [NetRcOption]
    $cenumFromThenTo :: NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption]
    enumFromThenTo :: NetRcOption -> NetRcOption -> NetRcOption -> [NetRcOption]
    Enum, Int -> NetRcOption -> ShowS
    [NetRcOption] -> ShowS
    NetRcOption -> URLString
    (Int -> NetRcOption -> ShowS)
    -> (NetRcOption -> URLString)
    -> ([NetRcOption] -> ShowS)
    -> Show NetRcOption
    forall a.
    (Int -> a -> ShowS) -> (a -> URLString) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> NetRcOption -> ShowS
    showsPrec :: Int -> NetRcOption -> ShowS
    $cshow :: NetRcOption -> URLString
    show :: NetRcOption -> URLString
    $cshowList :: [NetRcOption] -> ShowS
    showList :: [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
    $csucc :: HttpAuth -> HttpAuth
    succ :: HttpAuth -> HttpAuth
    $cpred :: HttpAuth -> HttpAuth
    pred :: HttpAuth -> HttpAuth
    $ctoEnum :: Int -> HttpAuth
    toEnum :: Int -> HttpAuth
    $cfromEnum :: HttpAuth -> Int
    fromEnum :: HttpAuth -> Int
    $cenumFrom :: HttpAuth -> [HttpAuth]
    enumFrom :: HttpAuth -> [HttpAuth]
    $cenumFromThen :: HttpAuth -> HttpAuth -> [HttpAuth]
    enumFromThen :: HttpAuth -> HttpAuth -> [HttpAuth]
    $cenumFromTo :: HttpAuth -> HttpAuth -> [HttpAuth]
    enumFromTo :: HttpAuth -> HttpAuth -> [HttpAuth]
    $cenumFromThenTo :: HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth]
    enumFromThenTo :: HttpAuth -> HttpAuth -> HttpAuth -> [HttpAuth]
    Enum, Int -> HttpAuth -> ShowS
    [HttpAuth] -> ShowS
    HttpAuth -> URLString
    (Int -> HttpAuth -> ShowS)
    -> (HttpAuth -> URLString)
    -> ([HttpAuth] -> ShowS)
    -> Show HttpAuth
    forall a.
    (Int -> a -> ShowS) -> (a -> URLString) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> HttpAuth -> ShowS
    showsPrec :: Int -> HttpAuth -> ShowS
    $cshow :: HttpAuth -> URLString
    show :: HttpAuth -> URLString
    $cshowList :: [HttpAuth] -> ShowS
    showList :: [HttpAuth] -> ShowS
    Show )

    toHttpAuthMask :: [HttpAuth] -> Long
    toHttpAuthMask :: [HttpAuth] -> Long
    toHttpAuthMask [] = Long
    0
    toHttpAuthMask (HttpAuth
    x:[HttpAuth]
    xs) =
      let vs :: Long
    vs = [HttpAuth] -> Long
    toHttpAuthMask [HttpAuth]
    xs in
      case HttpAuth
    x of
        HttpAuth
    HttpAuthNone  -> Long
    vs
        HttpAuth
    HttpAuthBasic -> Long
    0x1 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        HttpAuth
    HttpAuthDigest -> Long
    0x2 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        HttpAuth
    HttpAuthGSSNegotiate -> Long
    0x4 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        HttpAuth
    HttpAuthNTLM -> Long
    0x8 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        HttpAuth
    HttpAuthAny -> (Long -> Long
    forall a. Bits a => a -> a
    complement Long
    0) Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        HttpAuth
    HttpAuthAnySafe -> (Long -> Long
    forall a. Bits a => a -> a
    complement Long
    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 -> URLString
    (Int -> SSHAuthType -> ShowS)
    -> (SSHAuthType -> URLString)
    -> ([SSHAuthType] -> ShowS)
    -> Show SSHAuthType
    forall a.
    (Int -> a -> ShowS) -> (a -> URLString) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> SSHAuthType -> ShowS
    showsPrec :: Int -> SSHAuthType -> ShowS
    $cshow :: SSHAuthType -> URLString
    show :: SSHAuthType -> URLString
    $cshowList :: [SSHAuthType] -> ShowS
    showList :: [SSHAuthType] -> ShowS
    Show )

    toSSHAuthMask :: [SSHAuthType] -> Long
    toSSHAuthMask :: [SSHAuthType] -> Long
    toSSHAuthMask [] = Long
    0
    toSSHAuthMask (SSHAuthType
    x:[SSHAuthType]
    xs) =
      let vs :: Long
    vs = [SSHAuthType] -> Long
    toSSHAuthMask [SSHAuthType]
    xs in
      case SSHAuthType
    x of
        SSHAuthType
    SSHAuthAny -> (Long -> Long
    forall a. Bits a => a -> a
    complement Long
    0) Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        SSHAuthType
    SSHAuthNone -> Long
    vs
        SSHAuthType
    SSHAuthPublickey -> Long
    1 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        SSHAuthType
    SSHAuthPassword -> Long
    2 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        SSHAuthType
    SSHAuthHost -> Long
    4 Long -> Long -> Long
    forall a. Bits a => a -> a -> a
    .|. Long
    vs
        SSHAuthType
    SSHAuthKeyboard -> Long
    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
    $c== :: DebugInfo -> DebugInfo -> Bool
    == :: DebugInfo -> DebugInfo -> Bool
    $c/= :: DebugInfo -> DebugInfo -> Bool
    /= :: 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
    $csucc :: DebugInfo -> DebugInfo
    succ :: DebugInfo -> DebugInfo
    $cpred :: DebugInfo -> DebugInfo
    pred :: DebugInfo -> DebugInfo
    $ctoEnum :: Int -> DebugInfo
    toEnum :: Int -> DebugInfo
    $cfromEnum :: DebugInfo -> Int
    fromEnum :: DebugInfo -> Int
    $cenumFrom :: DebugInfo -> [DebugInfo]
    enumFrom :: DebugInfo -> [DebugInfo]
    $cenumFromThen :: DebugInfo -> DebugInfo -> [DebugInfo]
    enumFromThen :: DebugInfo -> DebugInfo -> [DebugInfo]
    $cenumFromTo :: DebugInfo -> DebugInfo -> [DebugInfo]
    enumFromTo :: DebugInfo -> DebugInfo -> [DebugInfo]
    $cenumFromThenTo :: DebugInfo -> DebugInfo -> DebugInfo -> [DebugInfo]
    enumFromThenTo :: DebugInfo -> DebugInfo -> 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 = CInt
    0x10000000

    baseLong :: Int
    baseLong :: Int
    baseLong = Int
    0

    baseObject :: Int
    baseObject :: Int
    baseObject = Int
    10000

    baseFunction :: Int
    baseFunction :: Int
    baseFunction = Int
    20000

    baseOffT :: Int
    baseOffT :: Int
    baseOffT = Int
    30000

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

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

    verboseUnmarshaller :: Unmarshaller a -> Unmarshaller a
    verboseUnmarshaller :: forall a. Unmarshaller a -> Unmarshaller a
    verboseUnmarshaller Unmarshaller a
    u =
      let two :: URLString -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
    two URLString
    m Unmarshaller a -> t -> t -> IO b
    f t
    x t
    y = URLString -> IO ()
    putStrLn URLString
    m IO () -> IO b -> IO b
    forall a b. IO a -> 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 :: URLString -> (Unmarshaller a -> t -> t -> IO b) -> t -> t -> IO b
    twoS URLString
    m Unmarshaller a -> t -> t -> IO b
    f t
    x t
    y = URLString -> IO ()
    putStrLn (URLString
    m URLString -> ShowS
    forall a. [a] -> [a] -> [a]
    ++ URLString
    ": " URLString -> ShowS
    forall a. [a] -> [a] -> [a]
    ++ (t, t) -> URLString
    forall a. Show a => a -> URLString
    show (t
    x,t
    y)) IO () -> IO b -> IO b
    forall a b. IO a -> 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        = twoS "u_long" u_long
        , u_llong       = twoS "u_llong" u_llong
        , u_string      = twoS "u_string" u_string
        , u_strings     = twoS "u_strings" u_strings
        , u_ptr         = twoS "u_ptr" u_ptr
        , u_writeFun    = two "u_writeFun" u_writeFun
        , u_readFun     = two "u_readFun" u_readFun
        , u_progressFun = two "u_progressFun" u_progressFun
        , u_debugFun    = two "u_debugFun" u_debugFun
        , u_posts       = two "u_posts" u_posts
        , u_sslctxt     = two "u_sslctxt" u_sslctxt
        , u_ioctl_fun        = two "u_ioctl_fun" u_ioctl_fun
        , u_convFromNetwork  = twoS "u_convFromNetwork" u_convFromNetwork
        , u_convToNetwork    = twoS "u_convToNetwork" u_convToNetwork
        , u_convFromUtf8     = twoS "u_convFromUtf8" u_convFromUtf8
        , u_sockoptFun       = twoS "u_sockoptFun" u_sockoptFun
        }

    u_bool :: Unmarshaller a -> Int -> Bool -> IO a
    u_bool :: forall a. Unmarshaller a -> Int -> Bool -> IO a
    u_bool Unmarshaller a
    um Int
    x 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 Long
    1 else Long
    0)

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