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

-- * Exported types
    DOMTextTrackList(..)                    ,
    IsDOMTextTrackList                      ,
    toDOMTextTrackList                      ,
    noDOMTextTrackList                      ,


 -- * Methods
-- ** dispatchEvent #method:dispatchEvent#
    DOMTextTrackListDispatchEventMethodInfo ,
    dOMTextTrackListDispatchEvent           ,


-- ** getLength #method:getLength#
    DOMTextTrackListGetLengthMethodInfo     ,
    dOMTextTrackListGetLength               ,


-- ** getTrackById #method:getTrackById#
    DOMTextTrackListGetTrackByIdMethodInfo  ,
    dOMTextTrackListGetTrackById            ,


-- ** item #method:item#
    DOMTextTrackListItemMethodInfo          ,
    dOMTextTrackListItem                    ,




 -- * Properties
-- ** length #attr:length#
    DOMTextTrackListLengthPropertyInfo      ,
    dOMTextTrackListLength                  ,
    getDOMTextTrackListLength               ,




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

newtype DOMTextTrackList = DOMTextTrackList (ManagedPtr DOMTextTrackList)
foreign import ccall "webkit_dom_text_track_list_get_type"
    c_webkit_dom_text_track_list_get_type :: IO GType

instance GObject DOMTextTrackList where
    gobjectType _ = c_webkit_dom_text_track_list_get_type
    

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

toDOMTextTrackList :: IsDOMTextTrackList o => o -> IO DOMTextTrackList
toDOMTextTrackList = unsafeCastTo DOMTextTrackList

noDOMTextTrackList :: Maybe DOMTextTrackList
noDOMTextTrackList = Nothing

type family ResolveDOMTextTrackListMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMTextTrackListMethod "addEventListener" o = WebKit.DOMEventTarget.DOMEventTargetAddEventListenerMethodInfo
    ResolveDOMTextTrackListMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMTextTrackListMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMTextTrackListMethod "dispatchEvent" o = DOMTextTrackListDispatchEventMethodInfo
    ResolveDOMTextTrackListMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMTextTrackListMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMTextTrackListMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMTextTrackListMethod "item" o = DOMTextTrackListItemMethodInfo
    ResolveDOMTextTrackListMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMTextTrackListMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMTextTrackListMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMTextTrackListMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMTextTrackListMethod "removeEventListener" o = WebKit.DOMEventTarget.DOMEventTargetRemoveEventListenerMethodInfo
    ResolveDOMTextTrackListMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMTextTrackListMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMTextTrackListMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMTextTrackListMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMTextTrackListMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMTextTrackListMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMTextTrackListMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMTextTrackListMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMTextTrackListMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMTextTrackListMethod "getLength" o = DOMTextTrackListGetLengthMethodInfo
    ResolveDOMTextTrackListMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMTextTrackListMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMTextTrackListMethod "getTrackById" o = DOMTextTrackListGetTrackByIdMethodInfo
    ResolveDOMTextTrackListMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMTextTrackListMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMTextTrackListMethod l o = O.MethodResolutionFailed l o

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

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

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

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

data DOMTextTrackListLengthPropertyInfo
instance AttrInfo DOMTextTrackListLengthPropertyInfo where
    type AttrAllowedOps DOMTextTrackListLengthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackListLengthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackListLengthPropertyInfo = IsDOMTextTrackList
    type AttrGetType DOMTextTrackListLengthPropertyInfo = CULong
    type AttrLabel DOMTextTrackListLengthPropertyInfo = "length"
    type AttrOrigin DOMTextTrackListLengthPropertyInfo = DOMTextTrackList
    attrGet _ = getDOMTextTrackListLength
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMTextTrackList
type instance O.AttributeList DOMTextTrackList = DOMTextTrackListAttributeList
type DOMTextTrackListAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("length", DOMTextTrackListLengthPropertyInfo)] :: [(Symbol, *)])

dOMTextTrackListLength :: AttrLabelProxy "length"
dOMTextTrackListLength = AttrLabelProxy

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

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

foreign import ccall "webkit_dom_text_track_list_dispatch_event" webkit_dom_text_track_list_dispatch_event :: 
    Ptr DOMTextTrackList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"})
    Ptr WebKit.DOMEvent.DOMEvent ->         -- evt : TInterface (Name {namespace = "WebKit", name = "DOMEvent"})
    Ptr (Ptr GError) ->                     -- error
    IO CInt

{-# DEPRECATED dOMTextTrackListDispatchEvent ["(Since version 2.4)","Use 'GI.WebKit.Interfaces.DOMEventTarget.dOMEventTargetDispatchEvent' instead."] #-}
{- |
/No description available in the introspection data./
-}
dOMTextTrackListDispatchEvent ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMTextTrackList a, WebKit.DOMEvent.IsDOMEvent b) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMTextTrackList.DOMTextTrackList' -}
    -> b
    {- ^ /@evt@/: A 'GI.WebKit.Objects.DOMEvent.DOMEvent' -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMTextTrackListDispatchEvent self evt = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    evt' <- unsafeManagedPtrCastPtr evt
    onException (do
        _ <- propagateGError $ webkit_dom_text_track_list_dispatch_event self' evt'
        touchManagedPtr self
        touchManagedPtr evt
        return ()
     ) (do
        return ()
     )

data DOMTextTrackListDispatchEventMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsDOMTextTrackList a, WebKit.DOMEvent.IsDOMEvent b) => O.MethodInfo DOMTextTrackListDispatchEventMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackListDispatchEvent

-- method DOMTextTrackList::get_length
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMTextTrackList", 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_text_track_list_get_length" webkit_dom_text_track_list_get_length :: 
    Ptr DOMTextTrackList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"})
    IO CULong

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

data DOMTextTrackListGetLengthMethodInfo
instance (signature ~ (m CULong), MonadIO m, IsDOMTextTrackList a) => O.MethodInfo DOMTextTrackListGetLengthMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackListGetLength

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

foreign import ccall "webkit_dom_text_track_list_get_track_by_id" webkit_dom_text_track_list_get_track_by_id :: 
    Ptr DOMTextTrackList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"})
    CString ->                              -- id : TBasicType TUTF8
    IO (Ptr WebKit.DOMTextTrack.DOMTextTrack)

{- |
/No description available in the introspection data./
-}
dOMTextTrackListGetTrackById ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMTextTrackList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMTextTrackList.DOMTextTrackList' -}
    -> T.Text
    {- ^ /@id@/: A @/gchar/@ -}
    -> m WebKit.DOMTextTrack.DOMTextTrack
    {- ^ __Returns:__ A 'GI.WebKit.Objects.DOMTextTrack.DOMTextTrack' -}
dOMTextTrackListGetTrackById self id = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    id' <- textToCString id
    result <- webkit_dom_text_track_list_get_track_by_id self' id'
    checkUnexpectedReturnNULL "dOMTextTrackListGetTrackById" result
    result' <- (wrapObject WebKit.DOMTextTrack.DOMTextTrack) result
    touchManagedPtr self
    freeMem id'
    return result'

data DOMTextTrackListGetTrackByIdMethodInfo
instance (signature ~ (T.Text -> m WebKit.DOMTextTrack.DOMTextTrack), MonadIO m, IsDOMTextTrackList a) => O.MethodInfo DOMTextTrackListGetTrackByIdMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackListGetTrackById

-- method DOMTextTrackList::item
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMTextTrackList", 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 (TInterface (Name {namespace = "WebKit", name = "DOMTextTrack"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_list_item" webkit_dom_text_track_list_item :: 
    Ptr DOMTextTrackList ->                 -- self : TInterface (Name {namespace = "WebKit", name = "DOMTextTrackList"})
    CULong ->                               -- index : TBasicType TULong
    IO (Ptr WebKit.DOMTextTrack.DOMTextTrack)

{- |
/No description available in the introspection data./
-}
dOMTextTrackListItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMTextTrackList a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMTextTrackList.DOMTextTrackList' -}
    -> CULong
    {- ^ /@index@/: A @/gulong/@ -}
    -> m WebKit.DOMTextTrack.DOMTextTrack
    {- ^ __Returns:__ A 'GI.WebKit.Objects.DOMTextTrack.DOMTextTrack' -}
dOMTextTrackListItem self index = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_text_track_list_item self' index
    checkUnexpectedReturnNULL "dOMTextTrackListItem" result
    result' <- (wrapObject WebKit.DOMTextTrack.DOMTextTrack) result
    touchManagedPtr self
    return result'

data DOMTextTrackListItemMethodInfo
instance (signature ~ (CULong -> m WebKit.DOMTextTrack.DOMTextTrack), MonadIO m, IsDOMTextTrackList a) => O.MethodInfo DOMTextTrackListItemMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackListItem