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

-- * Exported types
    DOMTextTrackCueList(..)                 ,
    IsDOMTextTrackCueList                   ,
    toDOMTextTrackCueList                   ,
    noDOMTextTrackCueList                   ,


 -- * Methods
-- ** getCueById #method:getCueById#
    DOMTextTrackCueListGetCueByIdMethodInfo ,
    dOMTextTrackCueListGetCueById           ,


-- ** getLength #method:getLength#
    DOMTextTrackCueListGetLengthMethodInfo  ,
    dOMTextTrackCueListGetLength            ,


-- ** item #method:item#
    DOMTextTrackCueListItemMethodInfo       ,
    dOMTextTrackCueListItem                 ,




 -- * Properties
-- ** length #attr:length#
    DOMTextTrackCueListLengthPropertyInfo   ,
    dOMTextTrackCueListLength               ,
    getDOMTextTrackCueListLength            ,




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

newtype DOMTextTrackCueList = DOMTextTrackCueList (ManagedPtr DOMTextTrackCueList)
foreign import ccall "webkit_dom_text_track_cue_list_get_type"
    c_webkit_dom_text_track_cue_list_get_type :: IO GType

instance GObject DOMTextTrackCueList where
    gobjectType _ = c_webkit_dom_text_track_cue_list_get_type
    

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

toDOMTextTrackCueList :: IsDOMTextTrackCueList o => o -> IO DOMTextTrackCueList
toDOMTextTrackCueList = unsafeCastTo DOMTextTrackCueList

noDOMTextTrackCueList :: Maybe DOMTextTrackCueList
noDOMTextTrackCueList = Nothing

type family ResolveDOMTextTrackCueListMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMTextTrackCueListMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMTextTrackCueListMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMTextTrackCueListMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMTextTrackCueListMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMTextTrackCueListMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMTextTrackCueListMethod "item" o = DOMTextTrackCueListItemMethodInfo
    ResolveDOMTextTrackCueListMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMTextTrackCueListMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMTextTrackCueListMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMTextTrackCueListMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMTextTrackCueListMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMTextTrackCueListMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMTextTrackCueListMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMTextTrackCueListMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMTextTrackCueListMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMTextTrackCueListMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMTextTrackCueListMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMTextTrackCueListMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMTextTrackCueListMethod "getCueById" o = DOMTextTrackCueListGetCueByIdMethodInfo
    ResolveDOMTextTrackCueListMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMTextTrackCueListMethod "getLength" o = DOMTextTrackCueListGetLengthMethodInfo
    ResolveDOMTextTrackCueListMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMTextTrackCueListMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMTextTrackCueListMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMTextTrackCueListMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMTextTrackCueListMethod l o = O.MethodResolutionFailed l o

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

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

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

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

data DOMTextTrackCueListLengthPropertyInfo
instance AttrInfo DOMTextTrackCueListLengthPropertyInfo where
    type AttrAllowedOps DOMTextTrackCueListLengthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackCueListLengthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackCueListLengthPropertyInfo = IsDOMTextTrackCueList
    type AttrGetType DOMTextTrackCueListLengthPropertyInfo = CULong
    type AttrLabel DOMTextTrackCueListLengthPropertyInfo = "length"
    type AttrOrigin DOMTextTrackCueListLengthPropertyInfo = DOMTextTrackCueList
    attrGet _ = getDOMTextTrackCueListLength
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMTextTrackCueList
type instance O.AttributeList DOMTextTrackCueList = DOMTextTrackCueListAttributeList
type DOMTextTrackCueListAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("length", DOMTextTrackCueListLengthPropertyInfo)] :: [(Symbol, *)])

dOMTextTrackCueListLength :: AttrLabelProxy "length"
dOMTextTrackCueListLength = AttrLabelProxy

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

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

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

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

data DOMTextTrackCueListGetCueByIdMethodInfo
instance (signature ~ (T.Text -> m WebKit.DOMTextTrackCue.DOMTextTrackCue), MonadIO m, IsDOMTextTrackCueList a) => O.MethodInfo DOMTextTrackCueListGetCueByIdMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackCueListGetCueById

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

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

data DOMTextTrackCueListGetLengthMethodInfo
instance (signature ~ (m CULong), MonadIO m, IsDOMTextTrackCueList a) => O.MethodInfo DOMTextTrackCueListGetLengthMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackCueListGetLength

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

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

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

data DOMTextTrackCueListItemMethodInfo
instance (signature ~ (CULong -> m WebKit.DOMTextTrackCue.DOMTextTrackCue), MonadIO m, IsDOMTextTrackCueList a) => O.MethodInfo DOMTextTrackCueListItemMethodInfo a signature where
    overloadedMethod _ = dOMTextTrackCueListItem