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

-- * Exported types
    DOMDOMImplementation(..)                ,
    IsDOMDOMImplementation                  ,
    toDOMDOMImplementation                  ,
    noDOMDOMImplementation                  ,


 -- * Methods
-- ** createCssStyleSheet #method:createCssStyleSheet#
    DOMDOMImplementationCreateCssStyleSheetMethodInfo,
    dOMDOMImplementationCreateCssStyleSheet ,


-- ** createDocument #method:createDocument#
    DOMDOMImplementationCreateDocumentMethodInfo,
    dOMDOMImplementationCreateDocument      ,


-- ** createDocumentType #method:createDocumentType#
    DOMDOMImplementationCreateDocumentTypeMethodInfo,
    dOMDOMImplementationCreateDocumentType  ,


-- ** createHtmlDocument #method:createHtmlDocument#
    DOMDOMImplementationCreateHtmlDocumentMethodInfo,
    dOMDOMImplementationCreateHtmlDocument  ,


-- ** hasFeature #method:hasFeature#
    DOMDOMImplementationHasFeatureMethodInfo,
    dOMDOMImplementationHasFeature          ,




    ) 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.Objects.DOMCSSStyleSheet as WebKit2WebExtension.DOMCSSStyleSheet
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMDocument as WebKit2WebExtension.DOMDocument
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMDocumentType as WebKit2WebExtension.DOMDocumentType
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMHTMLDocument as WebKit2WebExtension.DOMHTMLDocument
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMObject as WebKit2WebExtension.DOMObject

newtype DOMDOMImplementation = DOMDOMImplementation (ManagedPtr DOMDOMImplementation)
foreign import ccall "webkit_dom_dom_implementation_get_type"
    c_webkit_dom_dom_implementation_get_type :: IO GType

instance GObject DOMDOMImplementation where
    gobjectType _ = c_webkit_dom_dom_implementation_get_type
    

class GObject o => IsDOMDOMImplementation o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMDOMImplementation a) =>
    IsDOMDOMImplementation a
#endif
instance IsDOMDOMImplementation DOMDOMImplementation
instance WebKit2WebExtension.DOMObject.IsDOMObject DOMDOMImplementation
instance GObject.Object.IsObject DOMDOMImplementation

toDOMDOMImplementation :: IsDOMDOMImplementation o => o -> IO DOMDOMImplementation
toDOMDOMImplementation = unsafeCastTo DOMDOMImplementation

noDOMDOMImplementation :: Maybe DOMDOMImplementation
noDOMDOMImplementation = Nothing

type family ResolveDOMDOMImplementationMethod (t :: Symbol) (o :: *) :: * where
    ResolveDOMDOMImplementationMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDOMDOMImplementationMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDOMDOMImplementationMethod "createCssStyleSheet" o = DOMDOMImplementationCreateCssStyleSheetMethodInfo
    ResolveDOMDOMImplementationMethod "createDocument" o = DOMDOMImplementationCreateDocumentMethodInfo
    ResolveDOMDOMImplementationMethod "createDocumentType" o = DOMDOMImplementationCreateDocumentTypeMethodInfo
    ResolveDOMDOMImplementationMethod "createHtmlDocument" o = DOMDOMImplementationCreateHtmlDocumentMethodInfo
    ResolveDOMDOMImplementationMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDOMDOMImplementationMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDOMDOMImplementationMethod "hasFeature" o = DOMDOMImplementationHasFeatureMethodInfo
    ResolveDOMDOMImplementationMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDOMDOMImplementationMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDOMDOMImplementationMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDOMDOMImplementationMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDOMDOMImplementationMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDOMDOMImplementationMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveDOMDOMImplementationMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveDOMDOMImplementationMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDOMDOMImplementationMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDOMDOMImplementationMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDOMDOMImplementationMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDOMDOMImplementationMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDOMDOMImplementationMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDOMDOMImplementationMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDOMDOMImplementationMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDOMDOMImplementationMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDOMDOMImplementationMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDOMDOMImplementationMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDOMDOMImplementationMethod l o = O.MethodResolutionFailed l o

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

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

instance O.HasAttributeList DOMDOMImplementation
type instance O.AttributeList DOMDOMImplementation = DOMDOMImplementationAttributeList
type DOMDOMImplementationAttributeList = ('[ '("coreObject", WebKit2WebExtension.DOMObject.DOMObjectCoreObjectPropertyInfo)] :: [(Symbol, *)])

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

-- method DOMDOMImplementation::create_css_style_sheet
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMImplementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "title", 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},Arg {argCName = "media", 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 = "WebKit2WebExtension", name = "DOMCSSStyleSheet"}))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_dom_implementation_create_css_style_sheet" webkit_dom_dom_implementation_create_css_style_sheet :: 
    Ptr DOMDOMImplementation ->             -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"})
    CString ->                              -- title : TBasicType TUTF8
    CString ->                              -- media : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr WebKit2WebExtension.DOMCSSStyleSheet.DOMCSSStyleSheet)

{- |
/No description available in the introspection data./
-}
dOMDOMImplementationCreateCssStyleSheet ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMImplementation a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMDOMImplementation.DOMDOMImplementation' -}
    -> T.Text
    {- ^ /@title@/: A @/gchar/@ -}
    -> T.Text
    {- ^ /@media@/: A @/gchar/@ -}
    -> m WebKit2WebExtension.DOMCSSStyleSheet.DOMCSSStyleSheet
    {- ^ __Returns:__ A 'GI.WebKit2WebExtension.Objects.DOMCSSStyleSheet.DOMCSSStyleSheet' /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMDOMImplementationCreateCssStyleSheet self title media = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    title' <- textToCString title
    media' <- textToCString media
    onException (do
        result <- propagateGError $ webkit_dom_dom_implementation_create_css_style_sheet self' title' media'
        checkUnexpectedReturnNULL "dOMDOMImplementationCreateCssStyleSheet" result
        result' <- (wrapObject WebKit2WebExtension.DOMCSSStyleSheet.DOMCSSStyleSheet) result
        touchManagedPtr self
        freeMem title'
        freeMem media'
        return result'
     ) (do
        freeMem title'
        freeMem media'
     )

data DOMDOMImplementationCreateCssStyleSheetMethodInfo
instance (signature ~ (T.Text -> T.Text -> m WebKit2WebExtension.DOMCSSStyleSheet.DOMCSSStyleSheet), MonadIO m, IsDOMDOMImplementation a) => O.MethodInfo DOMDOMImplementationCreateCssStyleSheetMethodInfo a signature where
    overloadedMethod _ = dOMDOMImplementationCreateCssStyleSheet

-- method DOMDOMImplementation::create_document
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMImplementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "namespaceURI", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #gchar", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "qualifiedName", 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},Arg {argCName = "doctype", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDocumentType"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDocumentType", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDocument"}))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_dom_implementation_create_document" webkit_dom_dom_implementation_create_document :: 
    Ptr DOMDOMImplementation ->             -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"})
    CString ->                              -- namespaceURI : TBasicType TUTF8
    CString ->                              -- qualifiedName : TBasicType TUTF8
    Ptr WebKit2WebExtension.DOMDocumentType.DOMDocumentType -> -- doctype : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDocumentType"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr WebKit2WebExtension.DOMDocument.DOMDocument)

{- |
/No description available in the introspection data./
-}
dOMDOMImplementationCreateDocument ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMImplementation a, WebKit2WebExtension.DOMDocumentType.IsDOMDocumentType b) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMDOMImplementation.DOMDOMImplementation' -}
    -> Maybe (T.Text)
    {- ^ /@namespaceURI@/: A @/gchar/@ -}
    -> T.Text
    {- ^ /@qualifiedName@/: A @/gchar/@ -}
    -> Maybe (b)
    {- ^ /@doctype@/: A 'GI.WebKit2WebExtension.Objects.DOMDocumentType.DOMDocumentType' -}
    -> m WebKit2WebExtension.DOMDocument.DOMDocument
    {- ^ __Returns:__ A 'GI.WebKit2WebExtension.Objects.DOMDocument.DOMDocument' /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMDOMImplementationCreateDocument self namespaceURI qualifiedName doctype = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    maybeNamespaceURI <- case namespaceURI of
        Nothing -> return nullPtr
        Just jNamespaceURI -> do
            jNamespaceURI' <- textToCString jNamespaceURI
            return jNamespaceURI'
    qualifiedName' <- textToCString qualifiedName
    maybeDoctype <- case doctype of
        Nothing -> return nullPtr
        Just jDoctype -> do
            jDoctype' <- unsafeManagedPtrCastPtr jDoctype
            return jDoctype'
    onException (do
        result <- propagateGError $ webkit_dom_dom_implementation_create_document self' maybeNamespaceURI qualifiedName' maybeDoctype
        checkUnexpectedReturnNULL "dOMDOMImplementationCreateDocument" result
        result' <- (newObject WebKit2WebExtension.DOMDocument.DOMDocument) result
        touchManagedPtr self
        whenJust doctype touchManagedPtr
        freeMem maybeNamespaceURI
        freeMem qualifiedName'
        return result'
     ) (do
        freeMem maybeNamespaceURI
        freeMem qualifiedName'
     )

data DOMDOMImplementationCreateDocumentMethodInfo
instance (signature ~ (Maybe (T.Text) -> T.Text -> Maybe (b) -> m WebKit2WebExtension.DOMDocument.DOMDocument), MonadIO m, IsDOMDOMImplementation a, WebKit2WebExtension.DOMDocumentType.IsDOMDocumentType b) => O.MethodInfo DOMDOMImplementationCreateDocumentMethodInfo a signature where
    overloadedMethod _ = dOMDOMImplementationCreateDocument

-- method DOMDOMImplementation::create_document_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMImplementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "qualifiedName", 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},Arg {argCName = "publicId", 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},Arg {argCName = "systemId", 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 = "WebKit2WebExtension", name = "DOMDocumentType"}))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_dom_dom_implementation_create_document_type" webkit_dom_dom_implementation_create_document_type :: 
    Ptr DOMDOMImplementation ->             -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"})
    CString ->                              -- qualifiedName : TBasicType TUTF8
    CString ->                              -- publicId : TBasicType TUTF8
    CString ->                              -- systemId : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr WebKit2WebExtension.DOMDocumentType.DOMDocumentType)

{- |
/No description available in the introspection data./
-}
dOMDOMImplementationCreateDocumentType ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMImplementation a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMDOMImplementation.DOMDOMImplementation' -}
    -> T.Text
    {- ^ /@qualifiedName@/: A @/gchar/@ -}
    -> T.Text
    {- ^ /@publicId@/: A @/gchar/@ -}
    -> T.Text
    {- ^ /@systemId@/: A @/gchar/@ -}
    -> m WebKit2WebExtension.DOMDocumentType.DOMDocumentType
    {- ^ __Returns:__ A 'GI.WebKit2WebExtension.Objects.DOMDocumentType.DOMDocumentType' /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMDOMImplementationCreateDocumentType self qualifiedName publicId systemId = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    qualifiedName' <- textToCString qualifiedName
    publicId' <- textToCString publicId
    systemId' <- textToCString systemId
    onException (do
        result <- propagateGError $ webkit_dom_dom_implementation_create_document_type self' qualifiedName' publicId' systemId'
        checkUnexpectedReturnNULL "dOMDOMImplementationCreateDocumentType" result
        result' <- (newObject WebKit2WebExtension.DOMDocumentType.DOMDocumentType) result
        touchManagedPtr self
        freeMem qualifiedName'
        freeMem publicId'
        freeMem systemId'
        return result'
     ) (do
        freeMem qualifiedName'
        freeMem publicId'
        freeMem systemId'
     )

data DOMDOMImplementationCreateDocumentTypeMethodInfo
instance (signature ~ (T.Text -> T.Text -> T.Text -> m WebKit2WebExtension.DOMDocumentType.DOMDocumentType), MonadIO m, IsDOMDOMImplementation a) => O.MethodInfo DOMDOMImplementationCreateDocumentTypeMethodInfo a signature where
    overloadedMethod _ = dOMDOMImplementationCreateDocumentType

-- method DOMDOMImplementation::create_html_document
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMImplementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "title", 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 = "WebKit2WebExtension", name = "DOMHTMLDocument"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_implementation_create_html_document" webkit_dom_dom_implementation_create_html_document :: 
    Ptr DOMDOMImplementation ->             -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"})
    CString ->                              -- title : TBasicType TUTF8
    IO (Ptr WebKit2WebExtension.DOMHTMLDocument.DOMHTMLDocument)

{- |
/No description available in the introspection data./
-}
dOMDOMImplementationCreateHtmlDocument ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMImplementation a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMDOMImplementation.DOMDOMImplementation' -}
    -> T.Text
    {- ^ /@title@/: A @/gchar/@ -}
    -> m WebKit2WebExtension.DOMHTMLDocument.DOMHTMLDocument
    {- ^ __Returns:__ A 'GI.WebKit2WebExtension.Objects.DOMHTMLDocument.DOMHTMLDocument' -}
dOMDOMImplementationCreateHtmlDocument self title = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    title' <- textToCString title
    result <- webkit_dom_dom_implementation_create_html_document self' title'
    checkUnexpectedReturnNULL "dOMDOMImplementationCreateHtmlDocument" result
    result' <- (newObject WebKit2WebExtension.DOMHTMLDocument.DOMHTMLDocument) result
    touchManagedPtr self
    freeMem title'
    return result'

data DOMDOMImplementationCreateHtmlDocumentMethodInfo
instance (signature ~ (T.Text -> m WebKit2WebExtension.DOMHTMLDocument.DOMHTMLDocument), MonadIO m, IsDOMDOMImplementation a) => O.MethodInfo DOMDOMImplementationCreateHtmlDocumentMethodInfo a signature where
    overloadedMethod _ = dOMDOMImplementationCreateHtmlDocument

-- method DOMDOMImplementation::has_feature
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMImplementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "feature", 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},Arg {argCName = "version", 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 (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_dom_implementation_has_feature" webkit_dom_dom_implementation_has_feature :: 
    Ptr DOMDOMImplementation ->             -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMImplementation"})
    CString ->                              -- feature : TBasicType TUTF8
    CString ->                              -- version : TBasicType TUTF8
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMDOMImplementationHasFeature ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMImplementation a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMDOMImplementation.DOMDOMImplementation' -}
    -> T.Text
    {- ^ /@feature@/: A @/gchar/@ -}
    -> T.Text
    {- ^ /@version@/: A @/gchar/@ -}
    -> m Bool
    {- ^ __Returns:__ A 'Bool' -}
dOMDOMImplementationHasFeature self feature version = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    feature' <- textToCString feature
    version' <- textToCString version
    result <- webkit_dom_dom_implementation_has_feature self' feature' version'
    let result' = (/= 0) result
    touchManagedPtr self
    freeMem feature'
    freeMem version'
    return result'

data DOMDOMImplementationHasFeatureMethodInfo
instance (signature ~ (T.Text -> T.Text -> m Bool), MonadIO m, IsDOMDOMImplementation a) => O.MethodInfo DOMDOMImplementationHasFeatureMethodInfo a signature where
    overloadedMethod _ = dOMDOMImplementationHasFeature