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

-- * Exported types
    DOMTextTrack(..)                        ,
    DOMTextTrackK                           ,
    toDOMTextTrack                          ,
    noDOMTextTrack                          ,


 -- * Methods
-- ** dOMTextTrackAddCue
    dOMTextTrackAddCue                      ,


-- ** dOMTextTrackDispatchEvent
    dOMTextTrackDispatchEvent               ,


-- ** dOMTextTrackGetActiveCues
    dOMTextTrackGetActiveCues               ,


-- ** dOMTextTrackGetCues
    dOMTextTrackGetCues                     ,


-- ** dOMTextTrackGetId
    dOMTextTrackGetId                       ,


-- ** dOMTextTrackGetKind
    dOMTextTrackGetKind                     ,


-- ** dOMTextTrackGetLabel
    dOMTextTrackGetLabel                    ,


-- ** dOMTextTrackGetLanguage
    dOMTextTrackGetLanguage                 ,


-- ** dOMTextTrackGetMode
    dOMTextTrackGetMode                     ,


-- ** dOMTextTrackRemoveCue
    dOMTextTrackRemoveCue                   ,


-- ** dOMTextTrackSetMode
    dOMTextTrackSetMode                     ,




 -- * Properties
-- ** ActiveCues
    DOMTextTrackActiveCuesPropertyInfo      ,
    getDOMTextTrackActiveCues               ,


-- ** Cues
    DOMTextTrackCuesPropertyInfo            ,
    getDOMTextTrackCues                     ,


-- ** Id
    DOMTextTrackIdPropertyInfo              ,
    getDOMTextTrackId                       ,


-- ** Kind
    DOMTextTrackKindPropertyInfo            ,
    getDOMTextTrackKind                     ,


-- ** Label
    DOMTextTrackLabelPropertyInfo           ,
    getDOMTextTrackLabel                    ,


-- ** Language
    DOMTextTrackLanguagePropertyInfo        ,
    getDOMTextTrackLanguage                 ,


-- ** Mode
    DOMTextTrackModePropertyInfo            ,
    constructDOMTextTrackMode               ,
    getDOMTextTrackMode                     ,
    setDOMTextTrackMode                     ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit.Types
import GI.WebKit.Callbacks
import qualified GI.GObject as GObject

newtype DOMTextTrack = DOMTextTrack (ForeignPtr DOMTextTrack)
foreign import ccall "webkit_dom_text_track_get_type"
    c_webkit_dom_text_track_get_type :: IO GType

type instance ParentTypes DOMTextTrack = DOMTextTrackParentTypes
type DOMTextTrackParentTypes = '[DOMObject, GObject.Object, DOMEventTarget]

instance GObject DOMTextTrack where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_text_track_get_type
    

class GObject o => DOMTextTrackK o
instance (GObject o, IsDescendantOf DOMTextTrack o) => DOMTextTrackK o

toDOMTextTrack :: DOMTextTrackK o => o -> IO DOMTextTrack
toDOMTextTrack = unsafeCastTo DOMTextTrack

noDOMTextTrack :: Maybe DOMTextTrack
noDOMTextTrack = Nothing

-- VVV Prop "active-cues"
   -- Type: TInterface "WebKit" "DOMTextTrackCueList"
   -- Flags: [PropertyReadable]

getDOMTextTrackActiveCues :: (MonadIO m, DOMTextTrackK o) => o -> m DOMTextTrackCueList
getDOMTextTrackActiveCues obj = liftIO $ getObjectPropertyObject obj "active-cues" DOMTextTrackCueList

data DOMTextTrackActiveCuesPropertyInfo
instance AttrInfo DOMTextTrackActiveCuesPropertyInfo where
    type AttrAllowedOps DOMTextTrackActiveCuesPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackActiveCuesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackActiveCuesPropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackActiveCuesPropertyInfo = DOMTextTrackCueList
    type AttrLabel DOMTextTrackActiveCuesPropertyInfo = "DOMTextTrack::active-cues"
    attrGet _ = getDOMTextTrackActiveCues
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "cues"
   -- Type: TInterface "WebKit" "DOMTextTrackCueList"
   -- Flags: [PropertyReadable]

getDOMTextTrackCues :: (MonadIO m, DOMTextTrackK o) => o -> m DOMTextTrackCueList
getDOMTextTrackCues obj = liftIO $ getObjectPropertyObject obj "cues" DOMTextTrackCueList

data DOMTextTrackCuesPropertyInfo
instance AttrInfo DOMTextTrackCuesPropertyInfo where
    type AttrAllowedOps DOMTextTrackCuesPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackCuesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackCuesPropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackCuesPropertyInfo = DOMTextTrackCueList
    type AttrLabel DOMTextTrackCuesPropertyInfo = "DOMTextTrack::cues"
    attrGet _ = getDOMTextTrackCues
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "id"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getDOMTextTrackId :: (MonadIO m, DOMTextTrackK o) => o -> m T.Text
getDOMTextTrackId obj = liftIO $ getObjectPropertyString obj "id"

data DOMTextTrackIdPropertyInfo
instance AttrInfo DOMTextTrackIdPropertyInfo where
    type AttrAllowedOps DOMTextTrackIdPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackIdPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackIdPropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackIdPropertyInfo = T.Text
    type AttrLabel DOMTextTrackIdPropertyInfo = "DOMTextTrack::id"
    attrGet _ = getDOMTextTrackId
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "kind"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getDOMTextTrackKind :: (MonadIO m, DOMTextTrackK o) => o -> m T.Text
getDOMTextTrackKind obj = liftIO $ getObjectPropertyString obj "kind"

data DOMTextTrackKindPropertyInfo
instance AttrInfo DOMTextTrackKindPropertyInfo where
    type AttrAllowedOps DOMTextTrackKindPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackKindPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackKindPropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackKindPropertyInfo = T.Text
    type AttrLabel DOMTextTrackKindPropertyInfo = "DOMTextTrack::kind"
    attrGet _ = getDOMTextTrackKind
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "label"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getDOMTextTrackLabel :: (MonadIO m, DOMTextTrackK o) => o -> m T.Text
getDOMTextTrackLabel obj = liftIO $ getObjectPropertyString obj "label"

data DOMTextTrackLabelPropertyInfo
instance AttrInfo DOMTextTrackLabelPropertyInfo where
    type AttrAllowedOps DOMTextTrackLabelPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackLabelPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackLabelPropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackLabelPropertyInfo = T.Text
    type AttrLabel DOMTextTrackLabelPropertyInfo = "DOMTextTrack::label"
    attrGet _ = getDOMTextTrackLabel
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "language"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getDOMTextTrackLanguage :: (MonadIO m, DOMTextTrackK o) => o -> m T.Text
getDOMTextTrackLanguage obj = liftIO $ getObjectPropertyString obj "language"

data DOMTextTrackLanguagePropertyInfo
instance AttrInfo DOMTextTrackLanguagePropertyInfo where
    type AttrAllowedOps DOMTextTrackLanguagePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackLanguagePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTextTrackLanguagePropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackLanguagePropertyInfo = T.Text
    type AttrLabel DOMTextTrackLanguagePropertyInfo = "DOMTextTrack::language"
    attrGet _ = getDOMTextTrackLanguage
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "mode"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getDOMTextTrackMode :: (MonadIO m, DOMTextTrackK o) => o -> m T.Text
getDOMTextTrackMode obj = liftIO $ getObjectPropertyString obj "mode"

setDOMTextTrackMode :: (MonadIO m, DOMTextTrackK o) => o -> T.Text -> m ()
setDOMTextTrackMode obj val = liftIO $ setObjectPropertyString obj "mode" val

constructDOMTextTrackMode :: T.Text -> IO ([Char], GValue)
constructDOMTextTrackMode val = constructObjectPropertyString "mode" val

data DOMTextTrackModePropertyInfo
instance AttrInfo DOMTextTrackModePropertyInfo where
    type AttrAllowedOps DOMTextTrackModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DOMTextTrackModePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMTextTrackModePropertyInfo = DOMTextTrackK
    type AttrGetType DOMTextTrackModePropertyInfo = T.Text
    type AttrLabel DOMTextTrackModePropertyInfo = "DOMTextTrack::mode"
    attrGet _ = getDOMTextTrackMode
    attrSet _ = setDOMTextTrackMode
    attrConstruct _ = constructDOMTextTrackMode

type instance AttributeList DOMTextTrack = DOMTextTrackAttributeList
type DOMTextTrackAttributeList = ('[ '("active-cues", DOMTextTrackActiveCuesPropertyInfo), '("core-object", DOMObjectCoreObjectPropertyInfo), '("cues", DOMTextTrackCuesPropertyInfo), '("id", DOMTextTrackIdPropertyInfo), '("kind", DOMTextTrackKindPropertyInfo), '("label", DOMTextTrackLabelPropertyInfo), '("language", DOMTextTrackLanguagePropertyInfo), '("mode", DOMTextTrackModePropertyInfo)] :: [(Symbol, *)])

type instance SignalList DOMTextTrack = DOMTextTrackSignalList
type DOMTextTrackSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method DOMTextTrack::add_cue
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cue", argType = TInterface "WebKit" "DOMTextTrackCue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cue", argType = TInterface "WebKit" "DOMTextTrackCue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_add_cue" webkit_dom_text_track_add_cue :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    Ptr DOMTextTrackCue ->                  -- cue : TInterface "WebKit" "DOMTextTrackCue"
    IO ()


dOMTextTrackAddCue ::
    (MonadIO m, DOMTextTrackK a, DOMTextTrackCueK b) =>
    a ->                                    -- _obj
    b ->                                    -- cue
    m ()
dOMTextTrackAddCue _obj cue = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let cue' = unsafeManagedPtrCastPtr cue
    webkit_dom_text_track_add_cue _obj' cue'
    touchManagedPtr _obj
    touchManagedPtr cue
    return ()

-- method DOMTextTrack::dispatch_event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "evt", argType = TInterface "WebKit" "DOMEvent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "evt", argType = TInterface "WebKit" "DOMEvent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_text_track_dispatch_event" webkit_dom_text_track_dispatch_event :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    Ptr DOMEvent ->                         -- evt : TInterface "WebKit" "DOMEvent"
    Ptr (Ptr GError) ->                     -- error
    IO CInt

{-# DEPRECATED dOMTextTrackDispatchEvent ["(Since version 2.4)","Use webkit_dom_event_target_dispatch_event() instead."]#-}
dOMTextTrackDispatchEvent ::
    (MonadIO m, DOMTextTrackK a, DOMEventK b) =>
    a ->                                    -- _obj
    b ->                                    -- evt
    m ()
dOMTextTrackDispatchEvent _obj evt = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let evt' = unsafeManagedPtrCastPtr evt
    onException (do
        _ <- propagateGError $ webkit_dom_text_track_dispatch_event _obj' evt'
        touchManagedPtr _obj
        touchManagedPtr evt
        return ()
     ) (do
        return ()
     )

-- method DOMTextTrack::get_active_cues
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit" "DOMTextTrackCueList"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_active_cues" webkit_dom_text_track_get_active_cues :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO (Ptr DOMTextTrackCueList)


dOMTextTrackGetActiveCues ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m DOMTextTrackCueList
dOMTextTrackGetActiveCues _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_active_cues _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_active_cues" result
    result' <- (wrapObject DOMTextTrackCueList) result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_cues
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit" "DOMTextTrackCueList"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_cues" webkit_dom_text_track_get_cues :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO (Ptr DOMTextTrackCueList)


dOMTextTrackGetCues ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m DOMTextTrackCueList
dOMTextTrackGetCues _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_cues _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_cues" result
    result' <- (wrapObject DOMTextTrackCueList) result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_id
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_id" webkit_dom_text_track_get_id :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO CString


dOMTextTrackGetId ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m T.Text
dOMTextTrackGetId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_id _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_id" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_kind
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_kind" webkit_dom_text_track_get_kind :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO CString


dOMTextTrackGetKind ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m T.Text
dOMTextTrackGetKind _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_kind _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_kind" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_label
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_label" webkit_dom_text_track_get_label :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO CString


dOMTextTrackGetLabel ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m T.Text
dOMTextTrackGetLabel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_label _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_label" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_language
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_language" webkit_dom_text_track_get_language :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO CString


dOMTextTrackGetLanguage ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m T.Text
dOMTextTrackGetLanguage _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_language _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_language" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::get_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_get_mode" webkit_dom_text_track_get_mode :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    IO CString


dOMTextTrackGetMode ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    m T.Text
dOMTextTrackGetMode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_text_track_get_mode _obj'
    checkUnexpectedReturnNULL "webkit_dom_text_track_get_mode" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method DOMTextTrack::remove_cue
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cue", argType = TInterface "WebKit" "DOMTextTrackCue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cue", argType = TInterface "WebKit" "DOMTextTrackCue", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_text_track_remove_cue" webkit_dom_text_track_remove_cue :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    Ptr DOMTextTrackCue ->                  -- cue : TInterface "WebKit" "DOMTextTrackCue"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMTextTrackRemoveCue ::
    (MonadIO m, DOMTextTrackK a, DOMTextTrackCueK b) =>
    a ->                                    -- _obj
    b ->                                    -- cue
    m ()
dOMTextTrackRemoveCue _obj cue = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let cue' = unsafeManagedPtrCastPtr cue
    onException (do
        propagateGError $ webkit_dom_text_track_remove_cue _obj' cue'
        touchManagedPtr _obj
        touchManagedPtr cue
        return ()
     ) (do
        return ()
     )

-- method DOMTextTrack::set_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMTextTrack", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_text_track_set_mode" webkit_dom_text_track_set_mode :: 
    Ptr DOMTextTrack ->                     -- _obj : TInterface "WebKit" "DOMTextTrack"
    CString ->                              -- value : TBasicType TUTF8
    IO ()


dOMTextTrackSetMode ::
    (MonadIO m, DOMTextTrackK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- value
    m ()
dOMTextTrackSetMode _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    value' <- textToCString value
    webkit_dom_text_track_set_mode _obj' value'
    touchManagedPtr _obj
    freeMem value'
    return ()