{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)

/No description available in the introspection data./
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.WebKit2WebExtension.Objects.WebHitTestResult
    (

-- * Exported types
    WebHitTestResult(..)                    ,
    IsWebHitTestResult                      ,
    toWebHitTestResult                      ,
    noWebHitTestResult                      ,


 -- * Methods
-- ** getNode #method:getNode#

#if ENABLE_OVERLOADING
    WebHitTestResultGetNodeMethodInfo       ,
#endif
    webHitTestResultGetNode                 ,




 -- * Properties
-- ** node #attr:node#
{- | The 'GI.WebKit2WebExtension.Objects.DOMNode.DOMNode'
-}
#if ENABLE_OVERLOADING
    WebHitTestResultNodePropertyInfo        ,
#endif
    constructWebHitTestResultNode           ,
    getWebHitTestResultNode                 ,
#if ENABLE_OVERLOADING
    webHitTestResultNode                    ,
#endif




    ) 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.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
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 GHC.OverloadedLabels as OL

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMNode as WebKit2WebExtension.DOMNode
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.HitTestResult as WebKit2WebExtension.HitTestResult

-- | Memory-managed wrapper type.
newtype WebHitTestResult = WebHitTestResult (ManagedPtr WebHitTestResult)
foreign import ccall "webkit_web_hit_test_result_get_type"
    c_webkit_web_hit_test_result_get_type :: IO GType

instance GObject WebHitTestResult where
    gobjectType = c_webkit_web_hit_test_result_get_type


-- | Type class for types which can be safely cast to `WebHitTestResult`, for instance with `toWebHitTestResult`.
class (GObject o, O.IsDescendantOf WebHitTestResult o) => IsWebHitTestResult o
instance (GObject o, O.IsDescendantOf WebHitTestResult o) => IsWebHitTestResult o

instance O.HasParentTypes WebHitTestResult
type instance O.ParentTypes WebHitTestResult = '[WebKit2WebExtension.HitTestResult.HitTestResult, GObject.Object.Object]

-- | Cast to `WebHitTestResult`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toWebHitTestResult :: (MonadIO m, IsWebHitTestResult o) => o -> m WebHitTestResult
toWebHitTestResult = liftIO . unsafeCastTo WebHitTestResult

-- | A convenience alias for `Nothing` :: `Maybe` `WebHitTestResult`.
noWebHitTestResult :: Maybe WebHitTestResult
noWebHitTestResult = Nothing

#if ENABLE_OVERLOADING
type family ResolveWebHitTestResultMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebHitTestResultMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebHitTestResultMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebHitTestResultMethod "contextIsEditable" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsEditableMethodInfo
    ResolveWebHitTestResultMethod "contextIsImage" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsImageMethodInfo
    ResolveWebHitTestResultMethod "contextIsLink" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsLinkMethodInfo
    ResolveWebHitTestResultMethod "contextIsMedia" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsMediaMethodInfo
    ResolveWebHitTestResultMethod "contextIsScrollbar" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsScrollbarMethodInfo
    ResolveWebHitTestResultMethod "contextIsSelection" o = WebKit2WebExtension.HitTestResult.HitTestResultContextIsSelectionMethodInfo
    ResolveWebHitTestResultMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebHitTestResultMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebHitTestResultMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveWebHitTestResultMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebHitTestResultMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebHitTestResultMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebHitTestResultMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebHitTestResultMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebHitTestResultMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebHitTestResultMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebHitTestResultMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebHitTestResultMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebHitTestResultMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebHitTestResultMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebHitTestResultMethod "getContext" o = WebKit2WebExtension.HitTestResult.HitTestResultGetContextMethodInfo
    ResolveWebHitTestResultMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveWebHitTestResultMethod "getImageUri" o = WebKit2WebExtension.HitTestResult.HitTestResultGetImageUriMethodInfo
    ResolveWebHitTestResultMethod "getLinkLabel" o = WebKit2WebExtension.HitTestResult.HitTestResultGetLinkLabelMethodInfo
    ResolveWebHitTestResultMethod "getLinkTitle" o = WebKit2WebExtension.HitTestResult.HitTestResultGetLinkTitleMethodInfo
    ResolveWebHitTestResultMethod "getLinkUri" o = WebKit2WebExtension.HitTestResult.HitTestResultGetLinkUriMethodInfo
    ResolveWebHitTestResultMethod "getMediaUri" o = WebKit2WebExtension.HitTestResult.HitTestResultGetMediaUriMethodInfo
    ResolveWebHitTestResultMethod "getNode" o = WebHitTestResultGetNodeMethodInfo
    ResolveWebHitTestResultMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebHitTestResultMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebHitTestResultMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebHitTestResultMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveWebHitTestResultMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebHitTestResultMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveWebHitTestResultMethod t WebHitTestResult, O.MethodInfo info WebHitTestResult p) => OL.IsLabel t (WebHitTestResult -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif

-- VVV Prop "node"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMNode"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just False,Nothing)

{- |
Get the value of the “@node@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' webHitTestResult #node
@
-}
getWebHitTestResultNode :: (MonadIO m, IsWebHitTestResult o) => o -> m WebKit2WebExtension.DOMNode.DOMNode
getWebHitTestResultNode obj = liftIO $ checkUnexpectedNothing "getWebHitTestResultNode" $ B.Properties.getObjectPropertyObject obj "node" WebKit2WebExtension.DOMNode.DOMNode

{- |
Construct a `GValueConstruct` with valid value for the “@node@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebHitTestResultNode :: (IsWebHitTestResult o, WebKit2WebExtension.DOMNode.IsDOMNode a) => a -> IO (GValueConstruct o)
constructWebHitTestResultNode val = B.Properties.constructObjectPropertyObject "node" (Just val)

#if ENABLE_OVERLOADING
data WebHitTestResultNodePropertyInfo
instance AttrInfo WebHitTestResultNodePropertyInfo where
    type AttrAllowedOps WebHitTestResultNodePropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebHitTestResultNodePropertyInfo = WebKit2WebExtension.DOMNode.IsDOMNode
    type AttrBaseTypeConstraint WebHitTestResultNodePropertyInfo = IsWebHitTestResult
    type AttrGetType WebHitTestResultNodePropertyInfo = WebKit2WebExtension.DOMNode.DOMNode
    type AttrLabel WebHitTestResultNodePropertyInfo = "node"
    type AttrOrigin WebHitTestResultNodePropertyInfo = WebHitTestResult
    attrGet _ = getWebHitTestResultNode
    attrSet _ = undefined
    attrConstruct _ = constructWebHitTestResultNode
    attrClear _ = undefined
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList WebHitTestResult
type instance O.AttributeList WebHitTestResult = WebHitTestResultAttributeList
type WebHitTestResultAttributeList = ('[ '("context", WebKit2WebExtension.HitTestResult.HitTestResultContextPropertyInfo), '("imageUri", WebKit2WebExtension.HitTestResult.HitTestResultImageUriPropertyInfo), '("linkLabel", WebKit2WebExtension.HitTestResult.HitTestResultLinkLabelPropertyInfo), '("linkTitle", WebKit2WebExtension.HitTestResult.HitTestResultLinkTitlePropertyInfo), '("linkUri", WebKit2WebExtension.HitTestResult.HitTestResultLinkUriPropertyInfo), '("mediaUri", WebKit2WebExtension.HitTestResult.HitTestResultMediaUriPropertyInfo), '("node", WebHitTestResultNodePropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
webHitTestResultNode :: AttrLabelProxy "node"
webHitTestResultNode = AttrLabelProxy

#endif

#if ENABLE_OVERLOADING
type instance O.SignalList WebHitTestResult = WebHitTestResultSignalList
type WebHitTestResultSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method WebHitTestResult::get_node
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "hit_test_result", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "WebHitTestResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebHitTestResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMNode"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_hit_test_result_get_node" webkit_web_hit_test_result_get_node ::
    Ptr WebHitTestResult ->                 -- hit_test_result : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebHitTestResult"})
    IO (Ptr WebKit2WebExtension.DOMNode.DOMNode)

{- |
Get the 'GI.WebKit2WebExtension.Objects.DOMNode.DOMNode' in the coordinates of the Hit Test.

/Since: 2.8/
-}
webHitTestResultGetNode ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebHitTestResult a) =>
    a
    {- ^ /@hitTestResult@/: a 'GI.WebKit2WebExtension.Objects.WebHitTestResult.WebHitTestResult' -}
    -> m WebKit2WebExtension.DOMNode.DOMNode
    {- ^ __Returns:__ a 'GI.WebKit2WebExtension.Objects.DOMNode.DOMNode' -}
webHitTestResultGetNode hitTestResult = liftIO $ do
    hitTestResult' <- unsafeManagedPtrCastPtr hitTestResult
    result <- webkit_web_hit_test_result_get_node hitTestResult'
    checkUnexpectedReturnNULL "webHitTestResultGetNode" result
    result' <- (newObject WebKit2WebExtension.DOMNode.DOMNode) result
    touchManagedPtr hitTestResult
    return result'

#if ENABLE_OVERLOADING
data WebHitTestResultGetNodeMethodInfo
instance (signature ~ (m WebKit2WebExtension.DOMNode.DOMNode), MonadIO m, IsWebHitTestResult a) => O.MethodInfo WebHitTestResultGetNodeMethodInfo a signature where
    overloadedMethod _ = webHitTestResultGetNode

#endif