{- |
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.WebKit2WebExtension.Objects.DOMRange
    ( 

-- * Exported types
    DOMRange(..)                            ,
    DOMRangeK                               ,
    toDOMRange                              ,
    noDOMRange                              ,


 -- * Methods
-- ** dOMRangeCloneContents
    dOMRangeCloneContents                   ,


-- ** dOMRangeCloneRange
    dOMRangeCloneRange                      ,


-- ** dOMRangeCollapse
    dOMRangeCollapse                        ,


-- ** dOMRangeCompareBoundaryPoints
    dOMRangeCompareBoundaryPoints           ,


-- ** dOMRangeCompareNode
    dOMRangeCompareNode                     ,


-- ** dOMRangeComparePoint
    dOMRangeComparePoint                    ,


-- ** dOMRangeCreateContextualFragment
    dOMRangeCreateContextualFragment        ,


-- ** dOMRangeDeleteContents
    dOMRangeDeleteContents                  ,


-- ** dOMRangeDetach
    dOMRangeDetach                          ,


-- ** dOMRangeExtractContents
    dOMRangeExtractContents                 ,


-- ** dOMRangeGetCollapsed
    dOMRangeGetCollapsed                    ,


-- ** dOMRangeGetCommonAncestorContainer
    dOMRangeGetCommonAncestorContainer      ,


-- ** dOMRangeGetEndContainer
    dOMRangeGetEndContainer                 ,


-- ** dOMRangeGetEndOffset
    dOMRangeGetEndOffset                    ,


-- ** dOMRangeGetStartContainer
    dOMRangeGetStartContainer               ,


-- ** dOMRangeGetStartOffset
    dOMRangeGetStartOffset                  ,


-- ** dOMRangeGetText
    dOMRangeGetText                         ,


-- ** dOMRangeInsertNode
    dOMRangeInsertNode                      ,


-- ** dOMRangeIntersectsNode
    dOMRangeIntersectsNode                  ,


-- ** dOMRangeIsPointInRange
    dOMRangeIsPointInRange                  ,


-- ** dOMRangeSelectNode
    dOMRangeSelectNode                      ,


-- ** dOMRangeSelectNodeContents
    dOMRangeSelectNodeContents              ,


-- ** dOMRangeSetEnd
    dOMRangeSetEnd                          ,


-- ** dOMRangeSetEndAfter
    dOMRangeSetEndAfter                     ,


-- ** dOMRangeSetEndBefore
    dOMRangeSetEndBefore                    ,


-- ** dOMRangeSetStart
    dOMRangeSetStart                        ,


-- ** dOMRangeSetStartAfter
    dOMRangeSetStartAfter                   ,


-- ** dOMRangeSetStartBefore
    dOMRangeSetStartBefore                  ,


-- ** dOMRangeSurroundContents
    dOMRangeSurroundContents                ,


-- ** dOMRangeToString
    dOMRangeToString                        ,




 -- * Properties
-- ** Collapsed
    DOMRangeCollapsedPropertyInfo           ,
    getDOMRangeCollapsed                    ,


-- ** CommonAncestorContainer
    DOMRangeCommonAncestorContainerPropertyInfo,
    getDOMRangeCommonAncestorContainer      ,


-- ** EndContainer
    DOMRangeEndContainerPropertyInfo        ,
    getDOMRangeEndContainer                 ,


-- ** EndOffset
    DOMRangeEndOffsetPropertyInfo           ,
    getDOMRangeEndOffset                    ,


-- ** StartContainer
    DOMRangeStartContainerPropertyInfo      ,
    getDOMRangeStartContainer               ,


-- ** StartOffset
    DOMRangeStartOffsetPropertyInfo         ,
    getDOMRangeStartOffset                  ,


-- ** Text
    DOMRangeTextPropertyInfo                ,
    getDOMRangeText                         ,




    ) 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.WebKit2WebExtension.Types
import GI.WebKit2WebExtension.Callbacks
import qualified GI.GObject as GObject

newtype DOMRange = DOMRange (ForeignPtr DOMRange)
foreign import ccall "webkit_dom_range_get_type"
    c_webkit_dom_range_get_type :: IO GType

type instance ParentTypes DOMRange = DOMRangeParentTypes
type DOMRangeParentTypes = '[DOMObject, GObject.Object]

instance GObject DOMRange where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_range_get_type
    

class GObject o => DOMRangeK o
instance (GObject o, IsDescendantOf DOMRange o) => DOMRangeK o

toDOMRange :: DOMRangeK o => o -> IO DOMRange
toDOMRange = unsafeCastTo DOMRange

noDOMRange :: Maybe DOMRange
noDOMRange = Nothing

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

getDOMRangeCollapsed :: (MonadIO m, DOMRangeK o) => o -> m Bool
getDOMRangeCollapsed obj = liftIO $ getObjectPropertyBool obj "collapsed"

data DOMRangeCollapsedPropertyInfo
instance AttrInfo DOMRangeCollapsedPropertyInfo where
    type AttrAllowedOps DOMRangeCollapsedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeCollapsedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeCollapsedPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeCollapsedPropertyInfo = Bool
    type AttrLabel DOMRangeCollapsedPropertyInfo = "DOMRange::collapsed"
    attrGet _ = getDOMRangeCollapsed
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "common-ancestor-container"
   -- Type: TInterface "WebKit2WebExtension" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMRangeCommonAncestorContainer :: (MonadIO m, DOMRangeK o) => o -> m DOMNode
getDOMRangeCommonAncestorContainer obj = liftIO $ getObjectPropertyObject obj "common-ancestor-container" DOMNode

data DOMRangeCommonAncestorContainerPropertyInfo
instance AttrInfo DOMRangeCommonAncestorContainerPropertyInfo where
    type AttrAllowedOps DOMRangeCommonAncestorContainerPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeCommonAncestorContainerPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeCommonAncestorContainerPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeCommonAncestorContainerPropertyInfo = DOMNode
    type AttrLabel DOMRangeCommonAncestorContainerPropertyInfo = "DOMRange::common-ancestor-container"
    attrGet _ = getDOMRangeCommonAncestorContainer
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "end-container"
   -- Type: TInterface "WebKit2WebExtension" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMRangeEndContainer :: (MonadIO m, DOMRangeK o) => o -> m DOMNode
getDOMRangeEndContainer obj = liftIO $ getObjectPropertyObject obj "end-container" DOMNode

data DOMRangeEndContainerPropertyInfo
instance AttrInfo DOMRangeEndContainerPropertyInfo where
    type AttrAllowedOps DOMRangeEndContainerPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeEndContainerPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeEndContainerPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeEndContainerPropertyInfo = DOMNode
    type AttrLabel DOMRangeEndContainerPropertyInfo = "DOMRange::end-container"
    attrGet _ = getDOMRangeEndContainer
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMRangeEndOffset :: (MonadIO m, DOMRangeK o) => o -> m Int64
getDOMRangeEndOffset obj = liftIO $ getObjectPropertyInt64 obj "end-offset"

data DOMRangeEndOffsetPropertyInfo
instance AttrInfo DOMRangeEndOffsetPropertyInfo where
    type AttrAllowedOps DOMRangeEndOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeEndOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeEndOffsetPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeEndOffsetPropertyInfo = Int64
    type AttrLabel DOMRangeEndOffsetPropertyInfo = "DOMRange::end-offset"
    attrGet _ = getDOMRangeEndOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "start-container"
   -- Type: TInterface "WebKit2WebExtension" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMRangeStartContainer :: (MonadIO m, DOMRangeK o) => o -> m DOMNode
getDOMRangeStartContainer obj = liftIO $ getObjectPropertyObject obj "start-container" DOMNode

data DOMRangeStartContainerPropertyInfo
instance AttrInfo DOMRangeStartContainerPropertyInfo where
    type AttrAllowedOps DOMRangeStartContainerPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeStartContainerPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeStartContainerPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeStartContainerPropertyInfo = DOMNode
    type AttrLabel DOMRangeStartContainerPropertyInfo = "DOMRange::start-container"
    attrGet _ = getDOMRangeStartContainer
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMRangeStartOffset :: (MonadIO m, DOMRangeK o) => o -> m Int64
getDOMRangeStartOffset obj = liftIO $ getObjectPropertyInt64 obj "start-offset"

data DOMRangeStartOffsetPropertyInfo
instance AttrInfo DOMRangeStartOffsetPropertyInfo where
    type AttrAllowedOps DOMRangeStartOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeStartOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeStartOffsetPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeStartOffsetPropertyInfo = Int64
    type AttrLabel DOMRangeStartOffsetPropertyInfo = "DOMRange::start-offset"
    attrGet _ = getDOMRangeStartOffset
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMRangeText :: (MonadIO m, DOMRangeK o) => o -> m T.Text
getDOMRangeText obj = liftIO $ getObjectPropertyString obj "text"

data DOMRangeTextPropertyInfo
instance AttrInfo DOMRangeTextPropertyInfo where
    type AttrAllowedOps DOMRangeTextPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMRangeTextPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMRangeTextPropertyInfo = DOMRangeK
    type AttrGetType DOMRangeTextPropertyInfo = T.Text
    type AttrLabel DOMRangeTextPropertyInfo = "DOMRange::text"
    attrGet _ = getDOMRangeText
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList DOMRange = DOMRangeAttributeList
type DOMRangeAttributeList = ('[ '("collapsed", DOMRangeCollapsedPropertyInfo), '("common-ancestor-container", DOMRangeCommonAncestorContainerPropertyInfo), '("core-object", DOMObjectCoreObjectPropertyInfo), '("end-container", DOMRangeEndContainerPropertyInfo), '("end-offset", DOMRangeEndOffsetPropertyInfo), '("start-container", DOMRangeStartContainerPropertyInfo), '("start-offset", DOMRangeStartOffsetPropertyInfo), '("text", DOMRangeTextPropertyInfo)] :: [(Symbol, *)])

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

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

foreign import ccall "webkit_dom_range_clone_contents" webkit_dom_range_clone_contents :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMDocumentFragment)


dOMRangeCloneContents ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMDocumentFragment
dOMRangeCloneContents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_clone_contents _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_clone_contents" result
        result' <- (newObject DOMDocumentFragment) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_clone_range" webkit_dom_range_clone_range :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMRange)


dOMRangeCloneRange ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMRange
dOMRangeCloneRange _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_clone_range _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_clone_range" result
        result' <- (wrapObject DOMRange) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

-- method DOMRange::collapse
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "toStart", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "toStart", argType = TBasicType TBoolean, 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_range_collapse" webkit_dom_range_collapse :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    CInt ->                                 -- toStart : TBasicType TBoolean
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeCollapse ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- toStart
    m ()
dOMRangeCollapse _obj toStart = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let toStart' = (fromIntegral . fromEnum) toStart
    onException (do
        propagateGError $ webkit_dom_range_collapse _obj' toStart'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

-- method DOMRange::compare_boundary_points
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "how", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sourceRange", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "how", argType = TBasicType TUInt16, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sourceRange", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt16
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_range_compare_boundary_points" webkit_dom_range_compare_boundary_points :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Word16 ->                               -- how : TBasicType TUInt16
    Ptr DOMRange ->                         -- sourceRange : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO Int16


dOMRangeCompareBoundaryPoints ::
    (MonadIO m, DOMRangeK a, DOMRangeK b) =>
    a ->                                    -- _obj
    Word16 ->                               -- how
    b ->                                    -- sourceRange
    m Int16
dOMRangeCompareBoundaryPoints _obj how sourceRange = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let sourceRange' = unsafeManagedPtrCastPtr sourceRange
    onException (do
        result <- propagateGError $ webkit_dom_range_compare_boundary_points _obj' how sourceRange'
        touchManagedPtr _obj
        touchManagedPtr sourceRange
        return result
     ) (do
        return ()
     )

-- method DOMRange::compare_node
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt16
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_range_compare_node" webkit_dom_range_compare_node :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO Int16


dOMRangeCompareNode ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m Int16
dOMRangeCompareNode _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        result <- propagateGError $ webkit_dom_range_compare_node _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return result
     ) (do
        return ()
     )

-- method DOMRange::compare_point
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 TInt16
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_range_compare_point" webkit_dom_range_compare_point :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO Int16


dOMRangeComparePoint ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    Int64 ->                                -- offset
    m Int16
dOMRangeComparePoint _obj refNode offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        result <- propagateGError $ webkit_dom_range_compare_point _obj' refNode' offset
        touchManagedPtr _obj
        touchManagedPtr refNode
        return result
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_create_contextual_fragment" webkit_dom_range_create_contextual_fragment :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    CString ->                              -- html : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMDocumentFragment)


dOMRangeCreateContextualFragment ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- html
    m DOMDocumentFragment
dOMRangeCreateContextualFragment _obj html = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    html' <- textToCString html
    onException (do
        result <- propagateGError $ webkit_dom_range_create_contextual_fragment _obj' html'
        checkUnexpectedReturnNULL "webkit_dom_range_create_contextual_fragment" result
        result' <- (newObject DOMDocumentFragment) result
        touchManagedPtr _obj
        freeMem html'
        return result'
     ) (do
        freeMem html'
     )

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


dOMRangeDeleteContents ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m ()
dOMRangeDeleteContents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ webkit_dom_range_delete_contents _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

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


dOMRangeDetach ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m ()
dOMRangeDetach _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ webkit_dom_range_detach _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_extract_contents" webkit_dom_range_extract_contents :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMDocumentFragment)


dOMRangeExtractContents ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMDocumentFragment
dOMRangeExtractContents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_extract_contents _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_extract_contents" result
        result' <- (newObject DOMDocumentFragment) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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


dOMRangeGetCollapsed ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m ()
dOMRangeGetCollapsed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        _ <- propagateGError $ webkit_dom_range_get_collapsed _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_get_common_ancestor_container" webkit_dom_range_get_common_ancestor_container :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMNode)


dOMRangeGetCommonAncestorContainer ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMRangeGetCommonAncestorContainer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_get_common_ancestor_container _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_get_common_ancestor_container" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_get_end_container" webkit_dom_range_get_end_container :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMNode)


dOMRangeGetEndContainer ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMRangeGetEndContainer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_get_end_container _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_get_end_container" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_get_end_offset" webkit_dom_range_get_end_offset :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO Int64


dOMRangeGetEndOffset ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m Int64
dOMRangeGetEndOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_get_end_offset _obj'
        touchManagedPtr _obj
        return result
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_get_start_container" webkit_dom_range_get_start_container :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMNode)


dOMRangeGetStartContainer ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m DOMNode
dOMRangeGetStartContainer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_get_start_container _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_get_start_container" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_get_start_offset" webkit_dom_range_get_start_offset :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO Int64


dOMRangeGetStartOffset ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m Int64
dOMRangeGetStartOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_get_start_offset _obj'
        touchManagedPtr _obj
        return result
     ) (do
        return ()
     )

-- method DOMRange::get_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", 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_range_get_text" webkit_dom_range_get_text :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    IO CString


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

-- method DOMRange::insert_node
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "newNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "newNode", argType = TInterface "WebKit2WebExtension" "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_range_insert_node" webkit_dom_range_insert_node :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- newNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeInsertNode ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- newNode
    m ()
dOMRangeInsertNode _obj newNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let newNode' = unsafeManagedPtrCastPtr newNode
    onException (do
        propagateGError $ webkit_dom_range_insert_node _obj' newNode'
        touchManagedPtr _obj
        touchManagedPtr newNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::intersects_node
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", 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_range_intersects_node" webkit_dom_range_intersects_node :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO CInt


dOMRangeIntersectsNode ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeIntersectsNode _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        _ <- propagateGError $ webkit_dom_range_intersects_node _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::is_point_in_range
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 TBoolean
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_range_is_point_in_range" webkit_dom_range_is_point_in_range :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO CInt


dOMRangeIsPointInRange ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    Int64 ->                                -- offset
    m ()
dOMRangeIsPointInRange _obj refNode offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        _ <- propagateGError $ webkit_dom_range_is_point_in_range _obj' refNode' offset
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::select_node
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_select_node" webkit_dom_range_select_node :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSelectNode ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSelectNode _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_select_node _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::select_node_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_select_node_contents" webkit_dom_range_select_node_contents :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSelectNodeContents ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSelectNodeContents _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_select_node_contents _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_end
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_end" webkit_dom_range_set_end :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetEnd ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    Int64 ->                                -- offset
    m ()
dOMRangeSetEnd _obj refNode offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_end _obj' refNode' offset
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_end_after
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_end_after" webkit_dom_range_set_end_after :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetEndAfter ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSetEndAfter _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_end_after _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_end_before
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_end_before" webkit_dom_range_set_end_before :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetEndBefore ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSetEndBefore _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_end_before _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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 "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_start" webkit_dom_range_set_start :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Int64 ->                                -- offset : TBasicType TInt64
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetStart ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    Int64 ->                                -- offset
    m ()
dOMRangeSetStart _obj refNode offset = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_start _obj' refNode' offset
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_start_after
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_start_after" webkit_dom_range_set_start_after :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetStartAfter ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSetStartAfter _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_start_after _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::set_start_before
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "refNode", argType = TInterface "WebKit2WebExtension" "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_range_set_start_before" webkit_dom_range_set_start_before :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- refNode : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSetStartBefore ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- refNode
    m ()
dOMRangeSetStartBefore _obj refNode = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let refNode' = unsafeManagedPtrCastPtr refNode
    onException (do
        propagateGError $ webkit_dom_range_set_start_before _obj' refNode'
        touchManagedPtr _obj
        touchManagedPtr refNode
        return ()
     ) (do
        return ()
     )

-- method DOMRange::surround_contents
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "newParent", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMRange", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "newParent", argType = TInterface "WebKit2WebExtension" "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_range_surround_contents" webkit_dom_range_surround_contents :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr DOMNode ->                          -- newParent : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMRangeSurroundContents ::
    (MonadIO m, DOMRangeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- newParent
    m ()
dOMRangeSurroundContents _obj newParent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let newParent' = unsafeManagedPtrCastPtr newParent
    onException (do
        propagateGError $ webkit_dom_range_surround_contents _obj' newParent'
        touchManagedPtr _obj
        touchManagedPtr newParent
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_range_to_string" webkit_dom_range_to_string :: 
    Ptr DOMRange ->                         -- _obj : TInterface "WebKit2WebExtension" "DOMRange"
    Ptr (Ptr GError) ->                     -- error
    IO CString


dOMRangeToString ::
    (MonadIO m, DOMRangeK a) =>
    a ->                                    -- _obj
    m T.Text
dOMRangeToString _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        result <- propagateGError $ webkit_dom_range_to_string _obj'
        checkUnexpectedReturnNULL "webkit_dom_range_to_string" result
        result' <- cstringToText result
        freeMem result
        touchManagedPtr _obj
        return result'
     ) (do
        return ()
     )