{- |
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(..)                 ,
    DOMDocumentFragmentK                    ,
    toDOMDocumentFragment                   ,
    noDOMDocumentFragment                   ,


 -- * Properties
-- ** ChildElementCount
    DOMDocumentFragmentChildElementCountPropertyInfo,
    getDOMDocumentFragmentChildElementCount ,


-- ** Children
    DOMDocumentFragmentChildrenPropertyInfo ,
    getDOMDocumentFragmentChildren          ,


-- ** FirstElementChild
    DOMDocumentFragmentFirstElementChildPropertyInfo,
    getDOMDocumentFragmentFirstElementChild ,


-- ** LastElementChild
    DOMDocumentFragmentLastElementChildPropertyInfo,
    getDOMDocumentFragmentLastElementChild  ,




    ) 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 DOMDocumentFragment = DOMDocumentFragment (ForeignPtr DOMDocumentFragment)
foreign import ccall "webkit_dom_document_fragment_get_type"
    c_webkit_dom_document_fragment_get_type :: IO GType

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

instance GObject DOMDocumentFragment where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_dom_document_fragment_get_type
    

class GObject o => DOMDocumentFragmentK o
instance (GObject o, IsDescendantOf DOMDocumentFragment o) => DOMDocumentFragmentK o

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

noDOMDocumentFragment :: Maybe DOMDocumentFragment
noDOMDocumentFragment = Nothing

-- VVV Prop "child-element-count"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]

getDOMDocumentFragmentChildElementCount :: (MonadIO m, DOMDocumentFragmentK o) => o -> m Word64
getDOMDocumentFragmentChildElementCount obj = liftIO $ getObjectPropertyUInt64 obj "child-element-count"

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

-- VVV Prop "children"
   -- Type: TInterface "WebKit2WebExtension" "DOMHTMLCollection"
   -- Flags: [PropertyReadable]

getDOMDocumentFragmentChildren :: (MonadIO m, DOMDocumentFragmentK o) => o -> m DOMHTMLCollection
getDOMDocumentFragmentChildren obj = liftIO $ getObjectPropertyObject obj "children" DOMHTMLCollection

data DOMDocumentFragmentChildrenPropertyInfo
instance AttrInfo DOMDocumentFragmentChildrenPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentChildrenPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDocumentFragmentChildrenPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentChildrenPropertyInfo = DOMDocumentFragmentK
    type AttrGetType DOMDocumentFragmentChildrenPropertyInfo = DOMHTMLCollection
    type AttrLabel DOMDocumentFragmentChildrenPropertyInfo = "DOMDocumentFragment::children"
    attrGet _ = getDOMDocumentFragmentChildren
    attrSet _ = undefined
    attrConstruct _ = undefined

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

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

data DOMDocumentFragmentFirstElementChildPropertyInfo
instance AttrInfo DOMDocumentFragmentFirstElementChildPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentFirstElementChildPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDocumentFragmentFirstElementChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentFirstElementChildPropertyInfo = DOMDocumentFragmentK
    type AttrGetType DOMDocumentFragmentFirstElementChildPropertyInfo = DOMElement
    type AttrLabel DOMDocumentFragmentFirstElementChildPropertyInfo = "DOMDocumentFragment::first-element-child"
    attrGet _ = getDOMDocumentFragmentFirstElementChild
    attrSet _ = undefined
    attrConstruct _ = undefined

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

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

data DOMDocumentFragmentLastElementChildPropertyInfo
instance AttrInfo DOMDocumentFragmentLastElementChildPropertyInfo where
    type AttrAllowedOps DOMDocumentFragmentLastElementChildPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDocumentFragmentLastElementChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDocumentFragmentLastElementChildPropertyInfo = DOMDocumentFragmentK
    type AttrGetType DOMDocumentFragmentLastElementChildPropertyInfo = DOMElement
    type AttrLabel DOMDocumentFragmentLastElementChildPropertyInfo = "DOMDocumentFragment::last-element-child"
    attrGet _ = getDOMDocumentFragmentLastElementChild
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList DOMDocumentFragment = DOMDocumentFragmentAttributeList
type DOMDocumentFragmentAttributeList = ('[ '("base-uri", DOMNodeBaseUriPropertyInfo), '("child-element-count", DOMDocumentFragmentChildElementCountPropertyInfo), '("child-nodes", DOMNodeChildNodesPropertyInfo), '("children", DOMDocumentFragmentChildrenPropertyInfo), '("core-object", DOMObjectCoreObjectPropertyInfo), '("first-child", DOMNodeFirstChildPropertyInfo), '("first-element-child", DOMDocumentFragmentFirstElementChildPropertyInfo), '("last-child", DOMNodeLastChildPropertyInfo), '("last-element-child", DOMDocumentFragmentLastElementChildPropertyInfo), '("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 DOMDocumentFragment = DOMDocumentFragmentSignalList
type DOMDocumentFragmentSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])