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

-- * Exported types
    DOMDocumentFragment(..)                 ,
    IsDOMDocumentFragment                   ,
    toDOMDocumentFragment                   ,
    noDOMDocumentFragment                   ,


 -- * Properties
-- ** childElementCount #attr:childElementCount#
    DOMDocumentFragmentChildElementCountPropertyInfo,
    dOMDocumentFragmentChildElementCount    ,
    getDOMDocumentFragmentChildElementCount ,


-- ** children #attr:children#
    DOMDocumentFragmentChildrenPropertyInfo ,
    dOMDocumentFragmentChildren             ,
    getDOMDocumentFragmentChildren          ,


-- ** firstElementChild #attr:firstElementChild#
    DOMDocumentFragmentFirstElementChildPropertyInfo,
    dOMDocumentFragmentFirstElementChild    ,
    getDOMDocumentFragmentFirstElementChild ,


-- ** lastElementChild #attr:lastElementChild#
    DOMDocumentFragmentLastElementChildPropertyInfo,
    dOMDocumentFragmentLastElementChild     ,
    getDOMDocumentFragmentLastElementChild  ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Interfaces.DOMEventTarget as WebKit2WebExtension.DOMEventTarget
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMElement as WebKit2WebExtension.DOMElement
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMHTMLCollection as WebKit2WebExtension.DOMHTMLCollection
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMNode as WebKit2WebExtension.DOMNode
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMObject as WebKit2WebExtension.DOMObject

newtype DOMDocumentFragment = DOMDocumentFragment (ManagedPtr DOMDocumentFragment)
foreign import ccall "webkit_dom_document_fragment_get_type"
    c_webkit_dom_document_fragment_get_type :: IO GType

instance GObject DOMDocumentFragment where
    gobjectType _ = c_webkit_dom_document_fragment_get_type
    

class GObject o => IsDOMDocumentFragment o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMDocumentFragment a) =>
    IsDOMDocumentFragment a
#endif
instance IsDOMDocumentFragment DOMDocumentFragment
instance WebKit2WebExtension.DOMNode.IsDOMNode DOMDocumentFragment
instance WebKit2WebExtension.DOMObject.IsDOMObject DOMDocumentFragment
instance GObject.Object.IsObject DOMDocumentFragment
instance WebKit2WebExtension.DOMEventTarget.IsDOMEventTarget DOMDocumentFragment

toDOMDocumentFragment :: IsDOMDocumentFragment o => o -> IO DOMDocumentFragment
toDOMDocumentFragment = unsafeCastTo DOMDocumentFragment

noDOMDocumentFragment :: Maybe DOMDocumentFragment
noDOMDocumentFragment = Nothing

type family ResolveDOMDocumentFragmentMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMDocumentFragmentMethod "addEventListener" o = WebKit2WebExtension.DOMEventTarget.DOMEventTargetAddEventListenerMethodInfo
    ResolveDOMDocumentFragmentMethod "appendChild" o = WebKit2WebExtension.DOMNode.DOMNodeAppendChildMethodInfo
    ResolveDOMDocumentFragmentMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMDocumentFragmentMethod "cloneNodeWithError" o = WebKit2WebExtension.DOMNode.DOMNodeCloneNodeWithErrorMethodInfo
    ResolveDOMDocumentFragmentMethod "compareDocumentPosition" o = WebKit2WebExtension.DOMNode.DOMNodeCompareDocumentPositionMethodInfo
    ResolveDOMDocumentFragmentMethod "contains" o = WebKit2WebExtension.DOMNode.DOMNodeContainsMethodInfo
    ResolveDOMDocumentFragmentMethod "dispatchEvent" o = WebKit2WebExtension.DOMEventTarget.DOMEventTargetDispatchEventMethodInfo
    ResolveDOMDocumentFragmentMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMDocumentFragmentMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMDocumentFragmentMethod "hasChildNodes" o = WebKit2WebExtension.DOMNode.DOMNodeHasChildNodesMethodInfo
    ResolveDOMDocumentFragmentMethod "insertBefore" o = WebKit2WebExtension.DOMNode.DOMNodeInsertBeforeMethodInfo
    ResolveDOMDocumentFragmentMethod "isDefaultNamespace" o = WebKit2WebExtension.DOMNode.DOMNodeIsDefaultNamespaceMethodInfo
    ResolveDOMDocumentFragmentMethod "isEqualNode" o = WebKit2WebExtension.DOMNode.DOMNodeIsEqualNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMDocumentFragmentMethod "isSameNode" o = WebKit2WebExtension.DOMNode.DOMNodeIsSameNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "isSupported" o = WebKit2WebExtension.DOMNode.DOMNodeIsSupportedMethodInfo
    ResolveDOMDocumentFragmentMethod "lookupNamespaceUri" o = WebKit2WebExtension.DOMNode.DOMNodeLookupNamespaceUriMethodInfo
    ResolveDOMDocumentFragmentMethod "lookupPrefix" o = WebKit2WebExtension.DOMNode.DOMNodeLookupPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "normalize" o = WebKit2WebExtension.DOMNode.DOMNodeNormalizeMethodInfo
    ResolveDOMDocumentFragmentMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMDocumentFragmentMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMDocumentFragmentMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMDocumentFragmentMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMDocumentFragmentMethod "removeChild" o = WebKit2WebExtension.DOMNode.DOMNodeRemoveChildMethodInfo
    ResolveDOMDocumentFragmentMethod "removeEventListener" o = WebKit2WebExtension.DOMEventTarget.DOMEventTargetRemoveEventListenerMethodInfo
    ResolveDOMDocumentFragmentMethod "replaceChild" o = WebKit2WebExtension.DOMNode.DOMNodeReplaceChildMethodInfo
    ResolveDOMDocumentFragmentMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMDocumentFragmentMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMDocumentFragmentMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMDocumentFragmentMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMDocumentFragmentMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMDocumentFragmentMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMDocumentFragmentMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMDocumentFragmentMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMDocumentFragmentMethod "getBaseUri" o = WebKit2WebExtension.DOMNode.DOMNodeGetBaseUriMethodInfo
    ResolveDOMDocumentFragmentMethod "getChildNodes" o = WebKit2WebExtension.DOMNode.DOMNodeGetChildNodesMethodInfo
    ResolveDOMDocumentFragmentMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMDocumentFragmentMethod "getFirstChild" o = WebKit2WebExtension.DOMNode.DOMNodeGetFirstChildMethodInfo
    ResolveDOMDocumentFragmentMethod "getLastChild" o = WebKit2WebExtension.DOMNode.DOMNodeGetLastChildMethodInfo
    ResolveDOMDocumentFragmentMethod "getLocalName" o = WebKit2WebExtension.DOMNode.DOMNodeGetLocalNameMethodInfo
    ResolveDOMDocumentFragmentMethod "getNamespaceUri" o = WebKit2WebExtension.DOMNode.DOMNodeGetNamespaceUriMethodInfo
    ResolveDOMDocumentFragmentMethod "getNextSibling" o = WebKit2WebExtension.DOMNode.DOMNodeGetNextSiblingMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeName" o = WebKit2WebExtension.DOMNode.DOMNodeGetNodeNameMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeType" o = WebKit2WebExtension.DOMNode.DOMNodeGetNodeTypeMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeValue" o = WebKit2WebExtension.DOMNode.DOMNodeGetNodeValueMethodInfo
    ResolveDOMDocumentFragmentMethod "getOwnerDocument" o = WebKit2WebExtension.DOMNode.DOMNodeGetOwnerDocumentMethodInfo
    ResolveDOMDocumentFragmentMethod "getParentElement" o = WebKit2WebExtension.DOMNode.DOMNodeGetParentElementMethodInfo
    ResolveDOMDocumentFragmentMethod "getParentNode" o = WebKit2WebExtension.DOMNode.DOMNodeGetParentNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "getPrefix" o = WebKit2WebExtension.DOMNode.DOMNodeGetPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "getPreviousSibling" o = WebKit2WebExtension.DOMNode.DOMNodeGetPreviousSiblingMethodInfo
    ResolveDOMDocumentFragmentMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMDocumentFragmentMethod "getTextContent" o = WebKit2WebExtension.DOMNode.DOMNodeGetTextContentMethodInfo
    ResolveDOMDocumentFragmentMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMDocumentFragmentMethod "setNodeValue" o = WebKit2WebExtension.DOMNode.DOMNodeSetNodeValueMethodInfo
    ResolveDOMDocumentFragmentMethod "setPrefix" o = WebKit2WebExtension.DOMNode.DOMNodeSetPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "setTextContent" o = WebKit2WebExtension.DOMNode.DOMNodeSetTextContentMethodInfo
    ResolveDOMDocumentFragmentMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveDOMDocumentFragmentMethod t DOMDocumentFragment, O.MethodInfo info DOMDocumentFragment p) => O.IsLabelProxy t (DOMDocumentFragment -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveDOMDocumentFragmentMethod t DOMDocumentFragment, O.MethodInfo info DOMDocumentFragment p) => O.IsLabel t (DOMDocumentFragment -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- VVV Prop "child-element-count"
   -- Type: TBasicType TULong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDocumentFragmentChildElementCount :: (MonadIO m, IsDOMDocumentFragment o) => o -> m CULong
getDOMDocumentFragmentChildElementCount obj = liftIO $ getObjectPropertyULong obj "child-element-count"

data DOMDocumentFragmentChildElementCountPropertyInfo
instance AttrInfo DOMDocumentFragmentChildElementCountPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentChildElementCountPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDocumentFragmentChildElementCountPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentChildElementCountPropertyInfo = IsDOMDocumentFragment
    type AttrGetType DOMDocumentFragmentChildElementCountPropertyInfo = CULong
    type AttrLabel DOMDocumentFragmentChildElementCountPropertyInfo = "child-element-count"
    type AttrOrigin DOMDocumentFragmentChildElementCountPropertyInfo = DOMDocumentFragment
    attrGet _ = getDOMDocumentFragmentChildElementCount
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "children"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMHTMLCollection"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDocumentFragmentChildren :: (MonadIO m, IsDOMDocumentFragment o) => o -> m (Maybe WebKit2WebExtension.DOMHTMLCollection.DOMHTMLCollection)
getDOMDocumentFragmentChildren obj = liftIO $ getObjectPropertyObject obj "children" WebKit2WebExtension.DOMHTMLCollection.DOMHTMLCollection

data DOMDocumentFragmentChildrenPropertyInfo
instance AttrInfo DOMDocumentFragmentChildrenPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentChildrenPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDocumentFragmentChildrenPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentChildrenPropertyInfo = IsDOMDocumentFragment
    type AttrGetType DOMDocumentFragmentChildrenPropertyInfo = (Maybe WebKit2WebExtension.DOMHTMLCollection.DOMHTMLCollection)
    type AttrLabel DOMDocumentFragmentChildrenPropertyInfo = "children"
    type AttrOrigin DOMDocumentFragmentChildrenPropertyInfo = DOMDocumentFragment
    attrGet _ = getDOMDocumentFragmentChildren
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "first-element-child"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMElement"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDocumentFragmentFirstElementChild :: (MonadIO m, IsDOMDocumentFragment o) => o -> m (Maybe WebKit2WebExtension.DOMElement.DOMElement)
getDOMDocumentFragmentFirstElementChild obj = liftIO $ getObjectPropertyObject obj "first-element-child" WebKit2WebExtension.DOMElement.DOMElement

data DOMDocumentFragmentFirstElementChildPropertyInfo
instance AttrInfo DOMDocumentFragmentFirstElementChildPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentFirstElementChildPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDocumentFragmentFirstElementChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentFirstElementChildPropertyInfo = IsDOMDocumentFragment
    type AttrGetType DOMDocumentFragmentFirstElementChildPropertyInfo = (Maybe WebKit2WebExtension.DOMElement.DOMElement)
    type AttrLabel DOMDocumentFragmentFirstElementChildPropertyInfo = "first-element-child"
    type AttrOrigin DOMDocumentFragmentFirstElementChildPropertyInfo = DOMDocumentFragment
    attrGet _ = getDOMDocumentFragmentFirstElementChild
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "last-element-child"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMElement"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDocumentFragmentLastElementChild :: (MonadIO m, IsDOMDocumentFragment o) => o -> m (Maybe WebKit2WebExtension.DOMElement.DOMElement)
getDOMDocumentFragmentLastElementChild obj = liftIO $ getObjectPropertyObject obj "last-element-child" WebKit2WebExtension.DOMElement.DOMElement

data DOMDocumentFragmentLastElementChildPropertyInfo
instance AttrInfo DOMDocumentFragmentLastElementChildPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentLastElementChildPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDocumentFragmentLastElementChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentLastElementChildPropertyInfo = IsDOMDocumentFragment
    type AttrGetType DOMDocumentFragmentLastElementChildPropertyInfo = (Maybe WebKit2WebExtension.DOMElement.DOMElement)
    type AttrLabel DOMDocumentFragmentLastElementChildPropertyInfo = "last-element-child"
    type AttrOrigin DOMDocumentFragmentLastElementChildPropertyInfo = DOMDocumentFragment
    attrGet _ = getDOMDocumentFragmentLastElementChild
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMDocumentFragment
type instance O.AttributeList DOMDocumentFragment = DOMDocumentFragmentAttributeList
type DOMDocumentFragmentAttributeList = ('[ '("baseUri", WebKit2WebExtension.DOMNode.DOMNodeBaseUriPropertyInfo), '("childElementCount", DOMDocumentFragmentChildElementCountPropertyInfo), '("childNodes", WebKit2WebExtension.DOMNode.DOMNodeChildNodesPropertyInfo), '("children", DOMDocumentFragmentChildrenPropertyInfo), '("coreObject", WebKit2WebExtension.DOMObject.DOMObjectCoreObjectPropertyInfo), '("firstChild", WebKit2WebExtension.DOMNode.DOMNodeFirstChildPropertyInfo), '("firstElementChild", DOMDocumentFragmentFirstElementChildPropertyInfo), '("isConnected", WebKit2WebExtension.DOMNode.DOMNodeIsConnectedPropertyInfo), '("lastChild", WebKit2WebExtension.DOMNode.DOMNodeLastChildPropertyInfo), '("lastElementChild", DOMDocumentFragmentLastElementChildPropertyInfo), '("nextSibling", WebKit2WebExtension.DOMNode.DOMNodeNextSiblingPropertyInfo), '("nodeName", WebKit2WebExtension.DOMNode.DOMNodeNodeNamePropertyInfo), '("nodeType", WebKit2WebExtension.DOMNode.DOMNodeNodeTypePropertyInfo), '("nodeValue", WebKit2WebExtension.DOMNode.DOMNodeNodeValuePropertyInfo), '("ownerDocument", WebKit2WebExtension.DOMNode.DOMNodeOwnerDocumentPropertyInfo), '("parentElement", WebKit2WebExtension.DOMNode.DOMNodeParentElementPropertyInfo), '("parentNode", WebKit2WebExtension.DOMNode.DOMNodeParentNodePropertyInfo), '("previousSibling", WebKit2WebExtension.DOMNode.DOMNodePreviousSiblingPropertyInfo), '("textContent", WebKit2WebExtension.DOMNode.DOMNodeTextContentPropertyInfo)] :: [(Symbol, *)])

dOMDocumentFragmentChildElementCount :: AttrLabelProxy "childElementCount"
dOMDocumentFragmentChildElementCount = AttrLabelProxy

dOMDocumentFragmentChildren :: AttrLabelProxy "children"
dOMDocumentFragmentChildren = AttrLabelProxy

dOMDocumentFragmentFirstElementChild :: AttrLabelProxy "firstElementChild"
dOMDocumentFragmentFirstElementChild = AttrLabelProxy

dOMDocumentFragmentLastElementChild :: AttrLabelProxy "lastElementChild"
dOMDocumentFragmentLastElementChild = AttrLabelProxy

type instance O.SignalList DOMDocumentFragment = DOMDocumentFragmentSignalList
type DOMDocumentFragmentSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])