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

-- * Exported types
    DOMDOMStringMap(..)                     ,
    IsDOMDOMStringMap                       ,
    toDOMDOMStringMap                       ,
    noDOMDOMStringMap                       ,


    ) 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.Objects.DOMObject as WebKit.DOMObject

newtype DOMDOMStringMap = DOMDOMStringMap (ManagedPtr DOMDOMStringMap)
foreign import ccall "webkit_dom_dom_string_map_get_type"
    c_webkit_dom_dom_string_map_get_type :: IO GType

instance GObject DOMDOMStringMap where
    gobjectType _ = c_webkit_dom_dom_string_map_get_type
    

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

toDOMDOMStringMap :: IsDOMDOMStringMap o => o -> IO DOMDOMStringMap
toDOMDOMStringMap = unsafeCastTo DOMDOMStringMap

noDOMDOMStringMap :: Maybe DOMDOMStringMap
noDOMDOMStringMap = Nothing

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

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

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

instance O.HasAttributeList DOMDOMStringMap
type instance O.AttributeList DOMDOMStringMap = DOMDOMStringMapAttributeList
type DOMDOMStringMapAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo)] :: [(Symbol, *)])

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