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

-- * Exported types
    DOMCSSValue(..)                         ,
    IsDOMCSSValue                           ,
    toDOMCSSValue                           ,
    noDOMCSSValue                           ,


 -- * Methods
-- ** getCssText #method:getCssText#
    DOMCSSValueGetCssTextMethodInfo         ,
    dOMCSSValueGetCssText                   ,


-- ** getCssValueType #method:getCssValueType#
    DOMCSSValueGetCssValueTypeMethodInfo    ,
    dOMCSSValueGetCssValueType              ,


-- ** setCssText #method:setCssText#
    DOMCSSValueSetCssTextMethodInfo         ,
    dOMCSSValueSetCssText                   ,




 -- * Properties
-- ** cssText #attr:cssText#
    DOMCSSValueCssTextPropertyInfo          ,
    clearDOMCSSValueCssText                 ,
    constructDOMCSSValueCssText             ,
    dOMCSSValueCssText                      ,
    getDOMCSSValueCssText                   ,
    setDOMCSSValueCssText                   ,


-- ** cssValueType #attr:cssValueType#
    DOMCSSValueCssValueTypePropertyInfo     ,
    dOMCSSValueCssValueType                 ,
    getDOMCSSValueCssValueType              ,




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

newtype DOMCSSValue = DOMCSSValue (ManagedPtr DOMCSSValue)
foreign import ccall "webkit_dom_css_value_get_type"
    c_webkit_dom_css_value_get_type :: IO GType

instance GObject DOMCSSValue where
    gobjectType _ = c_webkit_dom_css_value_get_type
    

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

toDOMCSSValue :: IsDOMCSSValue o => o -> IO DOMCSSValue
toDOMCSSValue = unsafeCastTo DOMCSSValue

noDOMCSSValue :: Maybe DOMCSSValue
noDOMCSSValue = Nothing

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

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

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

-- VVV Prop "css-text"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getDOMCSSValueCssText :: (MonadIO m, IsDOMCSSValue o) => o -> m (Maybe T.Text)
getDOMCSSValueCssText obj = liftIO $ getObjectPropertyString obj "css-text"

setDOMCSSValueCssText :: (MonadIO m, IsDOMCSSValue o) => o -> T.Text -> m ()
setDOMCSSValueCssText obj val = liftIO $ setObjectPropertyString obj "css-text" (Just val)

constructDOMCSSValueCssText :: (IsDOMCSSValue o) => T.Text -> IO (GValueConstruct o)
constructDOMCSSValueCssText val = constructObjectPropertyString "css-text" (Just val)

clearDOMCSSValueCssText :: (MonadIO m, IsDOMCSSValue o) => o -> m ()
clearDOMCSSValueCssText obj = liftIO $ setObjectPropertyString obj "css-text" (Nothing :: Maybe T.Text)

data DOMCSSValueCssTextPropertyInfo
instance AttrInfo DOMCSSValueCssTextPropertyInfo where
    type AttrAllowedOps DOMCSSValueCssTextPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMCSSValueCssTextPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMCSSValueCssTextPropertyInfo = IsDOMCSSValue
    type AttrGetType DOMCSSValueCssTextPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMCSSValueCssTextPropertyInfo = "css-text"
    type AttrOrigin DOMCSSValueCssTextPropertyInfo = DOMCSSValue
    attrGet _ = getDOMCSSValueCssText
    attrSet _ = setDOMCSSValueCssText
    attrConstruct _ = constructDOMCSSValueCssText
    attrClear _ = clearDOMCSSValueCssText

-- VVV Prop "css-value-type"
   -- Type: TBasicType TUInt
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMCSSValueCssValueType :: (MonadIO m, IsDOMCSSValue o) => o -> m Word32
getDOMCSSValueCssValueType obj = liftIO $ getObjectPropertyUInt32 obj "css-value-type"

data DOMCSSValueCssValueTypePropertyInfo
instance AttrInfo DOMCSSValueCssValueTypePropertyInfo where
    type AttrAllowedOps DOMCSSValueCssValueTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMCSSValueCssValueTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMCSSValueCssValueTypePropertyInfo = IsDOMCSSValue
    type AttrGetType DOMCSSValueCssValueTypePropertyInfo = Word32
    type AttrLabel DOMCSSValueCssValueTypePropertyInfo = "css-value-type"
    type AttrOrigin DOMCSSValueCssValueTypePropertyInfo = DOMCSSValue
    attrGet _ = getDOMCSSValueCssValueType
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMCSSValue
type instance O.AttributeList DOMCSSValue = DOMCSSValueAttributeList
type DOMCSSValueAttributeList = ('[ '("coreObject", WebKit2WebExtension.DOMObject.DOMObjectCoreObjectPropertyInfo), '("cssText", DOMCSSValueCssTextPropertyInfo), '("cssValueType", DOMCSSValueCssValueTypePropertyInfo)] :: [(Symbol, *)])

dOMCSSValueCssText :: AttrLabelProxy "cssText"
dOMCSSValueCssText = AttrLabelProxy

dOMCSSValueCssValueType :: AttrLabelProxy "cssValueType"
dOMCSSValueCssValueType = AttrLabelProxy

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

-- method DOMCSSValue::get_css_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMCSSValue"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMCSSValue", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_css_value_get_css_text" webkit_dom_css_value_get_css_text :: 
    Ptr DOMCSSValue ->                      -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMCSSValue"})
    IO CString

{- |
/No description available in the introspection data./
-}
dOMCSSValueGetCssText ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMCSSValue a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMCSSValue.DOMCSSValue' -}
    -> m T.Text
    {- ^ __Returns:__ A @/gchar/@ -}
dOMCSSValueGetCssText self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_css_value_get_css_text self'
    checkUnexpectedReturnNULL "dOMCSSValueGetCssText" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr self
    return result'

data DOMCSSValueGetCssTextMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDOMCSSValue a) => O.MethodInfo DOMCSSValueGetCssTextMethodInfo a signature where
    overloadedMethod _ = dOMCSSValueGetCssText

-- method DOMCSSValue::get_css_value_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMCSSValue"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMCSSValue", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt16)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_dom_css_value_get_css_value_type" webkit_dom_css_value_get_css_value_type :: 
    Ptr DOMCSSValue ->                      -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMCSSValue"})
    IO Word16

{- |
/No description available in the introspection data./
-}
dOMCSSValueGetCssValueType ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMCSSValue a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMCSSValue.DOMCSSValue' -}
    -> m Word16
    {- ^ __Returns:__ A @/gushort/@ -}
dOMCSSValueGetCssValueType self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_css_value_get_css_value_type self'
    touchManagedPtr self
    return result

data DOMCSSValueGetCssValueTypeMethodInfo
instance (signature ~ (m Word16), MonadIO m, IsDOMCSSValue a) => O.MethodInfo DOMCSSValueGetCssValueTypeMethodInfo a signature where
    overloadedMethod _ = dOMCSSValueGetCssValueType

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

foreign import ccall "webkit_dom_css_value_set_css_text" webkit_dom_css_value_set_css_text :: 
    Ptr DOMCSSValue ->                      -- self : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMCSSValue"})
    CString ->                              -- value : TBasicType TUTF8
    Ptr (Ptr GError) ->                     -- error
    IO ()

{- |
/No description available in the introspection data./
-}
dOMCSSValueSetCssText ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMCSSValue a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit2WebExtension.Objects.DOMCSSValue.DOMCSSValue' -}
    -> T.Text
    {- ^ /@value@/: A @/gchar/@ -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
dOMCSSValueSetCssText self value = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    value' <- textToCString value
    onException (do
        propagateGError $ webkit_dom_css_value_set_css_text self' value'
        touchManagedPtr self
        freeMem value'
        return ()
     ) (do
        freeMem value'
     )

data DOMCSSValueSetCssTextMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsDOMCSSValue a) => O.MethodInfo DOMCSSValueSetCssTextMethodInfo a signature where
    overloadedMethod _ = dOMCSSValueSetCssText