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

-- * Exported types
    DOMNode(..)                             ,
    DOMNodeK                                ,
    toDOMNode                               ,
    noDOMNode                               ,


 -- * Methods
-- ** dOMNodeAppendChild
    dOMNodeAppendChild                      ,


-- ** dOMNodeCloneNode
    dOMNodeCloneNode                        ,


-- ** dOMNodeCompareDocumentPosition
    dOMNodeCompareDocumentPosition          ,


-- ** dOMNodeContains
    dOMNodeContains                         ,


-- ** dOMNodeGetBaseUri
    dOMNodeGetBaseUri                       ,


-- ** dOMNodeGetChildNodes
    dOMNodeGetChildNodes                    ,


-- ** dOMNodeGetFirstChild
    dOMNodeGetFirstChild                    ,


-- ** dOMNodeGetLastChild
    dOMNodeGetLastChild                     ,


-- ** dOMNodeGetLocalName
    dOMNodeGetLocalName                     ,


-- ** dOMNodeGetNamespaceUri
    dOMNodeGetNamespaceUri                  ,


-- ** dOMNodeGetNextSibling
    dOMNodeGetNextSibling                   ,


-- ** dOMNodeGetNodeName
    dOMNodeGetNodeName                      ,


-- ** dOMNodeGetNodeType
    dOMNodeGetNodeType                      ,


-- ** dOMNodeGetNodeValue
    dOMNodeGetNodeValue                     ,


-- ** dOMNodeGetOwnerDocument
    dOMNodeGetOwnerDocument                 ,


-- ** dOMNodeGetParentElement
    dOMNodeGetParentElement                 ,


-- ** dOMNodeGetParentNode
    dOMNodeGetParentNode                    ,


-- ** dOMNodeGetPrefix
    dOMNodeGetPrefix                        ,


-- ** dOMNodeGetPreviousSibling
    dOMNodeGetPreviousSibling               ,


-- ** dOMNodeGetTextContent
    dOMNodeGetTextContent                   ,


-- ** dOMNodeHasChildNodes
    dOMNodeHasChildNodes                    ,


-- ** dOMNodeInsertBefore
    dOMNodeInsertBefore                     ,


-- ** dOMNodeIsDefaultNamespace
    dOMNodeIsDefaultNamespace               ,


-- ** dOMNodeIsEqualNode
    dOMNodeIsEqualNode                      ,


-- ** dOMNodeIsSameNode
    dOMNodeIsSameNode                       ,


-- ** dOMNodeIsSupported
    dOMNodeIsSupported                      ,


-- ** dOMNodeLookupNamespaceUri
    dOMNodeLookupNamespaceUri               ,


-- ** dOMNodeLookupPrefix
    dOMNodeLookupPrefix                     ,


-- ** dOMNodeNormalize
    dOMNodeNormalize                        ,


-- ** dOMNodeRemoveChild
    dOMNodeRemoveChild                      ,


-- ** dOMNodeReplaceChild
    dOMNodeReplaceChild                     ,


-- ** dOMNodeSetNodeValue
    dOMNodeSetNodeValue                     ,


-- ** dOMNodeSetPrefix
    dOMNodeSetPrefix                        ,


-- ** dOMNodeSetTextContent
    dOMNodeSetTextContent                   ,




 -- * Properties
-- ** BaseUri
    DOMNodeBaseUriPropertyInfo              ,
    getDOMNodeBaseUri                       ,


-- ** ChildNodes
    DOMNodeChildNodesPropertyInfo           ,
    getDOMNodeChildNodes                    ,


-- ** FirstChild
    DOMNodeFirstChildPropertyInfo           ,
    getDOMNodeFirstChild                    ,


-- ** LastChild
    DOMNodeLastChildPropertyInfo            ,
    getDOMNodeLastChild                     ,


-- ** LocalName
    DOMNodeLocalNamePropertyInfo            ,
    getDOMNodeLocalName                     ,


-- ** NamespaceUri
    DOMNodeNamespaceUriPropertyInfo         ,
    getDOMNodeNamespaceUri                  ,


-- ** NextSibling
    DOMNodeNextSiblingPropertyInfo          ,
    getDOMNodeNextSibling                   ,


-- ** NodeName
    DOMNodeNodeNamePropertyInfo             ,
    getDOMNodeNodeName                      ,


-- ** NodeType
    DOMNodeNodeTypePropertyInfo             ,
    getDOMNodeNodeType                      ,


-- ** NodeValue
    DOMNodeNodeValuePropertyInfo            ,
    constructDOMNodeNodeValue               ,
    getDOMNodeNodeValue                     ,
    setDOMNodeNodeValue                     ,


-- ** OwnerDocument
    DOMNodeOwnerDocumentPropertyInfo        ,
    getDOMNodeOwnerDocument                 ,


-- ** ParentElement
    DOMNodeParentElementPropertyInfo        ,
    getDOMNodeParentElement                 ,


-- ** ParentNode
    DOMNodeParentNodePropertyInfo           ,
    getDOMNodeParentNode                    ,


-- ** Prefix
    DOMNodePrefixPropertyInfo               ,
    constructDOMNodePrefix                  ,
    getDOMNodePrefix                        ,
    setDOMNodePrefix                        ,


-- ** PreviousSibling
    DOMNodePreviousSiblingPropertyInfo      ,
    getDOMNodePreviousSibling               ,


-- ** TextContent
    DOMNodeTextContentPropertyInfo          ,
    constructDOMNodeTextContent             ,
    getDOMNodeTextContent                   ,
    setDOMNodeTextContent                   ,




    ) 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 DOMNode = DOMNode (ForeignPtr DOMNode)
foreign import ccall "webkit_dom_node_get_type"
    c_webkit_dom_node_get_type :: IO GType

type instance ParentTypes DOMNode = DOMNodeParentTypes
type DOMNodeParentTypes = '[DOMObject, GObject.Object, DOMEventTarget]

instance GObject DOMNode where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_node_get_type
    

class GObject o => DOMNodeK o
instance (GObject o, IsDescendantOf DOMNode o) => DOMNodeK o

toDOMNode :: DOMNodeK o => o -> IO DOMNode
toDOMNode = unsafeCastTo DOMNode

noDOMNode :: Maybe DOMNode
noDOMNode = Nothing

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

getDOMNodeBaseUri :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeBaseUri obj = liftIO $ getObjectPropertyString obj "base-uri"

data DOMNodeBaseUriPropertyInfo
instance AttrInfo DOMNodeBaseUriPropertyInfo where
    type AttrAllowedOps DOMNodeBaseUriPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeBaseUriPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeBaseUriPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeBaseUriPropertyInfo = T.Text
    type AttrLabel DOMNodeBaseUriPropertyInfo = "DOMNode::base-uri"
    attrGet _ = getDOMNodeBaseUri
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "child-nodes"
   -- Type: TInterface "WebKit2WebExtension" "DOMNodeList"
   -- Flags: [PropertyReadable]

getDOMNodeChildNodes :: (MonadIO m, DOMNodeK o) => o -> m DOMNodeList
getDOMNodeChildNodes obj = liftIO $ getObjectPropertyObject obj "child-nodes" DOMNodeList

data DOMNodeChildNodesPropertyInfo
instance AttrInfo DOMNodeChildNodesPropertyInfo where
    type AttrAllowedOps DOMNodeChildNodesPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeChildNodesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeChildNodesPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeChildNodesPropertyInfo = DOMNodeList
    type AttrLabel DOMNodeChildNodesPropertyInfo = "DOMNode::child-nodes"
    attrGet _ = getDOMNodeChildNodes
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeFirstChild :: (MonadIO m, DOMNodeK o) => o -> m DOMNode
getDOMNodeFirstChild obj = liftIO $ getObjectPropertyObject obj "first-child" DOMNode

data DOMNodeFirstChildPropertyInfo
instance AttrInfo DOMNodeFirstChildPropertyInfo where
    type AttrAllowedOps DOMNodeFirstChildPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeFirstChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeFirstChildPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeFirstChildPropertyInfo = DOMNode
    type AttrLabel DOMNodeFirstChildPropertyInfo = "DOMNode::first-child"
    attrGet _ = getDOMNodeFirstChild
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeLastChild :: (MonadIO m, DOMNodeK o) => o -> m DOMNode
getDOMNodeLastChild obj = liftIO $ getObjectPropertyObject obj "last-child" DOMNode

data DOMNodeLastChildPropertyInfo
instance AttrInfo DOMNodeLastChildPropertyInfo where
    type AttrAllowedOps DOMNodeLastChildPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeLastChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeLastChildPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeLastChildPropertyInfo = DOMNode
    type AttrLabel DOMNodeLastChildPropertyInfo = "DOMNode::last-child"
    attrGet _ = getDOMNodeLastChild
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeLocalName :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeLocalName obj = liftIO $ getObjectPropertyString obj "local-name"

data DOMNodeLocalNamePropertyInfo
instance AttrInfo DOMNodeLocalNamePropertyInfo where
    type AttrAllowedOps DOMNodeLocalNamePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeLocalNamePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeLocalNamePropertyInfo = DOMNodeK
    type AttrGetType DOMNodeLocalNamePropertyInfo = T.Text
    type AttrLabel DOMNodeLocalNamePropertyInfo = "DOMNode::local-name"
    attrGet _ = getDOMNodeLocalName
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeNamespaceUri :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeNamespaceUri obj = liftIO $ getObjectPropertyString obj "namespace-uri"

data DOMNodeNamespaceUriPropertyInfo
instance AttrInfo DOMNodeNamespaceUriPropertyInfo where
    type AttrAllowedOps DOMNodeNamespaceUriPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeNamespaceUriPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeNamespaceUriPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeNamespaceUriPropertyInfo = T.Text
    type AttrLabel DOMNodeNamespaceUriPropertyInfo = "DOMNode::namespace-uri"
    attrGet _ = getDOMNodeNamespaceUri
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeNextSibling :: (MonadIO m, DOMNodeK o) => o -> m DOMNode
getDOMNodeNextSibling obj = liftIO $ getObjectPropertyObject obj "next-sibling" DOMNode

data DOMNodeNextSiblingPropertyInfo
instance AttrInfo DOMNodeNextSiblingPropertyInfo where
    type AttrAllowedOps DOMNodeNextSiblingPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeNextSiblingPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeNextSiblingPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeNextSiblingPropertyInfo = DOMNode
    type AttrLabel DOMNodeNextSiblingPropertyInfo = "DOMNode::next-sibling"
    attrGet _ = getDOMNodeNextSibling
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeNodeName :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeNodeName obj = liftIO $ getObjectPropertyString obj "node-name"

data DOMNodeNodeNamePropertyInfo
instance AttrInfo DOMNodeNodeNamePropertyInfo where
    type AttrAllowedOps DOMNodeNodeNamePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeNodeNamePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeNodeNamePropertyInfo = DOMNodeK
    type AttrGetType DOMNodeNodeNamePropertyInfo = T.Text
    type AttrLabel DOMNodeNodeNamePropertyInfo = "DOMNode::node-name"
    attrGet _ = getDOMNodeNodeName
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeNodeType :: (MonadIO m, DOMNodeK o) => o -> m Word32
getDOMNodeNodeType obj = liftIO $ getObjectPropertyCUInt obj "node-type"

data DOMNodeNodeTypePropertyInfo
instance AttrInfo DOMNodeNodeTypePropertyInfo where
    type AttrAllowedOps DOMNodeNodeTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeNodeTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeNodeTypePropertyInfo = DOMNodeK
    type AttrGetType DOMNodeNodeTypePropertyInfo = Word32
    type AttrLabel DOMNodeNodeTypePropertyInfo = "DOMNode::node-type"
    attrGet _ = getDOMNodeNodeType
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeNodeValue :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeNodeValue obj = liftIO $ getObjectPropertyString obj "node-value"

setDOMNodeNodeValue :: (MonadIO m, DOMNodeK o) => o -> T.Text -> m ()
setDOMNodeNodeValue obj val = liftIO $ setObjectPropertyString obj "node-value" val

constructDOMNodeNodeValue :: T.Text -> IO ([Char], GValue)
constructDOMNodeNodeValue val = constructObjectPropertyString "node-value" val

data DOMNodeNodeValuePropertyInfo
instance AttrInfo DOMNodeNodeValuePropertyInfo where
    type AttrAllowedOps DOMNodeNodeValuePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DOMNodeNodeValuePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMNodeNodeValuePropertyInfo = DOMNodeK
    type AttrGetType DOMNodeNodeValuePropertyInfo = T.Text
    type AttrLabel DOMNodeNodeValuePropertyInfo = "DOMNode::node-value"
    attrGet _ = getDOMNodeNodeValue
    attrSet _ = setDOMNodeNodeValue
    attrConstruct _ = constructDOMNodeNodeValue

-- VVV Prop "owner-document"
   -- Type: TInterface "WebKit2WebExtension" "DOMDocument"
   -- Flags: [PropertyReadable]

getDOMNodeOwnerDocument :: (MonadIO m, DOMNodeK o) => o -> m DOMDocument
getDOMNodeOwnerDocument obj = liftIO $ getObjectPropertyObject obj "owner-document" DOMDocument

data DOMNodeOwnerDocumentPropertyInfo
instance AttrInfo DOMNodeOwnerDocumentPropertyInfo where
    type AttrAllowedOps DOMNodeOwnerDocumentPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeOwnerDocumentPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeOwnerDocumentPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeOwnerDocumentPropertyInfo = DOMDocument
    type AttrLabel DOMNodeOwnerDocumentPropertyInfo = "DOMNode::owner-document"
    attrGet _ = getDOMNodeOwnerDocument
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "parent-element"
   -- Type: TInterface "WebKit2WebExtension" "DOMElement"
   -- Flags: [PropertyReadable]

getDOMNodeParentElement :: (MonadIO m, DOMNodeK o) => o -> m DOMElement
getDOMNodeParentElement obj = liftIO $ getObjectPropertyObject obj "parent-element" DOMElement

data DOMNodeParentElementPropertyInfo
instance AttrInfo DOMNodeParentElementPropertyInfo where
    type AttrAllowedOps DOMNodeParentElementPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeParentElementPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeParentElementPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeParentElementPropertyInfo = DOMElement
    type AttrLabel DOMNodeParentElementPropertyInfo = "DOMNode::parent-element"
    attrGet _ = getDOMNodeParentElement
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeParentNode :: (MonadIO m, DOMNodeK o) => o -> m DOMNode
getDOMNodeParentNode obj = liftIO $ getObjectPropertyObject obj "parent-node" DOMNode

data DOMNodeParentNodePropertyInfo
instance AttrInfo DOMNodeParentNodePropertyInfo where
    type AttrAllowedOps DOMNodeParentNodePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodeParentNodePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodeParentNodePropertyInfo = DOMNodeK
    type AttrGetType DOMNodeParentNodePropertyInfo = DOMNode
    type AttrLabel DOMNodeParentNodePropertyInfo = "DOMNode::parent-node"
    attrGet _ = getDOMNodeParentNode
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodePrefix :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodePrefix obj = liftIO $ getObjectPropertyString obj "prefix"

setDOMNodePrefix :: (MonadIO m, DOMNodeK o) => o -> T.Text -> m ()
setDOMNodePrefix obj val = liftIO $ setObjectPropertyString obj "prefix" val

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

data DOMNodePrefixPropertyInfo
instance AttrInfo DOMNodePrefixPropertyInfo where
    type AttrAllowedOps DOMNodePrefixPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DOMNodePrefixPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMNodePrefixPropertyInfo = DOMNodeK
    type AttrGetType DOMNodePrefixPropertyInfo = T.Text
    type AttrLabel DOMNodePrefixPropertyInfo = "DOMNode::prefix"
    attrGet _ = getDOMNodePrefix
    attrSet _ = setDOMNodePrefix
    attrConstruct _ = constructDOMNodePrefix

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

getDOMNodePreviousSibling :: (MonadIO m, DOMNodeK o) => o -> m DOMNode
getDOMNodePreviousSibling obj = liftIO $ getObjectPropertyObject obj "previous-sibling" DOMNode

data DOMNodePreviousSiblingPropertyInfo
instance AttrInfo DOMNodePreviousSiblingPropertyInfo where
    type AttrAllowedOps DOMNodePreviousSiblingPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMNodePreviousSiblingPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMNodePreviousSiblingPropertyInfo = DOMNodeK
    type AttrGetType DOMNodePreviousSiblingPropertyInfo = DOMNode
    type AttrLabel DOMNodePreviousSiblingPropertyInfo = "DOMNode::previous-sibling"
    attrGet _ = getDOMNodePreviousSibling
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getDOMNodeTextContent :: (MonadIO m, DOMNodeK o) => o -> m T.Text
getDOMNodeTextContent obj = liftIO $ getObjectPropertyString obj "text-content"

setDOMNodeTextContent :: (MonadIO m, DOMNodeK o) => o -> T.Text -> m ()
setDOMNodeTextContent obj val = liftIO $ setObjectPropertyString obj "text-content" val

constructDOMNodeTextContent :: T.Text -> IO ([Char], GValue)
constructDOMNodeTextContent val = constructObjectPropertyString "text-content" val

data DOMNodeTextContentPropertyInfo
instance AttrInfo DOMNodeTextContentPropertyInfo where
    type AttrAllowedOps DOMNodeTextContentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint DOMNodeTextContentPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMNodeTextContentPropertyInfo = DOMNodeK
    type AttrGetType DOMNodeTextContentPropertyInfo = T.Text
    type AttrLabel DOMNodeTextContentPropertyInfo = "DOMNode::text-content"
    attrGet _ = getDOMNodeTextContent
    attrSet _ = setDOMNodeTextContent
    attrConstruct _ = constructDOMNodeTextContent

type instance AttributeList DOMNode = DOMNodeAttributeList
type DOMNodeAttributeList = ('[ '("base-uri", DOMNodeBaseUriPropertyInfo), '("child-nodes", DOMNodeChildNodesPropertyInfo), '("core-object", DOMObjectCoreObjectPropertyInfo), '("first-child", DOMNodeFirstChildPropertyInfo), '("last-child", DOMNodeLastChildPropertyInfo), '("local-name", DOMNodeLocalNamePropertyInfo), '("namespace-uri", DOMNodeNamespaceUriPropertyInfo), '("next-sibling", DOMNodeNextSiblingPropertyInfo), '("node-name", DOMNodeNodeNamePropertyInfo), '("node-type", DOMNodeNodeTypePropertyInfo), '("node-value", DOMNodeNodeValuePropertyInfo), '("owner-document", DOMNodeOwnerDocumentPropertyInfo), '("parent-element", DOMNodeParentElementPropertyInfo), '("parent-node", DOMNodeParentNodePropertyInfo), '("prefix", DOMNodePrefixPropertyInfo), '("previous-sibling", DOMNodePreviousSiblingPropertyInfo), '("text-content", DOMNodeTextContentPropertyInfo)] :: [(Symbol, *)])

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

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


dOMNodeAppendChild ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- newChild
    m DOMNode
dOMNodeAppendChild _obj newChild = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let newChild' = unsafeManagedPtrCastPtr newChild
    onException (do
        result <- propagateGError $ webkit_dom_node_append_child _obj' newChild'
        checkUnexpectedReturnNULL "webkit_dom_node_append_child" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        touchManagedPtr newChild
        return result'
     ) (do
        return ()
     )

-- method DOMNode::clone_node
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "deep", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "deep", argType = TBasicType TBoolean, 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_node_clone_node" webkit_dom_node_clone_node :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CInt ->                                 -- deep : TBasicType TBoolean
    IO (Ptr DOMNode)


dOMNodeCloneNode ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- deep
    m DOMNode
dOMNodeCloneNode _obj deep = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let deep' = (fromIntegral . fromEnum) deep
    result <- webkit_dom_node_clone_node _obj' deep'
    checkUnexpectedReturnNULL "webkit_dom_node_clone_node" result
    result' <- (newObject DOMNode) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_node_compare_document_position" webkit_dom_node_compare_document_position :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr DOMNode ->                          -- other : TInterface "WebKit2WebExtension" "DOMNode"
    IO Word16


dOMNodeCompareDocumentPosition ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- other
    m Word16
dOMNodeCompareDocumentPosition _obj other = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let other' = unsafeManagedPtrCastPtr other
    result <- webkit_dom_node_compare_document_position _obj' other'
    touchManagedPtr _obj
    touchManagedPtr other
    return result

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


dOMNodeContains ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- other
    m Bool
dOMNodeContains _obj other = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let other' = unsafeManagedPtrCastPtr other
    result <- webkit_dom_node_contains _obj' other'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr other
    return result'

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


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

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

foreign import ccall "webkit_dom_node_get_child_nodes" webkit_dom_node_get_child_nodes :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    IO (Ptr DOMNodeList)


dOMNodeGetChildNodes ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    m DOMNodeList
dOMNodeGetChildNodes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_node_get_child_nodes _obj'
    checkUnexpectedReturnNULL "webkit_dom_node_get_child_nodes" result
    result' <- (wrapObject DOMNodeList) result
    touchManagedPtr _obj
    return result'

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


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

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


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

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


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

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


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

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


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

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


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

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

foreign import ccall "webkit_dom_node_get_node_type" webkit_dom_node_get_node_type :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    IO Word16


dOMNodeGetNodeType ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    m Word16
dOMNodeGetNodeType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_node_get_node_type _obj'
    touchManagedPtr _obj
    return result

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


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

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

foreign import ccall "webkit_dom_node_get_owner_document" webkit_dom_node_get_owner_document :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    IO (Ptr DOMDocument)


dOMNodeGetOwnerDocument ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    m DOMDocument
dOMNodeGetOwnerDocument _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_node_get_owner_document _obj'
    checkUnexpectedReturnNULL "webkit_dom_node_get_owner_document" result
    result' <- (newObject DOMDocument) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "webkit_dom_node_get_parent_element" webkit_dom_node_get_parent_element :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    IO (Ptr DOMElement)


dOMNodeGetParentElement ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    m DOMElement
dOMNodeGetParentElement _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_dom_node_get_parent_element _obj'
    checkUnexpectedReturnNULL "webkit_dom_node_get_parent_element" result
    result' <- (newObject DOMElement) result
    touchManagedPtr _obj
    return result'

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


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

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


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

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


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

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


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

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


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

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

foreign import ccall "webkit_dom_node_insert_before" webkit_dom_node_insert_before :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr DOMNode ->                          -- newChild : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr DOMNode ->                          -- refChild : TInterface "WebKit2WebExtension" "DOMNode"
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr DOMNode)


dOMNodeInsertBefore ::
    (MonadIO m, DOMNodeK a, DOMNodeK b, DOMNodeK c) =>
    a ->                                    -- _obj
    b ->                                    -- newChild
    Maybe (c) ->                            -- refChild
    m DOMNode
dOMNodeInsertBefore _obj newChild refChild = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let newChild' = unsafeManagedPtrCastPtr newChild
    maybeRefChild <- case refChild of
        Nothing -> return nullPtr
        Just jRefChild -> do
            let jRefChild' = unsafeManagedPtrCastPtr jRefChild
            return jRefChild'
    onException (do
        result <- propagateGError $ webkit_dom_node_insert_before _obj' newChild' maybeRefChild
        checkUnexpectedReturnNULL "webkit_dom_node_insert_before" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        touchManagedPtr newChild
        whenJust refChild touchManagedPtr
        return result'
     ) (do
        return ()
     )

-- method DOMNode::is_default_namespace
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespaceURI", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespaceURI", argType = TBasicType TUTF8, 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_node_is_default_namespace" webkit_dom_node_is_default_namespace :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- namespaceURI : TBasicType TUTF8
    IO CInt


dOMNodeIsDefaultNamespace ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- namespaceURI
    m Bool
dOMNodeIsDefaultNamespace _obj namespaceURI = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    namespaceURI' <- textToCString namespaceURI
    result <- webkit_dom_node_is_default_namespace _obj' namespaceURI'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem namespaceURI'
    return result'

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


dOMNodeIsEqualNode ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- other
    m Bool
dOMNodeIsEqualNode _obj other = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let other' = unsafeManagedPtrCastPtr other
    result <- webkit_dom_node_is_equal_node _obj' other'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr other
    return result'

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


dOMNodeIsSameNode ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- other
    m Bool
dOMNodeIsSameNode _obj other = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let other' = unsafeManagedPtrCastPtr other
    result <- webkit_dom_node_is_same_node _obj' other'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr other
    return result'

-- method DOMNode::is_supported
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "feature", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "feature", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "version", argType = TBasicType TUTF8, 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_node_is_supported" webkit_dom_node_is_supported :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- feature : TBasicType TUTF8
    CString ->                              -- version : TBasicType TUTF8
    IO CInt


dOMNodeIsSupported ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- feature
    T.Text ->                               -- version
    m Bool
dOMNodeIsSupported _obj feature version = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    feature' <- textToCString feature
    version' <- textToCString version
    result <- webkit_dom_node_is_supported _obj' feature' version'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem feature'
    freeMem version'
    return result'

-- method DOMNode::lookup_namespace_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "prefix", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "prefix", argType = TBasicType TUTF8, 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_node_lookup_namespace_uri" webkit_dom_node_lookup_namespace_uri :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- prefix : TBasicType TUTF8
    IO CString


dOMNodeLookupNamespaceUri ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- prefix
    m T.Text
dOMNodeLookupNamespaceUri _obj prefix = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    prefix' <- textToCString prefix
    result <- webkit_dom_node_lookup_namespace_uri _obj' prefix'
    checkUnexpectedReturnNULL "webkit_dom_node_lookup_namespace_uri" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    freeMem prefix'
    return result'

-- method DOMNode::lookup_prefix
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespaceURI", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2WebExtension" "DOMNode", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "namespaceURI", argType = TBasicType TUTF8, 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_node_lookup_prefix" webkit_dom_node_lookup_prefix :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- namespaceURI : TBasicType TUTF8
    IO CString


dOMNodeLookupPrefix ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- namespaceURI
    m T.Text
dOMNodeLookupPrefix _obj namespaceURI = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    namespaceURI' <- textToCString namespaceURI
    result <- webkit_dom_node_lookup_prefix _obj' namespaceURI'
    checkUnexpectedReturnNULL "webkit_dom_node_lookup_prefix" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    freeMem namespaceURI'
    return result'

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


dOMNodeNormalize ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    m ()
dOMNodeNormalize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    webkit_dom_node_normalize _obj'
    touchManagedPtr _obj
    return ()

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


dOMNodeRemoveChild ::
    (MonadIO m, DOMNodeK a, DOMNodeK b) =>
    a ->                                    -- _obj
    b ->                                    -- oldChild
    m DOMNode
dOMNodeRemoveChild _obj oldChild = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let oldChild' = unsafeManagedPtrCastPtr oldChild
    onException (do
        result <- propagateGError $ webkit_dom_node_remove_child _obj' oldChild'
        checkUnexpectedReturnNULL "webkit_dom_node_remove_child" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        touchManagedPtr oldChild
        return result'
     ) (do
        return ()
     )

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


dOMNodeReplaceChild ::
    (MonadIO m, DOMNodeK a, DOMNodeK b, DOMNodeK c) =>
    a ->                                    -- _obj
    b ->                                    -- newChild
    c ->                                    -- oldChild
    m DOMNode
dOMNodeReplaceChild _obj newChild oldChild = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let newChild' = unsafeManagedPtrCastPtr newChild
    let oldChild' = unsafeManagedPtrCastPtr oldChild
    onException (do
        result <- propagateGError $ webkit_dom_node_replace_child _obj' newChild' oldChild'
        checkUnexpectedReturnNULL "webkit_dom_node_replace_child" result
        result' <- (newObject DOMNode) result
        touchManagedPtr _obj
        touchManagedPtr newChild
        touchManagedPtr oldChild
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "webkit_dom_node_set_node_value" webkit_dom_node_set_node_value :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- value : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMNodeSetNodeValue ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- value
    m ()
dOMNodeSetNodeValue _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    value' <- textToCString value
    onException (do
        propagateGError $ webkit_dom_node_set_node_value _obj' value'
        touchManagedPtr _obj
        freeMem value'
        return ()
     ) (do
        freeMem value'
     )

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

foreign import ccall "webkit_dom_node_set_prefix" webkit_dom_node_set_prefix :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- value : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMNodeSetPrefix ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- value
    m ()
dOMNodeSetPrefix _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    value' <- textToCString value
    onException (do
        propagateGError $ webkit_dom_node_set_prefix _obj' value'
        touchManagedPtr _obj
        freeMem value'
        return ()
     ) (do
        freeMem value'
     )

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

foreign import ccall "webkit_dom_node_set_text_content" webkit_dom_node_set_text_content :: 
    Ptr DOMNode ->                          -- _obj : TInterface "WebKit2WebExtension" "DOMNode"
    CString ->                              -- value : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()


dOMNodeSetTextContent ::
    (MonadIO m, DOMNodeK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- value
    m ()
dOMNodeSetTextContent _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    value' <- textToCString value
    onException (do
        propagateGError $ webkit_dom_node_set_text_content _obj' value'
        touchManagedPtr _obj
        freeMem value'
        return ()
     ) (do
        freeMem value'
     )