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

-- * Exported types
    DOMDOMSelection(..)                     ,
    DOMDOMSelectionK                        ,
    toDOMDOMSelection                       ,
    noDOMDOMSelection                       ,


 -- * Methods
-- ** dOMDOMSelectionAddRange
    dOMDOMSelectionAddRange                 ,


-- ** dOMDOMSelectionCollapse
    dOMDOMSelectionCollapse                 ,


-- ** dOMDOMSelectionCollapseToEnd
    dOMDOMSelectionCollapseToEnd            ,


-- ** dOMDOMSelectionCollapseToStart
    dOMDOMSelectionCollapseToStart          ,


-- ** dOMDOMSelectionContainsNode
    dOMDOMSelectionContainsNode             ,


-- ** dOMDOMSelectionDeleteFromDocument
    dOMDOMSelectionDeleteFromDocument       ,


-- ** dOMDOMSelectionEmpty
    dOMDOMSelectionEmpty                    ,


-- ** dOMDOMSelectionExtend
    dOMDOMSelectionExtend                   ,


-- ** dOMDOMSelectionGetAnchorNode
    dOMDOMSelectionGetAnchorNode            ,


-- ** dOMDOMSelectionGetAnchorOffset
    dOMDOMSelectionGetAnchorOffset          ,


-- ** dOMDOMSelectionGetBaseNode
    dOMDOMSelectionGetBaseNode              ,


-- ** dOMDOMSelectionGetBaseOffset
    dOMDOMSelectionGetBaseOffset            ,


-- ** dOMDOMSelectionGetExtentNode
    dOMDOMSelectionGetExtentNode            ,


-- ** dOMDOMSelectionGetExtentOffset
    dOMDOMSelectionGetExtentOffset          ,


-- ** dOMDOMSelectionGetFocusNode
    dOMDOMSelectionGetFocusNode             ,


-- ** dOMDOMSelectionGetFocusOffset
    dOMDOMSelectionGetFocusOffset           ,


-- ** dOMDOMSelectionGetIsCollapsed
    dOMDOMSelectionGetIsCollapsed           ,


-- ** dOMDOMSelectionGetRangeAt
    dOMDOMSelectionGetRangeAt               ,


-- ** dOMDOMSelectionGetRangeCount
    dOMDOMSelectionGetRangeCount            ,


-- ** dOMDOMSelectionModify
    dOMDOMSelectionModify                   ,


-- ** dOMDOMSelectionRemoveAllRanges
    dOMDOMSelectionRemoveAllRanges          ,


-- ** dOMDOMSelectionSelectAllChildren
    dOMDOMSelectionSelectAllChildren        ,


-- ** dOMDOMSelectionSetBaseAndExtent
    dOMDOMSelectionSetBaseAndExtent         ,


-- ** dOMDOMSelectionSetPosition
    dOMDOMSelectionSetPosition              ,




 -- * Properties
-- ** AnchorNode
    DOMDOMSelectionAnchorNodePropertyInfo   ,
    getDOMDOMSelectionAnchorNode            ,


-- ** AnchorOffset
    DOMDOMSelectionAnchorOffsetPropertyInfo ,
    getDOMDOMSelectionAnchorOffset          ,


-- ** BaseNode
    DOMDOMSelectionBaseNodePropertyInfo     ,
    getDOMDOMSelectionBaseNode              ,


-- ** BaseOffset
    DOMDOMSelectionBaseOffsetPropertyInfo   ,
    getDOMDOMSelectionBaseOffset            ,


-- ** ExtentNode
    DOMDOMSelectionExtentNodePropertyInfo   ,
    getDOMDOMSelectionExtentNode            ,


-- ** ExtentOffset
    DOMDOMSelectionExtentOffsetPropertyInfo ,
    getDOMDOMSelectionExtentOffset          ,


-- ** FocusNode
    DOMDOMSelectionFocusNodePropertyInfo    ,
    getDOMDOMSelectionFocusNode             ,


-- ** FocusOffset
    DOMDOMSelectionFocusOffsetPropertyInfo  ,
    getDOMDOMSelectionFocusOffset           ,


-- ** IsCollapsed
    DOMDOMSelectionIsCollapsedPropertyInfo  ,
    getDOMDOMSelectionIsCollapsed           ,


-- ** RangeCount
    DOMDOMSelectionRangeCountPropertyInfo   ,
    getDOMDOMSelectionRangeCount            ,


-- ** Type
    DOMDOMSelectionTypePropertyInfo         ,
    getDOMDOMSelectionType                  ,




    ) 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 DOMDOMSelection = DOMDOMSelection (ForeignPtr DOMDOMSelection)
foreign import ccall "webkit_dom_dom_selection_get_type"
    c_webkit_dom_dom_selection_get_type :: IO GType

type instance ParentTypes DOMDOMSelection = DOMDOMSelectionParentTypes
type DOMDOMSelectionParentTypes = '[DOMObject, GObject.Object]

instance GObject DOMDOMSelection where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_dom_selection_get_type
    

class GObject o => DOMDOMSelectionK o
instance (GObject o, IsDescendantOf DOMDOMSelection o) => DOMDOMSelectionK o

toDOMDOMSelection :: DOMDOMSelectionK o => o -> IO DOMDOMSelection
toDOMDOMSelection = unsafeCastTo DOMDOMSelection

noDOMDOMSelection :: Maybe DOMDOMSelection
noDOMDOMSelection = Nothing

-- VVV Prop "anchor-node"
   -- Type: TInterface "WebKit" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMDOMSelectionAnchorNode :: (MonadIO m, DOMDOMSelectionK o) => o -> m DOMNode
getDOMDOMSelectionAnchorNode obj = liftIO $ getObjectPropertyObject obj "anchor-node" DOMNode

data DOMDOMSelectionAnchorNodePropertyInfo
instance AttrInfo DOMDOMSelectionAnchorNodePropertyInfo where
    type AttrAllowedOps DOMDOMSelectionAnchorNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionAnchorNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionAnchorNodePropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionAnchorNodePropertyInfo = DOMNode
    type AttrLabel DOMDOMSelectionAnchorNodePropertyInfo = "DOMDOMSelection::anchor-node"
    attrGet _ = getDOMDOMSelectionAnchorNode
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "anchor-offset"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable]

getDOMDOMSelectionAnchorOffset :: (MonadIO m, DOMDOMSelectionK o) => o -> m Int64
getDOMDOMSelectionAnchorOffset obj = liftIO $ getObjectPropertyInt64 obj "anchor-offset"

data DOMDOMSelectionAnchorOffsetPropertyInfo
instance AttrInfo DOMDOMSelectionAnchorOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionAnchorOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionAnchorOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionAnchorOffsetPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionAnchorOffsetPropertyInfo = Int64
    type AttrLabel DOMDOMSelectionAnchorOffsetPropertyInfo = "DOMDOMSelection::anchor-offset"
    attrGet _ = getDOMDOMSelectionAnchorOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "base-node"
   -- Type: TInterface "WebKit" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMDOMSelectionBaseNode :: (MonadIO m, DOMDOMSelectionK o) => o -> m DOMNode
getDOMDOMSelectionBaseNode obj = liftIO $ getObjectPropertyObject obj "base-node" DOMNode

data DOMDOMSelectionBaseNodePropertyInfo
instance AttrInfo DOMDOMSelectionBaseNodePropertyInfo where
    type AttrAllowedOps DOMDOMSelectionBaseNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionBaseNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionBaseNodePropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionBaseNodePropertyInfo = DOMNode
    type AttrLabel DOMDOMSelectionBaseNodePropertyInfo = "DOMDOMSelection::base-node"
    attrGet _ = getDOMDOMSelectionBaseNode
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "base-offset"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable]

getDOMDOMSelectionBaseOffset :: (MonadIO m, DOMDOMSelectionK o) => o -> m Int64
getDOMDOMSelectionBaseOffset obj = liftIO $ getObjectPropertyInt64 obj "base-offset"

data DOMDOMSelectionBaseOffsetPropertyInfo
instance AttrInfo DOMDOMSelectionBaseOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionBaseOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionBaseOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionBaseOffsetPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionBaseOffsetPropertyInfo = Int64
    type AttrLabel DOMDOMSelectionBaseOffsetPropertyInfo = "DOMDOMSelection::base-offset"
    attrGet _ = getDOMDOMSelectionBaseOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "extent-node"
   -- Type: TInterface "WebKit" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMDOMSelectionExtentNode :: (MonadIO m, DOMDOMSelectionK o) => o -> m DOMNode
getDOMDOMSelectionExtentNode obj = liftIO $ getObjectPropertyObject obj "extent-node" DOMNode

data DOMDOMSelectionExtentNodePropertyInfo
instance AttrInfo DOMDOMSelectionExtentNodePropertyInfo where
    type AttrAllowedOps DOMDOMSelectionExtentNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionExtentNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionExtentNodePropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionExtentNodePropertyInfo = DOMNode
    type AttrLabel DOMDOMSelectionExtentNodePropertyInfo = "DOMDOMSelection::extent-node"
    attrGet _ = getDOMDOMSelectionExtentNode
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "extent-offset"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable]

getDOMDOMSelectionExtentOffset :: (MonadIO m, DOMDOMSelectionK o) => o -> m Int64
getDOMDOMSelectionExtentOffset obj = liftIO $ getObjectPropertyInt64 obj "extent-offset"

data DOMDOMSelectionExtentOffsetPropertyInfo
instance AttrInfo DOMDOMSelectionExtentOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionExtentOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionExtentOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionExtentOffsetPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionExtentOffsetPropertyInfo = Int64
    type AttrLabel DOMDOMSelectionExtentOffsetPropertyInfo = "DOMDOMSelection::extent-offset"
    attrGet _ = getDOMDOMSelectionExtentOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "focus-node"
   -- Type: TInterface "WebKit" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMDOMSelectionFocusNode :: (MonadIO m, DOMDOMSelectionK o) => o -> m DOMNode
getDOMDOMSelectionFocusNode obj = liftIO $ getObjectPropertyObject obj "focus-node" DOMNode

data DOMDOMSelectionFocusNodePropertyInfo
instance AttrInfo DOMDOMSelectionFocusNodePropertyInfo where
    type AttrAllowedOps DOMDOMSelectionFocusNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionFocusNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionFocusNodePropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionFocusNodePropertyInfo = DOMNode
    type AttrLabel DOMDOMSelectionFocusNodePropertyInfo = "DOMDOMSelection::focus-node"
    attrGet _ = getDOMDOMSelectionFocusNode
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "focus-offset"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable]

getDOMDOMSelectionFocusOffset :: (MonadIO m, DOMDOMSelectionK o) => o -> m Int64
getDOMDOMSelectionFocusOffset obj = liftIO $ getObjectPropertyInt64 obj "focus-offset"

data DOMDOMSelectionFocusOffsetPropertyInfo
instance AttrInfo DOMDOMSelectionFocusOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionFocusOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionFocusOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionFocusOffsetPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionFocusOffsetPropertyInfo = Int64
    type AttrLabel DOMDOMSelectionFocusOffsetPropertyInfo = "DOMDOMSelection::focus-offset"
    attrGet _ = getDOMDOMSelectionFocusOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "is-collapsed"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getDOMDOMSelectionIsCollapsed :: (MonadIO m, DOMDOMSelectionK o) => o -> m Bool
getDOMDOMSelectionIsCollapsed obj = liftIO $ getObjectPropertyBool obj "is-collapsed"

data DOMDOMSelectionIsCollapsedPropertyInfo
instance AttrInfo DOMDOMSelectionIsCollapsedPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionIsCollapsedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionIsCollapsedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionIsCollapsedPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionIsCollapsedPropertyInfo = Bool
    type AttrLabel DOMDOMSelectionIsCollapsedPropertyInfo = "DOMDOMSelection::is-collapsed"
    attrGet _ = getDOMDOMSelectionIsCollapsed
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "range-count"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable]

getDOMDOMSelectionRangeCount :: (MonadIO m, DOMDOMSelectionK o) => o -> m Int64
getDOMDOMSelectionRangeCount obj = liftIO $ getObjectPropertyInt64 obj "range-count"

data DOMDOMSelectionRangeCountPropertyInfo
instance AttrInfo DOMDOMSelectionRangeCountPropertyInfo where
    type AttrAllowedOps DOMDOMSelectionRangeCountPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionRangeCountPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionRangeCountPropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionRangeCountPropertyInfo = Int64
    type AttrLabel DOMDOMSelectionRangeCountPropertyInfo = "DOMDOMSelection::range-count"
    attrGet _ = getDOMDOMSelectionRangeCount
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMDOMSelectionType :: (MonadIO m, DOMDOMSelectionK o) => o -> m T.Text
getDOMDOMSelectionType obj = liftIO $ getObjectPropertyString obj "type"

data DOMDOMSelectionTypePropertyInfo
instance AttrInfo DOMDOMSelectionTypePropertyInfo where
    type AttrAllowedOps DOMDOMSelectionTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMSelectionTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMSelectionTypePropertyInfo = DOMDOMSelectionK
    type AttrGetType DOMDOMSelectionTypePropertyInfo = T.Text
    type AttrLabel DOMDOMSelectionTypePropertyInfo = "DOMDOMSelection::type"
    attrGet _ = getDOMDOMSelectionType
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList DOMDOMSelection = DOMDOMSelectionAttributeList
type DOMDOMSelectionAttributeList = ('[ '("anchor-node", DOMDOMSelectionAnchorNodePropertyInfo), '("anchor-offset", DOMDOMSelectionAnchorOffsetPropertyInfo), '("base-node", DOMDOMSelectionBaseNodePropertyInfo), '("base-offset", DOMDOMSelectionBaseOffsetPropertyInfo), '("core-object", DOMObjectCoreObjectPropertyInfo), '("extent-node", DOMDOMSelectionExtentNodePropertyInfo), '("extent-offset", DOMDOMSelectionExtentOffsetPropertyInfo), '("focus-node", DOMDOMSelectionFocusNodePropertyInfo), '("focus-offset", DOMDOMSelectionFocusOffsetPropertyInfo), '("is-collapsed", DOMDOMSelectionIsCollapsedPropertyInfo), '("range-count", DOMDOMSelectionRangeCountPropertyInfo), '("type", DOMDOMSelectionTypePropertyInfo)] :: [(Symbol, *)])

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

-- method DOMDOMSelection::add_range
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "range", argType = TInterface "WebKit" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "range", argType = TInterface "WebKit" "DOMRange", 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_dom_selection_add_range" webkit_dom_dom_selection_add_range :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMRange ->                         -- range : TInterface "WebKit" "DOMRange"
    IO ()


dOMDOMSelectionAddRange ::
    (MonadIO m, DOMDOMSelectionK a, DOMRangeK b) =>
    a ->                                    -- _obj
    b ->                                    -- range
    m ()
dOMDOMSelectionAddRange _obj range = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let range' = unsafeManagedPtrCastPtr range
    webkit_dom_dom_selection_add_range _obj' range'
    touchManagedPtr _obj
    touchManagedPtr range
    return ()

-- method DOMDOMSelection::collapse
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "index", argType = TBasicType TInt64, 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_dom_selection_collapse" webkit_dom_dom_selection_collapse :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- node : TInterface "WebKit" "DOMNode"
    Int64 ->                                -- index : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionCollapse ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- node
    Int64 ->                                -- index
    m ()
dOMDOMSelectionCollapse _obj node index = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let node' = unsafeManagedPtrCastPtr node
    onException (do
        propagateGError $ webkit_dom_dom_selection_collapse _obj' node' index
        touchManagedPtr _obj
        touchManagedPtr node
        return ()
     ) (do
        return ()
     )

-- method DOMDOMSelection::collapse_to_end
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", 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_dom_selection_collapse_to_end" webkit_dom_dom_selection_collapse_to_end :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionCollapseToEnd ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m ()
dOMDOMSelectionCollapseToEnd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ webkit_dom_dom_selection_collapse_to_end _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

-- method DOMDOMSelection::collapse_to_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", 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_dom_selection_collapse_to_start" webkit_dom_dom_selection_collapse_to_start :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionCollapseToStart ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m ()
dOMDOMSelectionCollapseToStart _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ webkit_dom_dom_selection_collapse_to_start _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_dom_selection_contains_node" webkit_dom_dom_selection_contains_node :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- node : TInterface "WebKit" "DOMNode"
    CInt ->                                 -- allowPartial : TBasicType TBoolean
    IO CInt


dOMDOMSelectionContainsNode ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- node
    Bool ->                                 -- allowPartial
    m Bool
dOMDOMSelectionContainsNode _obj node allowPartial = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let node' = unsafeManagedPtrCastPtr node
    let allowPartial' = (fromIntegral . fromEnum) allowPartial
    result <- webkit_dom_dom_selection_contains_node _obj' node' allowPartial'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr node
    return result'

-- method DOMDOMSelection::delete_from_document
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", 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_dom_selection_delete_from_document" webkit_dom_dom_selection_delete_from_document :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO ()


dOMDOMSelectionDeleteFromDocument ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m ()
dOMDOMSelectionDeleteFromDocument _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    webkit_dom_dom_selection_delete_from_document _obj'
    touchManagedPtr _obj
    return ()

-- method DOMDOMSelection::empty
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", 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_dom_selection_empty" webkit_dom_dom_selection_empty :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO ()


dOMDOMSelectionEmpty ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m ()
dOMDOMSelectionEmpty _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    webkit_dom_dom_selection_empty _obj'
    touchManagedPtr _obj
    return ()

-- method DOMDOMSelection::extend
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TInt64, 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_dom_selection_extend" webkit_dom_dom_selection_extend :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- node : TInterface "WebKit" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionExtend ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- node
    Int64 ->                                -- offset
    m ()
dOMDOMSelectionExtend _obj node offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let node' = unsafeManagedPtrCastPtr node
    onException (do
        propagateGError $ webkit_dom_dom_selection_extend _obj' node' offset
        touchManagedPtr _obj
        touchManagedPtr node
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_dom_selection_get_anchor_node" webkit_dom_dom_selection_get_anchor_node :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO (Ptr DOMNode)


dOMDOMSelectionGetAnchorNode ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMDOMSelectionGetAnchorNode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_anchor_node _obj'
    checkUnexpectedReturnNULL "webkit_dom_dom_selection_get_anchor_node" result
    result' <- (newObject DOMNode) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_dom_selection_get_anchor_offset" webkit_dom_dom_selection_get_anchor_offset :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO Int64


dOMDOMSelectionGetAnchorOffset ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Int64
dOMDOMSelectionGetAnchorOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_anchor_offset _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "webkit_dom_dom_selection_get_base_node" webkit_dom_dom_selection_get_base_node :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO (Ptr DOMNode)


dOMDOMSelectionGetBaseNode ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMDOMSelectionGetBaseNode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_base_node _obj'
    checkUnexpectedReturnNULL "webkit_dom_dom_selection_get_base_node" result
    result' <- (newObject DOMNode) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_dom_selection_get_base_offset" webkit_dom_dom_selection_get_base_offset :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO Int64


dOMDOMSelectionGetBaseOffset ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Int64
dOMDOMSelectionGetBaseOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_base_offset _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "webkit_dom_dom_selection_get_extent_node" webkit_dom_dom_selection_get_extent_node :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO (Ptr DOMNode)


dOMDOMSelectionGetExtentNode ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMDOMSelectionGetExtentNode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_extent_node _obj'
    checkUnexpectedReturnNULL "webkit_dom_dom_selection_get_extent_node" result
    result' <- (newObject DOMNode) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_dom_selection_get_extent_offset" webkit_dom_dom_selection_get_extent_offset :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO Int64


dOMDOMSelectionGetExtentOffset ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Int64
dOMDOMSelectionGetExtentOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_extent_offset _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "webkit_dom_dom_selection_get_focus_node" webkit_dom_dom_selection_get_focus_node :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO (Ptr DOMNode)


dOMDOMSelectionGetFocusNode ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMDOMSelectionGetFocusNode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_focus_node _obj'
    checkUnexpectedReturnNULL "webkit_dom_dom_selection_get_focus_node" result
    result' <- (newObject DOMNode) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_dom_selection_get_focus_offset" webkit_dom_dom_selection_get_focus_offset :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO Int64


dOMDOMSelectionGetFocusOffset ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Int64
dOMDOMSelectionGetFocusOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_focus_offset _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "webkit_dom_dom_selection_get_is_collapsed" webkit_dom_dom_selection_get_is_collapsed :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO CInt


dOMDOMSelectionGetIsCollapsed ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Bool
dOMDOMSelectionGetIsCollapsed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_is_collapsed _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_dom_selection_get_range_at" webkit_dom_dom_selection_get_range_at :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Int64 ->                                -- index : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMRange)


dOMDOMSelectionGetRangeAt ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    Int64 ->                                -- index
    m DOMRange
dOMDOMSelectionGetRangeAt _obj index = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_dom_selection_get_range_at _obj' index
        checkUnexpectedReturnNULL "webkit_dom_dom_selection_get_range_at" result
        result' <- (wrapObject DOMRange) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_dom_selection_get_range_count" webkit_dom_dom_selection_get_range_count :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO Int64


dOMDOMSelectionGetRangeCount ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m Int64
dOMDOMSelectionGetRangeCount _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_dom_selection_get_range_count _obj'
    touchManagedPtr _obj
    return result

-- method DOMDOMSelection::modify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alter", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "granularity", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "alter", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "granularity", 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_dom_selection_modify" webkit_dom_dom_selection_modify :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    CString ->                              -- alter : TBasicType TUTF8
    CString ->                              -- direction : TBasicType TUTF8
    CString ->                              -- granularity : TBasicType TUTF8
    IO ()


dOMDOMSelectionModify ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- alter
    T.Text ->                               -- direction
    T.Text ->                               -- granularity
    m ()
dOMDOMSelectionModify _obj alter direction granularity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    alter' <- textToCString alter
    direction' <- textToCString direction
    granularity' <- textToCString granularity
    webkit_dom_dom_selection_modify _obj' alter' direction' granularity'
    touchManagedPtr _obj
    freeMem alter'
    freeMem direction'
    freeMem granularity'
    return ()

-- method DOMDOMSelection::remove_all_ranges
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", 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_dom_selection_remove_all_ranges" webkit_dom_dom_selection_remove_all_ranges :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    IO ()


dOMDOMSelectionRemoveAllRanges ::
    (MonadIO m, DOMDOMSelectionK a) =>
    a ->                                    -- _obj
    m ()
dOMDOMSelectionRemoveAllRanges _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    webkit_dom_dom_selection_remove_all_ranges _obj'
    touchManagedPtr _obj
    return ()

-- method DOMDOMSelection::select_all_children
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", 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_dom_selection_select_all_children" webkit_dom_dom_selection_select_all_children :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- node : TInterface "WebKit" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionSelectAllChildren ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- node
    m ()
dOMDOMSelectionSelectAllChildren _obj node = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let node' = unsafeManagedPtrCastPtr node
    onException (do
        propagateGError $ webkit_dom_dom_selection_select_all_children _obj' node'
        touchManagedPtr _obj
        touchManagedPtr node
        return ()
     ) (do
        return ()
     )

-- method DOMDOMSelection::set_base_and_extent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseNode", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseOffset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extentNode", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extentOffset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseNode", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseOffset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extentNode", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "extentOffset", argType = TBasicType TInt64, 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_dom_selection_set_base_and_extent" webkit_dom_dom_selection_set_base_and_extent :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- baseNode : TInterface "WebKit" "DOMNode"
    Int64 ->                                -- baseOffset : TBasicType TInt64
    Ptr DOMNode ->                          -- extentNode : TInterface "WebKit" "DOMNode"
    Int64 ->                                -- extentOffset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionSetBaseAndExtent ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b, DOMNodeK c) =>
    a ->                                    -- _obj
    b ->                                    -- baseNode
    Int64 ->                                -- baseOffset
    c ->                                    -- extentNode
    Int64 ->                                -- extentOffset
    m ()
dOMDOMSelectionSetBaseAndExtent _obj baseNode baseOffset extentNode extentOffset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let baseNode' = unsafeManagedPtrCastPtr baseNode
    let extentNode' = unsafeManagedPtrCastPtr extentNode
    onException (do
        propagateGError $ webkit_dom_dom_selection_set_base_and_extent _obj' baseNode' baseOffset extentNode' extentOffset
        touchManagedPtr _obj
        touchManagedPtr baseNode
        touchManagedPtr extentNode
        return ()
     ) (do
        return ()
     )

-- method DOMDOMSelection::set_position
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit" "DOMDOMSelection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "node", argType = TInterface "WebKit" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "offset", argType = TBasicType TInt64, 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_dom_selection_set_position" webkit_dom_dom_selection_set_position :: 
    Ptr DOMDOMSelection ->                  -- _obj : TInterface "WebKit" "DOMDOMSelection"
    Ptr DOMNode ->                          -- node : TInterface "WebKit" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMDOMSelectionSetPosition ::
    (MonadIO m, DOMDOMSelectionK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- node
    Int64 ->                                -- offset
    m ()
dOMDOMSelectionSetPosition _obj node offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let node' = unsafeManagedPtrCastPtr node
    onException (do
        propagateGError $ webkit_dom_dom_selection_set_position _obj' node' offset
        touchManagedPtr _obj
        touchManagedPtr node
        return ()
     ) (do
        return ()
     )