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

-- * Exported types
    DOMStorageInfo(..)                      ,
    IsDOMStorageInfo                        ,
    toDOMStorageInfo                        ,
    noDOMStorageInfo                        ,


    ) 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 DOMStorageInfo = DOMStorageInfo (ManagedPtr DOMStorageInfo)
foreign import ccall "webkit_dom_storage_info_get_type"
    c_webkit_dom_storage_info_get_type :: IO GType

instance GObject DOMStorageInfo where
    gobjectType _ = c_webkit_dom_storage_info_get_type
    

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

toDOMStorageInfo :: IsDOMStorageInfo o => o -> IO DOMStorageInfo
toDOMStorageInfo = unsafeCastTo DOMStorageInfo

noDOMStorageInfo :: Maybe DOMStorageInfo
noDOMStorageInfo = Nothing

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

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

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

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

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