{- |
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.DOMDOMSettableTokenList
    ( 

-- * Exported types
    DOMDOMSettableTokenList(..)             ,
    IsDOMDOMSettableTokenList               ,
    toDOMDOMSettableTokenList               ,
    noDOMDOMSettableTokenList               ,


 -- * Methods
-- ** getValue #method:getValue#
    DOMDOMSettableTokenListGetValueMethodInfo,
    dOMDOMSettableTokenListGetValue         ,


-- ** setValue #method:setValue#
    DOMDOMSettableTokenListSetValueMethodInfo,
    dOMDOMSettableTokenListSetValue         ,




 -- * Properties
-- ** value #attr:value#
    DOMDOMSettableTokenListValuePropertyInfo,
    constructDOMDOMSettableTokenListValue   ,
    dOMDOMSettableTokenListValue            ,
    getDOMDOMSettableTokenListValue         ,
    setDOMDOMSettableTokenListValue         ,




    ) 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.DOMDOMTokenList as WebKit.DOMDOMTokenList
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.DOMObject

newtype DOMDOMSettableTokenList = DOMDOMSettableTokenList (ManagedPtr DOMDOMSettableTokenList)
foreign import ccall "webkit_dom_dom_settable_token_list_get_type"
    c_webkit_dom_dom_settable_token_list_get_type :: IO GType

instance GObject DOMDOMSettableTokenList where
    gobjectType _ = c_webkit_dom_dom_settable_token_list_get_type
    

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

toDOMDOMSettableTokenList :: IsDOMDOMSettableTokenList o => o -> IO DOMDOMSettableTokenList
toDOMDOMSettableTokenList = unsafeCastTo DOMDOMSettableTokenList

noDOMDOMSettableTokenList :: Maybe DOMDOMSettableTokenList
noDOMDOMSettableTokenList = Nothing

type family ResolveDOMDOMSettableTokenListMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMDOMSettableTokenListMethod "add" o = WebKit.DOMDOMTokenList.DOMDOMTokenListAddMethodInfo
    ResolveDOMDOMSettableTokenListMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMDOMSettableTokenListMethod "contains" o = WebKit.DOMDOMTokenList.DOMDOMTokenListContainsMethodInfo
    ResolveDOMDOMSettableTokenListMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMDOMSettableTokenListMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMDOMSettableTokenListMethod "item" o = WebKit.DOMDOMTokenList.DOMDOMTokenListItemMethodInfo
    ResolveDOMDOMSettableTokenListMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMDOMSettableTokenListMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMDOMSettableTokenListMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMDOMSettableTokenListMethod "remove" o = WebKit.DOMDOMTokenList.DOMDOMTokenListRemoveMethodInfo
    ResolveDOMDOMSettableTokenListMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMDOMSettableTokenListMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "toggle" o = WebKit.DOMDOMTokenList.DOMDOMTokenListToggleMethodInfo
    ResolveDOMDOMSettableTokenListMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMDOMSettableTokenListMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMDOMSettableTokenListMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "getLength" o = WebKit.DOMDOMTokenList.DOMDOMTokenListGetLengthMethodInfo
    ResolveDOMDOMSettableTokenListMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "getValue" o = DOMDOMSettableTokenListGetValueMethodInfo
    ResolveDOMDOMSettableTokenListMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMDOMSettableTokenListMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMDOMSettableTokenListMethod "setValue" o = DOMDOMSettableTokenListSetValueMethodInfo
    ResolveDOMDOMSettableTokenListMethod l o = O.MethodResolutionFailed l o

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

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

-- VVV Prop "value"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Just False)

getDOMDOMSettableTokenListValue :: (MonadIO m, IsDOMDOMSettableTokenList o) => o -> m (Maybe T.Text)
getDOMDOMSettableTokenListValue obj = liftIO $ getObjectPropertyString obj "value"

setDOMDOMSettableTokenListValue :: (MonadIO m, IsDOMDOMSettableTokenList o) => o -> T.Text -> m ()
setDOMDOMSettableTokenListValue obj val = liftIO $ setObjectPropertyString obj "value" (Just val)

constructDOMDOMSettableTokenListValue :: (IsDOMDOMSettableTokenList o) => T.Text -> IO (GValueConstruct o)
constructDOMDOMSettableTokenListValue val = constructObjectPropertyString "value" (Just val)

data DOMDOMSettableTokenListValuePropertyInfo
instance AttrInfo DOMDOMSettableTokenListValuePropertyInfo where
    type AttrAllowedOps DOMDOMSettableTokenListValuePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSettableTokenListValuePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMDOMSettableTokenListValuePropertyInfo = IsDOMDOMSettableTokenList
    type AttrGetType DOMDOMSettableTokenListValuePropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMSettableTokenListValuePropertyInfo = "value"
    type AttrOrigin DOMDOMSettableTokenListValuePropertyInfo = DOMDOMSettableTokenList
    attrGet _ = getDOMDOMSettableTokenListValue
    attrSet _ = setDOMDOMSettableTokenListValue
    attrConstruct _ = constructDOMDOMSettableTokenListValue
    attrClear _ = undefined

instance O.HasAttributeList DOMDOMSettableTokenList
type instance O.AttributeList DOMDOMSettableTokenList = DOMDOMSettableTokenListAttributeList
type DOMDOMSettableTokenListAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("length", WebKit.DOMDOMTokenList.DOMDOMTokenListLengthPropertyInfo), '("value", DOMDOMSettableTokenListValuePropertyInfo)] :: [(Symbol, *)])

dOMDOMSettableTokenListValue :: AttrLabelProxy "value"
dOMDOMSettableTokenListValue = AttrLabelProxy

type instance O.SignalList DOMDOMSettableTokenList = DOMDOMSettableTokenListSignalList
type DOMDOMSettableTokenListSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method DOMDOMSettableTokenList::get_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMSettableTokenList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMSettableTokenList", 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_settable_token_list_get_value" webkit_dom_dom_settable_token_list_get_value :: 
    Ptr DOMDOMSettableTokenList ->          -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMSettableTokenList"})
    IO CString

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

data DOMDOMSettableTokenListGetValueMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDOMDOMSettableTokenList a) => O.MethodInfo DOMDOMSettableTokenListGetValueMethodInfo a signature where
    overloadedMethod _ = dOMDOMSettableTokenListGetValue

-- method DOMDOMSettableTokenList::set_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMSettableTokenList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMSettableTokenList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", 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 : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_settable_token_list_set_value" webkit_dom_dom_settable_token_list_set_value :: 
    Ptr DOMDOMSettableTokenList ->          -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMSettableTokenList"})
    CString ->                              -- value : TBasicType TUTF8
    IO ()

{- |
/No description available in the introspection data./
-}
dOMDOMSettableTokenListSetValue ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMSettableTokenList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMSettableTokenList.DOMDOMSettableTokenList' -}
    -> T.Text
    {- ^ /@value@/: A @/gchar/@ -}
    -> m ()
dOMDOMSettableTokenListSetValue self value = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    value' <- textToCString value
    webkit_dom_dom_settable_token_list_set_value self' value'
    touchManagedPtr self
    freeMem value'
    return ()

data DOMDOMSettableTokenListSetValueMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsDOMDOMSettableTokenList a) => O.MethodInfo DOMDOMSettableTokenListSetValueMethodInfo a signature where
    overloadedMethod _ = dOMDOMSettableTokenListSetValue