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

-- * Exported types
    DOMStorageQuota(..)                     ,
    IsDOMStorageQuota                       ,
    toDOMStorageQuota                       ,
    noDOMStorageQuota                       ,


    ) 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 DOMStorageQuota = DOMStorageQuota (ManagedPtr DOMStorageQuota)
foreign import ccall "webkit_dom_storage_quota_get_type"
    c_webkit_dom_storage_quota_get_type :: IO GType

instance GObject DOMStorageQuota where
    gobjectType _ = c_webkit_dom_storage_quota_get_type
    

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

toDOMStorageQuota :: IsDOMStorageQuota o => o -> IO DOMStorageQuota
toDOMStorageQuota = unsafeCastTo DOMStorageQuota

noDOMStorageQuota :: Maybe DOMStorageQuota
noDOMStorageQuota = Nothing

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

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

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

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

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