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

module GI.WebKit.Objects.DOMDOMStringList
    ( 

-- * Exported types
    DOMDOMStringList(..)                    ,
    IsDOMDOMStringList                      ,
    toDOMDOMStringList                      ,
    noDOMDOMStringList                      ,


 -- * Methods
-- ** contains #method:contains#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    DOMDOMStringListContainsMethodInfo      ,
#endif
    dOMDOMStringListContains                ,


-- ** getLength #method:getLength#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    DOMDOMStringListGetLengthMethodInfo     ,
#endif
    dOMDOMStringListGetLength               ,


-- ** item #method:item#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    DOMDOMStringListItemMethodInfo          ,
#endif
    dOMDOMStringListItem                    ,




 -- * Properties
-- ** length #attr:length#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    DOMDOMStringListLengthPropertyInfo      ,
#endif
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    dOMDOMStringListLength                  ,
#endif
    getDOMDOMStringListLength               ,




    ) 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.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
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 GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.DOMObject

newtype DOMDOMStringList = DOMDOMStringList (ManagedPtr DOMDOMStringList)
foreign import ccall "webkit_dom_dom_string_list_get_type"
    c_webkit_dom_dom_string_list_get_type :: IO GType

instance GObject DOMDOMStringList where
    gobjectType _ = c_webkit_dom_dom_string_list_get_type
    

class GObject o => IsDOMDOMStringList o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMDOMStringList a) =>
    IsDOMDOMStringList a
#endif
instance IsDOMDOMStringList DOMDOMStringList
instance WebKit.DOMObject.IsDOMObject DOMDOMStringList
instance GObject.Object.IsObject DOMDOMStringList

toDOMDOMStringList :: (MonadIO m, IsDOMDOMStringList o) => o -> m DOMDOMStringList
toDOMDOMStringList = liftIO . unsafeCastTo DOMDOMStringList

noDOMDOMStringList :: Maybe DOMDOMStringList
noDOMDOMStringList = Nothing

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
type family ResolveDOMDOMStringListMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMDOMStringListMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMDOMStringListMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMDOMStringListMethod "contains" o = DOMDOMStringListContainsMethodInfo
    ResolveDOMDOMStringListMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMDOMStringListMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMDOMStringListMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMDOMStringListMethod "item" o = DOMDOMStringListItemMethodInfo
    ResolveDOMDOMStringListMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMDOMStringListMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMDOMStringListMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMDOMStringListMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMDOMStringListMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMDOMStringListMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMDOMStringListMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMDOMStringListMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMDOMStringListMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMDOMStringListMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMDOMStringListMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMDOMStringListMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMDOMStringListMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMDOMStringListMethod "getLength" o = DOMDOMStringListGetLengthMethodInfo
    ResolveDOMDOMStringListMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMDOMStringListMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMDOMStringListMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMDOMStringListMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMDOMStringListMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveDOMDOMStringListMethod t DOMDOMStringList, O.MethodInfo info DOMDOMStringList p) => O.IsLabelProxy t (DOMDOMStringList -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveDOMDOMStringListMethod t DOMDOMStringList, O.MethodInfo info DOMDOMStringList p) => O.IsLabel t (DOMDOMStringList -> 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

#endif

-- VVV Prop "length"
   -- Type: TBasicType TULong
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getDOMDOMStringListLength :: (MonadIO m, IsDOMDOMStringList o) => o -> m CULong
getDOMDOMStringListLength obj = liftIO $ getObjectPropertyULong obj "length"

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data DOMDOMStringListLengthPropertyInfo
instance AttrInfo DOMDOMStringListLengthPropertyInfo where
    type AttrAllowedOps DOMDOMStringListLengthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMStringListLengthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMStringListLengthPropertyInfo = IsDOMDOMStringList
    type AttrGetType DOMDOMStringListLengthPropertyInfo = CULong
    type AttrLabel DOMDOMStringListLengthPropertyInfo = "length"
    type AttrOrigin DOMDOMStringListLengthPropertyInfo = DOMDOMStringList
    attrGet _ = getDOMDOMStringListLength
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined
#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
instance O.HasAttributeList DOMDOMStringList
type instance O.AttributeList DOMDOMStringList = DOMDOMStringListAttributeList
type DOMDOMStringListAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("length", DOMDOMStringListLengthPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
dOMDOMStringListLength :: AttrLabelProxy "length"
dOMDOMStringListLength = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
type instance O.SignalList DOMDOMStringList = DOMDOMStringListSignalList
type DOMDOMStringListSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method DOMDOMStringList::contains
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMStringList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #gchar", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_string_list_contains" webkit_dom_dom_string_list_contains :: 
    Ptr DOMDOMStringList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"})
    CString ->                              -- string : TBasicType TUTF8
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMDOMStringListContains ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMStringList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMStringList.DOMDOMStringList' -}
    -> T.Text
    {- ^ /@string@/: A @/gchar/@ -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMDOMStringListContains self string = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    string' <- textToCString string
    result <- webkit_dom_dom_string_list_contains self' string'
    let result' = (/= 0) result
    touchManagedPtr self
    freeMem string'
    return result'

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data DOMDOMStringListContainsMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsDOMDOMStringList a) => O.MethodInfo DOMDOMStringListContainsMethodInfo a signature where
    overloadedMethod _ = dOMDOMStringListContains

#endif

-- method DOMDOMStringList::get_length
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMStringList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TULong)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_string_list_get_length" webkit_dom_dom_string_list_get_length :: 
    Ptr DOMDOMStringList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"})
    IO CULong

{- |
/No description available in the introspection data./
-}
dOMDOMStringListGetLength ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMStringList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMStringList.DOMDOMStringList' -}
    -> m CULong
    {- ^ __Returns:__ A @/gulong/@ -}
dOMDOMStringListGetLength self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_dom_string_list_get_length self'
    touchManagedPtr self
    return result

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data DOMDOMStringListGetLengthMethodInfo
instance (signature ~ (m CULong), MonadIO m, IsDOMDOMStringList a) => O.MethodInfo DOMDOMStringListGetLengthMethodInfo a signature where
    overloadedMethod _ = dOMDOMStringListGetLength

#endif

-- method DOMDOMStringList::item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMStringList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index", argType = TBasicType TULong, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #gulong", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_string_list_item" webkit_dom_dom_string_list_item :: 
    Ptr DOMDOMStringList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMStringList"})
    CULong ->                               -- index : TBasicType TULong
    IO CString

{- |
/No description available in the introspection data./
-}
dOMDOMStringListItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMStringList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMStringList.DOMDOMStringList' -}
    -> CULong
    {- ^ /@index@/: A @/gulong/@ -}
    -> m T.Text
    {- ^ __Returns:__ A @/gchar/@ -}
dOMDOMStringListItem self index = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_dom_string_list_item self' index
    checkUnexpectedReturnNULL "dOMDOMStringListItem" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr self
    return result'

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data DOMDOMStringListItemMethodInfo
instance (signature ~ (CULong -> m T.Text), MonadIO m, IsDOMDOMStringList a) => O.MethodInfo DOMDOMStringListItemMethodInfo a signature where
    overloadedMethod _ = dOMDOMStringListItem

#endif