packages feed

gi-soup-0.2.52.13: GI/Soup/Structs/XMLRPCParams.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

Opaque structure containing XML-RPC methodCall parameter values.
Can be parsed using soup_xmlrpc_params_parse() and freed with
soup_xmlrpc_params_free().
-}

module GI.Soup.Structs.XMLRPCParams
    ( 

-- * Exported types
    XMLRPCParams(..)                        ,
    noXMLRPCParams                          ,


 -- * Methods
-- ** xMLRPCParamsFree
    XMLRPCParamsFreeMethodInfo              ,
    xMLRPCParamsFree                        ,


-- ** xMLRPCParamsParse
    XMLRPCParamsParseMethodInfo             ,
    xMLRPCParamsParse                       ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Soup.Types
import GI.Soup.Callbacks

newtype XMLRPCParams = XMLRPCParams (ForeignPtr XMLRPCParams)
noXMLRPCParams :: Maybe XMLRPCParams
noXMLRPCParams = Nothing

-- method XMLRPCParams::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "XMLRPCParams", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "soup_xmlrpc_params_free" soup_xmlrpc_params_free :: 
    Ptr XMLRPCParams ->                     -- _obj : TInterface "Soup" "XMLRPCParams"
    IO ()


xMLRPCParamsFree ::
    (MonadIO m) =>
    XMLRPCParams                            -- _obj
    -> m ()                                 -- result
xMLRPCParamsFree _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    soup_xmlrpc_params_free _obj'
    touchManagedPtr _obj
    return ()

data XMLRPCParamsFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => MethodInfo XMLRPCParamsFreeMethodInfo XMLRPCParams signature where
    overloadedMethod _ = xMLRPCParamsFree

-- method XMLRPCParams::parse
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "XMLRPCParams", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "signature", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TVariant
-- throws : True
-- Skip return : False

foreign import ccall "soup_xmlrpc_params_parse" soup_xmlrpc_params_parse :: 
    Ptr XMLRPCParams ->                     -- _obj : TInterface "Soup" "XMLRPCParams"
    CString ->                              -- signature : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr GVariant)


xMLRPCParamsParse ::
    (MonadIO m) =>
    XMLRPCParams                            -- _obj
    -> Maybe (T.Text)                       -- signature
    -> m GVariant                           -- result
xMLRPCParamsParse _obj signature = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    maybeSignature <- case signature of
        Nothing -> return nullPtr
        Just jSignature -> do
            jSignature' <- textToCString jSignature
            return jSignature'
    onException (do
        result <- propagateGError $ soup_xmlrpc_params_parse _obj' maybeSignature
        checkUnexpectedReturnNULL "soup_xmlrpc_params_parse" result
        result' <- wrapGVariantPtr result
        touchManagedPtr _obj
        freeMem maybeSignature
        return result'
     ) (do
        freeMem maybeSignature
     )

data XMLRPCParamsParseMethodInfo
instance (signature ~ (Maybe (T.Text) -> m GVariant), MonadIO m) => MethodInfo XMLRPCParamsParseMethodInfo XMLRPCParams signature where
    overloadedMethod _ = xMLRPCParamsParse

type family ResolveXMLRPCParamsMethod (t :: Symbol) (o :: *) :: * where
    ResolveXMLRPCParamsMethod "free" o = XMLRPCParamsFreeMethodInfo
    ResolveXMLRPCParamsMethod "parse" o = XMLRPCParamsParseMethodInfo
    ResolveXMLRPCParamsMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveXMLRPCParamsMethod t XMLRPCParams, MethodInfo info XMLRPCParams p) => IsLabelProxy t (XMLRPCParams -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveXMLRPCParamsMethod t XMLRPCParams, MethodInfo info XMLRPCParams p) => IsLabel t (XMLRPCParams -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif