#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Soup.Structs.MessageHeadersIter
(
MessageHeadersIter(..) ,
newZeroMessageHeadersIter ,
noMessageHeadersIter ,
messageHeadersIterInit ,
#if ENABLE_OVERLOADING
MessageHeadersIterNextMethodInfo ,
#endif
messageHeadersIterNext ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import {-# SOURCE #-} qualified GI.Soup.Structs.MessageHeaders as Soup.MessageHeaders
newtype MessageHeadersIter = MessageHeadersIter (ManagedPtr MessageHeadersIter)
instance WrappedPtr MessageHeadersIter where
wrappedPtrCalloc = callocBytes 24
wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 24 >=> wrapPtr MessageHeadersIter)
wrappedPtrFree = Just ptr_to_g_free
newZeroMessageHeadersIter :: MonadIO m => m MessageHeadersIter
newZeroMessageHeadersIter = liftIO $ wrappedPtrCalloc >>= wrapPtr MessageHeadersIter
instance tag ~ 'AttrSet => Constructible MessageHeadersIter tag where
new _ attrs = do
o <- newZeroMessageHeadersIter
GI.Attributes.set o attrs
return o
noMessageHeadersIter :: Maybe MessageHeadersIter
noMessageHeadersIter = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList MessageHeadersIter
type instance O.AttributeList MessageHeadersIter = MessageHeadersIterAttributeList
type MessageHeadersIterAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "soup_message_headers_iter_next" soup_message_headers_iter_next ::
Ptr MessageHeadersIter ->
Ptr CString ->
Ptr CString ->
IO CInt
messageHeadersIterNext ::
(B.CallStack.HasCallStack, MonadIO m) =>
MessageHeadersIter
-> m ((Bool, T.Text, T.Text))
messageHeadersIterNext iter = liftIO $ do
iter' <- unsafeManagedPtrGetPtr iter
name <- allocMem :: IO (Ptr CString)
value <- allocMem :: IO (Ptr CString)
result <- soup_message_headers_iter_next iter' name value
let result' = (/= 0) result
name' <- peek name
name'' <- cstringToText name'
value' <- peek value
value'' <- cstringToText value'
touchManagedPtr iter
freeMem name
freeMem value
return (result', name'', value'')
#if ENABLE_OVERLOADING
data MessageHeadersIterNextMethodInfo
instance (signature ~ (m ((Bool, T.Text, T.Text))), MonadIO m) => O.MethodInfo MessageHeadersIterNextMethodInfo MessageHeadersIter signature where
overloadedMethod _ = messageHeadersIterNext
#endif
foreign import ccall "soup_message_headers_iter_init" soup_message_headers_iter_init ::
Ptr MessageHeadersIter ->
Ptr Soup.MessageHeaders.MessageHeaders ->
IO ()
messageHeadersIterInit ::
(B.CallStack.HasCallStack, MonadIO m) =>
Soup.MessageHeaders.MessageHeaders
-> m (MessageHeadersIter)
messageHeadersIterInit hdrs = liftIO $ do
iter <- callocBytes 24 :: IO (Ptr MessageHeadersIter)
hdrs' <- unsafeManagedPtrGetPtr hdrs
soup_message_headers_iter_init iter hdrs'
iter' <- (wrapPtr MessageHeadersIter) iter
touchManagedPtr hdrs
return iter'
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type family ResolveMessageHeadersIterMethod (t :: Symbol) (o :: *) :: * where
ResolveMessageHeadersIterMethod "next" o = MessageHeadersIterNextMethodInfo
ResolveMessageHeadersIterMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveMessageHeadersIterMethod t MessageHeadersIter, O.MethodInfo info MessageHeadersIter p) => OL.IsLabel t (MessageHeadersIter -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif