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

-- * Exported types
    DOMTreeWalker(..)                       ,
    DOMTreeWalkerK                          ,
    toDOMTreeWalker                         ,
    noDOMTreeWalker                         ,


 -- * Methods
-- ** dOMTreeWalkerFirstChild
    dOMTreeWalkerFirstChild                 ,


-- ** dOMTreeWalkerGetCurrentNode
    dOMTreeWalkerGetCurrentNode             ,


-- ** dOMTreeWalkerGetExpandEntityReferences
    dOMTreeWalkerGetExpandEntityReferences  ,


-- ** dOMTreeWalkerGetFilter
    dOMTreeWalkerGetFilter                  ,


-- ** dOMTreeWalkerGetRoot
    dOMTreeWalkerGetRoot                    ,


-- ** dOMTreeWalkerGetWhatToShow
    dOMTreeWalkerGetWhatToShow              ,


-- ** dOMTreeWalkerLastChild
    dOMTreeWalkerLastChild                  ,


-- ** dOMTreeWalkerNextNode
    dOMTreeWalkerNextNode                   ,


-- ** dOMTreeWalkerNextSibling
    dOMTreeWalkerNextSibling                ,


-- ** dOMTreeWalkerParentNode
    dOMTreeWalkerParentNode                 ,


-- ** dOMTreeWalkerPreviousNode
    dOMTreeWalkerPreviousNode               ,


-- ** dOMTreeWalkerPreviousSibling
    dOMTreeWalkerPreviousSibling            ,


-- ** dOMTreeWalkerSetCurrentNode
    dOMTreeWalkerSetCurrentNode             ,




 -- * Properties
-- ** CurrentNode
    DOMTreeWalkerCurrentNodePropertyInfo    ,
    getDOMTreeWalkerCurrentNode             ,


-- ** ExpandEntityReferences
    DOMTreeWalkerExpandEntityReferencesPropertyInfo,
    getDOMTreeWalkerExpandEntityReferences  ,


-- ** Filter
    DOMTreeWalkerFilterPropertyInfo         ,
    getDOMTreeWalkerFilter                  ,


-- ** Root
    DOMTreeWalkerRootPropertyInfo           ,
    getDOMTreeWalkerRoot                    ,


-- ** WhatToShow
    DOMTreeWalkerWhatToShowPropertyInfo     ,
    getDOMTreeWalkerWhatToShow              ,




    ) 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 DOMTreeWalker = DOMTreeWalker (ForeignPtr DOMTreeWalker)
foreign import ccall "webkit_dom_tree_walker_get_type"
    c_webkit_dom_tree_walker_get_type :: IO GType

type instance ParentTypes DOMTreeWalker = DOMTreeWalkerParentTypes
type DOMTreeWalkerParentTypes = '[DOMObject, GObject.Object]

instance GObject DOMTreeWalker where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_tree_walker_get_type
    

class GObject o => DOMTreeWalkerK o
instance (GObject o, IsDescendantOf DOMTreeWalker o) => DOMTreeWalkerK o

toDOMTreeWalker :: DOMTreeWalkerK o => o -> IO DOMTreeWalker
toDOMTreeWalker = unsafeCastTo DOMTreeWalker

noDOMTreeWalker :: Maybe DOMTreeWalker
noDOMTreeWalker = Nothing

-- VVV Prop "current-node"
   -- Type: TInterface "WebKit2WebExtension" "DOMNode"
   -- Flags: [PropertyReadable]

getDOMTreeWalkerCurrentNode :: (MonadIO m, DOMTreeWalkerK o) => o -> m DOMNode
getDOMTreeWalkerCurrentNode obj = liftIO $ getObjectPropertyObject obj "current-node" DOMNode

data DOMTreeWalkerCurrentNodePropertyInfo
instance AttrInfo DOMTreeWalkerCurrentNodePropertyInfo where
    type AttrAllowedOps DOMTreeWalkerCurrentNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTreeWalkerCurrentNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTreeWalkerCurrentNodePropertyInfo = DOMTreeWalkerK
    type AttrGetType DOMTreeWalkerCurrentNodePropertyInfo = DOMNode
    type AttrLabel DOMTreeWalkerCurrentNodePropertyInfo = "DOMTreeWalker::current-node"
    attrGet _ = getDOMTreeWalkerCurrentNode
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "expand-entity-references"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getDOMTreeWalkerExpandEntityReferences :: (MonadIO m, DOMTreeWalkerK o) => o -> m Bool
getDOMTreeWalkerExpandEntityReferences obj = liftIO $ getObjectPropertyBool obj "expand-entity-references"

data DOMTreeWalkerExpandEntityReferencesPropertyInfo
instance AttrInfo DOMTreeWalkerExpandEntityReferencesPropertyInfo where
    type AttrAllowedOps DOMTreeWalkerExpandEntityReferencesPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTreeWalkerExpandEntityReferencesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTreeWalkerExpandEntityReferencesPropertyInfo = DOMTreeWalkerK
    type AttrGetType DOMTreeWalkerExpandEntityReferencesPropertyInfo = Bool
    type AttrLabel DOMTreeWalkerExpandEntityReferencesPropertyInfo = "DOMTreeWalker::expand-entity-references"
    attrGet _ = getDOMTreeWalkerExpandEntityReferences
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "filter"
   -- Type: TInterface "WebKit2WebExtension" "DOMNodeFilter"
   -- Flags: [PropertyReadable]

getDOMTreeWalkerFilter :: (MonadIO m, DOMTreeWalkerK o) => o -> m DOMNodeFilter
getDOMTreeWalkerFilter obj = liftIO $ getObjectPropertyObject obj "filter" DOMNodeFilter

data DOMTreeWalkerFilterPropertyInfo
instance AttrInfo DOMTreeWalkerFilterPropertyInfo where
    type AttrAllowedOps DOMTreeWalkerFilterPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTreeWalkerFilterPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTreeWalkerFilterPropertyInfo = DOMTreeWalkerK
    type AttrGetType DOMTreeWalkerFilterPropertyInfo = DOMNodeFilter
    type AttrLabel DOMTreeWalkerFilterPropertyInfo = "DOMTreeWalker::filter"
    attrGet _ = getDOMTreeWalkerFilter
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMTreeWalkerRoot :: (MonadIO m, DOMTreeWalkerK o) => o -> m DOMNode
getDOMTreeWalkerRoot obj = liftIO $ getObjectPropertyObject obj "root" DOMNode

data DOMTreeWalkerRootPropertyInfo
instance AttrInfo DOMTreeWalkerRootPropertyInfo where
    type AttrAllowedOps DOMTreeWalkerRootPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTreeWalkerRootPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTreeWalkerRootPropertyInfo = DOMTreeWalkerK
    type AttrGetType DOMTreeWalkerRootPropertyInfo = DOMNode
    type AttrLabel DOMTreeWalkerRootPropertyInfo = "DOMTreeWalker::root"
    attrGet _ = getDOMTreeWalkerRoot
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "what-to-show"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]

getDOMTreeWalkerWhatToShow :: (MonadIO m, DOMTreeWalkerK o) => o -> m Word64
getDOMTreeWalkerWhatToShow obj = liftIO $ getObjectPropertyUInt64 obj "what-to-show"

data DOMTreeWalkerWhatToShowPropertyInfo
instance AttrInfo DOMTreeWalkerWhatToShowPropertyInfo where
    type AttrAllowedOps DOMTreeWalkerWhatToShowPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMTreeWalkerWhatToShowPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMTreeWalkerWhatToShowPropertyInfo = DOMTreeWalkerK
    type AttrGetType DOMTreeWalkerWhatToShowPropertyInfo = Word64
    type AttrLabel DOMTreeWalkerWhatToShowPropertyInfo = "DOMTreeWalker::what-to-show"
    attrGet _ = getDOMTreeWalkerWhatToShow
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList DOMTreeWalker = DOMTreeWalkerAttributeList
type DOMTreeWalkerAttributeList = ('[ '("core-object", DOMObjectCoreObjectPropertyInfo), '("current-node", DOMTreeWalkerCurrentNodePropertyInfo), '("expand-entity-references", DOMTreeWalkerExpandEntityReferencesPropertyInfo), '("filter", DOMTreeWalkerFilterPropertyInfo), '("root", DOMTreeWalkerRootPropertyInfo), '("what-to-show", DOMTreeWalkerWhatToShowPropertyInfo)] :: [(Symbol, *)])

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

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

foreign import ccall "webkit_dom_tree_walker_first_child" webkit_dom_tree_walker_first_child :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_get_current_node" webkit_dom_tree_walker_get_current_node :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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


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

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

foreign import ccall "webkit_dom_tree_walker_get_filter" webkit_dom_tree_walker_get_filter :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNodeFilter)


dOMTreeWalkerGetFilter ::
    (MonadIO m, DOMTreeWalkerK a) =>
    a ->                                    -- _obj
    m DOMNodeFilter
dOMTreeWalkerGetFilter _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_tree_walker_get_filter _obj'
    checkUnexpectedReturnNULL "webkit_dom_tree_walker_get_filter" result
    result' <- (wrapObject DOMNodeFilter) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_tree_walker_get_root" webkit_dom_tree_walker_get_root :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_get_what_to_show" webkit_dom_tree_walker_get_what_to_show :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO Word64


dOMTreeWalkerGetWhatToShow ::
    (MonadIO m, DOMTreeWalkerK a) =>
    a ->                                    -- _obj
    m Word64
dOMTreeWalkerGetWhatToShow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_tree_walker_get_what_to_show _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "webkit_dom_tree_walker_last_child" webkit_dom_tree_walker_last_child :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_next_node" webkit_dom_tree_walker_next_node :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_next_sibling" webkit_dom_tree_walker_next_sibling :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_parent_node" webkit_dom_tree_walker_parent_node :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_previous_node" webkit_dom_tree_walker_previous_node :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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

foreign import ccall "webkit_dom_tree_walker_previous_sibling" webkit_dom_tree_walker_previous_sibling :: 
    Ptr DOMTreeWalker ->                    -- _obj : TInterface "WebKit2WebExtension" "DOMTreeWalker"
    IO (Ptr DOMNode)


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

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


dOMTreeWalkerSetCurrentNode ::
    (MonadIO m, DOMTreeWalkerK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- value
    m ()
dOMTreeWalkerSetCurrentNode _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let value' = unsafeManagedPtrCastPtr value
    onException (do
        propagateGError $ webkit_dom_tree_walker_set_current_node _obj' value'
        touchManagedPtr _obj
        touchManagedPtr value
        return ()
     ) (do
        return ()
     )