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

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


 -- * Methods
-- ** querySelector #method:querySelector#
    DOMDocumentFragmentQuerySelectorMethodInfo,
    dOMDocumentFragmentQuerySelector        ,


-- ** querySelectorAll #method:querySelectorAll#
    DOMDocumentFragmentQuerySelectorAllMethodInfo,
    dOMDocumentFragmentQuerySelectorAll     ,




    ) 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.WebKit.Interfaces.DOMEventTarget as WebKit.DOMEventTarget
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMElement as WebKit.DOMElement
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMNode as WebKit.DOMNode
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMNodeList as WebKit.DOMNodeList
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.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 WebKit.DOMNode.IsDOMNode DOMDocumentFragment
instance WebKit.DOMObject.IsDOMObject DOMDocumentFragment
instance GObject.Object.IsObject DOMDocumentFragment
instance WebKit.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 = WebKit.DOMEventTarget.DOMEventTargetAddEventListenerMethodInfo
    ResolveDOMDocumentFragmentMethod "appendChild" o = WebKit.DOMNode.DOMNodeAppendChildMethodInfo
    ResolveDOMDocumentFragmentMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMDocumentFragmentMethod "cloneNode" o = WebKit.DOMNode.DOMNodeCloneNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "compareDocumentPosition" o = WebKit.DOMNode.DOMNodeCompareDocumentPositionMethodInfo
    ResolveDOMDocumentFragmentMethod "contains" o = WebKit.DOMNode.DOMNodeContainsMethodInfo
    ResolveDOMDocumentFragmentMethod "dispatchEvent" o = WebKit.DOMNode.DOMNodeDispatchEventMethodInfo
    ResolveDOMDocumentFragmentMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMDocumentFragmentMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMDocumentFragmentMethod "hasAttributes" o = WebKit.DOMNode.DOMNodeHasAttributesMethodInfo
    ResolveDOMDocumentFragmentMethod "hasChildNodes" o = WebKit.DOMNode.DOMNodeHasChildNodesMethodInfo
    ResolveDOMDocumentFragmentMethod "insertBefore" o = WebKit.DOMNode.DOMNodeInsertBeforeMethodInfo
    ResolveDOMDocumentFragmentMethod "isDefaultNamespace" o = WebKit.DOMNode.DOMNodeIsDefaultNamespaceMethodInfo
    ResolveDOMDocumentFragmentMethod "isEqualNode" o = WebKit.DOMNode.DOMNodeIsEqualNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMDocumentFragmentMethod "isSameNode" o = WebKit.DOMNode.DOMNodeIsSameNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "isSupported" o = WebKit.DOMNode.DOMNodeIsSupportedMethodInfo
    ResolveDOMDocumentFragmentMethod "lookupNamespaceUri" o = WebKit.DOMNode.DOMNodeLookupNamespaceUriMethodInfo
    ResolveDOMDocumentFragmentMethod "lookupPrefix" o = WebKit.DOMNode.DOMNodeLookupPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "normalize" o = WebKit.DOMNode.DOMNodeNormalizeMethodInfo
    ResolveDOMDocumentFragmentMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMDocumentFragmentMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMDocumentFragmentMethod "querySelector" o = DOMDocumentFragmentQuerySelectorMethodInfo
    ResolveDOMDocumentFragmentMethod "querySelectorAll" o = DOMDocumentFragmentQuerySelectorAllMethodInfo
    ResolveDOMDocumentFragmentMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMDocumentFragmentMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMDocumentFragmentMethod "removeChild" o = WebKit.DOMNode.DOMNodeRemoveChildMethodInfo
    ResolveDOMDocumentFragmentMethod "removeEventListener" o = WebKit.DOMEventTarget.DOMEventTargetRemoveEventListenerMethodInfo
    ResolveDOMDocumentFragmentMethod "replaceChild" o = WebKit.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 "getAttributes" o = WebKit.DOMNode.DOMNodeGetAttributesMethodInfo
    ResolveDOMDocumentFragmentMethod "getBaseUri" o = WebKit.DOMNode.DOMNodeGetBaseUriMethodInfo
    ResolveDOMDocumentFragmentMethod "getChildNodes" o = WebKit.DOMNode.DOMNodeGetChildNodesMethodInfo
    ResolveDOMDocumentFragmentMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMDocumentFragmentMethod "getFirstChild" o = WebKit.DOMNode.DOMNodeGetFirstChildMethodInfo
    ResolveDOMDocumentFragmentMethod "getLastChild" o = WebKit.DOMNode.DOMNodeGetLastChildMethodInfo
    ResolveDOMDocumentFragmentMethod "getLocalName" o = WebKit.DOMNode.DOMNodeGetLocalNameMethodInfo
    ResolveDOMDocumentFragmentMethod "getNamespaceUri" o = WebKit.DOMNode.DOMNodeGetNamespaceUriMethodInfo
    ResolveDOMDocumentFragmentMethod "getNextSibling" o = WebKit.DOMNode.DOMNodeGetNextSiblingMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeName" o = WebKit.DOMNode.DOMNodeGetNodeNameMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeType" o = WebKit.DOMNode.DOMNodeGetNodeTypeMethodInfo
    ResolveDOMDocumentFragmentMethod "getNodeValue" o = WebKit.DOMNode.DOMNodeGetNodeValueMethodInfo
    ResolveDOMDocumentFragmentMethod "getOwnerDocument" o = WebKit.DOMNode.DOMNodeGetOwnerDocumentMethodInfo
    ResolveDOMDocumentFragmentMethod "getParentElement" o = WebKit.DOMNode.DOMNodeGetParentElementMethodInfo
    ResolveDOMDocumentFragmentMethod "getParentNode" o = WebKit.DOMNode.DOMNodeGetParentNodeMethodInfo
    ResolveDOMDocumentFragmentMethod "getPrefix" o = WebKit.DOMNode.DOMNodeGetPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "getPreviousSibling" o = WebKit.DOMNode.DOMNodeGetPreviousSiblingMethodInfo
    ResolveDOMDocumentFragmentMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMDocumentFragmentMethod "getTextContent" o = WebKit.DOMNode.DOMNodeGetTextContentMethodInfo
    ResolveDOMDocumentFragmentMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMDocumentFragmentMethod "setNodeValue" o = WebKit.DOMNode.DOMNodeSetNodeValueMethodInfo
    ResolveDOMDocumentFragmentMethod "setPrefix" o = WebKit.DOMNode.DOMNodeSetPrefixMethodInfo
    ResolveDOMDocumentFragmentMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMDocumentFragmentMethod "setTextContent" o = WebKit.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

instance O.HasAttributeList DOMDocumentFragment
type instance O.AttributeList DOMDocumentFragment = DOMDocumentFragmentAttributeList
type DOMDocumentFragmentAttributeList = ('[ '("baseUri", WebKit.DOMNode.DOMNodeBaseUriPropertyInfo), '("childNodes", WebKit.DOMNode.DOMNodeChildNodesPropertyInfo), '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("firstChild", WebKit.DOMNode.DOMNodeFirstChildPropertyInfo), '("lastChild", WebKit.DOMNode.DOMNodeLastChildPropertyInfo), '("localName", WebKit.DOMNode.DOMNodeLocalNamePropertyInfo), '("namespaceUri", WebKit.DOMNode.DOMNodeNamespaceUriPropertyInfo), '("nextSibling", WebKit.DOMNode.DOMNodeNextSiblingPropertyInfo), '("nodeName", WebKit.DOMNode.DOMNodeNodeNamePropertyInfo), '("nodeType", WebKit.DOMNode.DOMNodeNodeTypePropertyInfo), '("nodeValue", WebKit.DOMNode.DOMNodeNodeValuePropertyInfo), '("ownerDocument", WebKit.DOMNode.DOMNodeOwnerDocumentPropertyInfo), '("parentElement", WebKit.DOMNode.DOMNodeParentElementPropertyInfo), '("parentNode", WebKit.DOMNode.DOMNodeParentNodePropertyInfo), '("prefix", WebKit.DOMNode.DOMNodePrefixPropertyInfo), '("previousSibling", WebKit.DOMNode.DOMNodePreviousSiblingPropertyInfo), '("textContent", WebKit.DOMNode.DOMNodeTextContentPropertyInfo)] :: [(Symbol, *)])

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

-- method DOMDocumentFragment::query_selector
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDocumentFragment"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDocumentFragment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selectors", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #gchar", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit", name = "DOMElement"}))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_document_fragment_query_selector" webkit_dom_document_fragment_query_selector :: 
    Ptr DOMDocumentFragment ->              -- self : TInterface (Name {namespace = "WebKit", name = "DOMDocumentFragment"})
    CString ->                              -- selectors : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr WebKit.DOMElement.DOMElement)

{- |
/No description available in the introspection data./
-}
dOMDocumentFragmentQuerySelector ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDocumentFragment a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDocumentFragment.DOMDocumentFragment' -}
    -> T.Text
    {- ^ /@selectors@/: A @/gchar/@ -}
    -> m WebKit.DOMElement.DOMElement
    {- ^ __Returns:__ A 'GI.WebKit.Objects.DOMElement.DOMElement' /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMDocumentFragmentQuerySelector self selectors = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    selectors' <- textToCString selectors
    onException (do
        result <- propagateGError $ webkit_dom_document_fragment_query_selector self' selectors'
        checkUnexpectedReturnNULL "dOMDocumentFragmentQuerySelector" result
        result' <- (newObject WebKit.DOMElement.DOMElement) result
        touchManagedPtr self
        freeMem selectors'
        return result'
     ) (do
        freeMem selectors'
     )

data DOMDocumentFragmentQuerySelectorMethodInfo
instance (signature ~ (T.Text -> m WebKit.DOMElement.DOMElement), MonadIO m, IsDOMDocumentFragment a) => O.MethodInfo DOMDocumentFragmentQuerySelectorMethodInfo a signature where
    overloadedMethod _ = dOMDocumentFragmentQuerySelector

-- method DOMDocumentFragment::query_selector_all
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDocumentFragment"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDocumentFragment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selectors", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #gchar", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit", name = "DOMNodeList"}))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_document_fragment_query_selector_all" webkit_dom_document_fragment_query_selector_all :: 
    Ptr DOMDocumentFragment ->              -- self : TInterface (Name {namespace = "WebKit", name = "DOMDocumentFragment"})
    CString ->                              -- selectors : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr WebKit.DOMNodeList.DOMNodeList)

{- |
/No description available in the introspection data./
-}
dOMDocumentFragmentQuerySelectorAll ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDocumentFragment a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDocumentFragment.DOMDocumentFragment' -}
    -> T.Text
    {- ^ /@selectors@/: A @/gchar/@ -}
    -> m WebKit.DOMNodeList.DOMNodeList
    {- ^ __Returns:__ A 'GI.WebKit.Objects.DOMNodeList.DOMNodeList' /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMDocumentFragmentQuerySelectorAll self selectors = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    selectors' <- textToCString selectors
    onException (do
        result <- propagateGError $ webkit_dom_document_fragment_query_selector_all self' selectors'
        checkUnexpectedReturnNULL "dOMDocumentFragmentQuerySelectorAll" result
        result' <- (wrapObject WebKit.DOMNodeList.DOMNodeList) result
        touchManagedPtr self
        freeMem selectors'
        return result'
     ) (do
        freeMem selectors'
     )

data DOMDocumentFragmentQuerySelectorAllMethodInfo
instance (signature ~ (T.Text -> m WebKit.DOMNodeList.DOMNodeList), MonadIO m, IsDOMDocumentFragment a) => O.MethodInfo DOMDocumentFragmentQuerySelectorAllMethodInfo a signature where
    overloadedMethod _ = dOMDocumentFragmentQuerySelectorAll