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

-- * Exported types
    DOMDOMMimeType(..)                      ,
    IsDOMDOMMimeType                        ,
    toDOMDOMMimeType                        ,
    noDOMDOMMimeType                        ,


 -- * Methods
-- ** getDescription #method:getDescription#
    DOMDOMMimeTypeGetDescriptionMethodInfo  ,
    dOMDOMMimeTypeGetDescription            ,


-- ** getEnabledPlugin #method:getEnabledPlugin#
    DOMDOMMimeTypeGetEnabledPluginMethodInfo,
    dOMDOMMimeTypeGetEnabledPlugin          ,


-- ** getSuffixes #method:getSuffixes#
    DOMDOMMimeTypeGetSuffixesMethodInfo     ,
    dOMDOMMimeTypeGetSuffixes               ,




 -- * Properties
-- ** description #attr:description#
    DOMDOMMimeTypeDescriptionPropertyInfo   ,
    dOMDOMMimeTypeDescription               ,
    getDOMDOMMimeTypeDescription            ,


-- ** enabledPlugin #attr:enabledPlugin#
    DOMDOMMimeTypeEnabledPluginPropertyInfo ,
    dOMDOMMimeTypeEnabledPlugin             ,
    getDOMDOMMimeTypeEnabledPlugin          ,


-- ** suffixes #attr:suffixes#
    DOMDOMMimeTypeSuffixesPropertyInfo      ,
    dOMDOMMimeTypeSuffixes                  ,
    getDOMDOMMimeTypeSuffixes               ,


-- ** type #attr:type#
    DOMDOMMimeTypeTypePropertyInfo          ,
    dOMDOMMimeTypeType                      ,
    getDOMDOMMimeTypeType                   ,




    ) 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.DOMDOMPlugin as WebKit.DOMDOMPlugin
import {-# SOURCE #-} qualified GI.WebKit.Objects.DOMObject as WebKit.DOMObject

newtype DOMDOMMimeType = DOMDOMMimeType (ManagedPtr DOMDOMMimeType)
foreign import ccall "webkit_dom_dom_mime_type_get_type"
    c_webkit_dom_dom_mime_type_get_type :: IO GType

instance GObject DOMDOMMimeType where
    gobjectType _ = c_webkit_dom_dom_mime_type_get_type
    

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

toDOMDOMMimeType :: IsDOMDOMMimeType o => o -> IO DOMDOMMimeType
toDOMDOMMimeType = unsafeCastTo DOMDOMMimeType

noDOMDOMMimeType :: Maybe DOMDOMMimeType
noDOMDOMMimeType = Nothing

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

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

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

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

getDOMDOMMimeTypeDescription :: (MonadIO m, IsDOMDOMMimeType o) => o -> m (Maybe T.Text)
getDOMDOMMimeTypeDescription obj = liftIO $ getObjectPropertyString obj "description"

data DOMDOMMimeTypeDescriptionPropertyInfo
instance AttrInfo DOMDOMMimeTypeDescriptionPropertyInfo where
    type AttrAllowedOps DOMDOMMimeTypeDescriptionPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMMimeTypeDescriptionPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMMimeTypeDescriptionPropertyInfo = IsDOMDOMMimeType
    type AttrGetType DOMDOMMimeTypeDescriptionPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMMimeTypeDescriptionPropertyInfo = "description"
    type AttrOrigin DOMDOMMimeTypeDescriptionPropertyInfo = DOMDOMMimeType
    attrGet _ = getDOMDOMMimeTypeDescription
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "enabled-plugin"
   -- Type: TInterface (Name {namespace = "WebKit", name = "DOMDOMPlugin"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMMimeTypeEnabledPlugin :: (MonadIO m, IsDOMDOMMimeType o) => o -> m (Maybe WebKit.DOMDOMPlugin.DOMDOMPlugin)
getDOMDOMMimeTypeEnabledPlugin obj = liftIO $ getObjectPropertyObject obj "enabled-plugin" WebKit.DOMDOMPlugin.DOMDOMPlugin

data DOMDOMMimeTypeEnabledPluginPropertyInfo
instance AttrInfo DOMDOMMimeTypeEnabledPluginPropertyInfo where
    type AttrAllowedOps DOMDOMMimeTypeEnabledPluginPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMMimeTypeEnabledPluginPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMMimeTypeEnabledPluginPropertyInfo = IsDOMDOMMimeType
    type AttrGetType DOMDOMMimeTypeEnabledPluginPropertyInfo = (Maybe WebKit.DOMDOMPlugin.DOMDOMPlugin)
    type AttrLabel DOMDOMMimeTypeEnabledPluginPropertyInfo = "enabled-plugin"
    type AttrOrigin DOMDOMMimeTypeEnabledPluginPropertyInfo = DOMDOMMimeType
    attrGet _ = getDOMDOMMimeTypeEnabledPlugin
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

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

getDOMDOMMimeTypeSuffixes :: (MonadIO m, IsDOMDOMMimeType o) => o -> m (Maybe T.Text)
getDOMDOMMimeTypeSuffixes obj = liftIO $ getObjectPropertyString obj "suffixes"

data DOMDOMMimeTypeSuffixesPropertyInfo
instance AttrInfo DOMDOMMimeTypeSuffixesPropertyInfo where
    type AttrAllowedOps DOMDOMMimeTypeSuffixesPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMMimeTypeSuffixesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMMimeTypeSuffixesPropertyInfo = IsDOMDOMMimeType
    type AttrGetType DOMDOMMimeTypeSuffixesPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMMimeTypeSuffixesPropertyInfo = "suffixes"
    type AttrOrigin DOMDOMMimeTypeSuffixesPropertyInfo = DOMDOMMimeType
    attrGet _ = getDOMDOMMimeTypeSuffixes
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

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

getDOMDOMMimeTypeType :: (MonadIO m, IsDOMDOMMimeType o) => o -> m (Maybe T.Text)
getDOMDOMMimeTypeType obj = liftIO $ getObjectPropertyString obj "type"

data DOMDOMMimeTypeTypePropertyInfo
instance AttrInfo DOMDOMMimeTypeTypePropertyInfo where
    type AttrAllowedOps DOMDOMMimeTypeTypePropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMMimeTypeTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMMimeTypeTypePropertyInfo = IsDOMDOMMimeType
    type AttrGetType DOMDOMMimeTypeTypePropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMMimeTypeTypePropertyInfo = "type"
    type AttrOrigin DOMDOMMimeTypeTypePropertyInfo = DOMDOMMimeType
    attrGet _ = getDOMDOMMimeTypeType
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMDOMMimeType
type instance O.AttributeList DOMDOMMimeType = DOMDOMMimeTypeAttributeList
type DOMDOMMimeTypeAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("description", DOMDOMMimeTypeDescriptionPropertyInfo), '("enabledPlugin", DOMDOMMimeTypeEnabledPluginPropertyInfo), '("suffixes", DOMDOMMimeTypeSuffixesPropertyInfo), '("type", DOMDOMMimeTypeTypePropertyInfo)] :: [(Symbol, *)])

dOMDOMMimeTypeDescription :: AttrLabelProxy "description"
dOMDOMMimeTypeDescription = AttrLabelProxy

dOMDOMMimeTypeEnabledPlugin :: AttrLabelProxy "enabledPlugin"
dOMDOMMimeTypeEnabledPlugin = AttrLabelProxy

dOMDOMMimeTypeSuffixes :: AttrLabelProxy "suffixes"
dOMDOMMimeTypeSuffixes = AttrLabelProxy

dOMDOMMimeTypeType :: AttrLabelProxy "type"
dOMDOMMimeTypeType = AttrLabelProxy

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

-- method DOMDOMMimeType::get_description
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMMimeType", 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_dom_mime_type_get_description" webkit_dom_dom_mime_type_get_description :: 
    Ptr DOMDOMMimeType ->                   -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeType"})
    IO CString

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

data DOMDOMMimeTypeGetDescriptionMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDOMDOMMimeType a) => O.MethodInfo DOMDOMMimeTypeGetDescriptionMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeGetDescription

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

foreign import ccall "webkit_dom_dom_mime_type_get_enabled_plugin" webkit_dom_dom_mime_type_get_enabled_plugin :: 
    Ptr DOMDOMMimeType ->                   -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeType"})
    IO (Ptr WebKit.DOMDOMPlugin.DOMDOMPlugin)

{- |
/No description available in the introspection data./
-}
dOMDOMMimeTypeGetEnabledPlugin ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMMimeType a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMMimeType.DOMDOMMimeType' -}
    -> m WebKit.DOMDOMPlugin.DOMDOMPlugin
    {- ^ __Returns:__ A 'GI.WebKit.Objects.DOMDOMPlugin.DOMDOMPlugin' -}
dOMDOMMimeTypeGetEnabledPlugin self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_dom_mime_type_get_enabled_plugin self'
    checkUnexpectedReturnNULL "dOMDOMMimeTypeGetEnabledPlugin" result
    result' <- (wrapObject WebKit.DOMDOMPlugin.DOMDOMPlugin) result
    touchManagedPtr self
    return result'

data DOMDOMMimeTypeGetEnabledPluginMethodInfo
instance (signature ~ (m WebKit.DOMDOMPlugin.DOMDOMPlugin), MonadIO m, IsDOMDOMMimeType a) => O.MethodInfo DOMDOMMimeTypeGetEnabledPluginMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeGetEnabledPlugin

-- method DOMDOMMimeType::get_suffixes
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitDOMDOMMimeType", 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_dom_mime_type_get_suffixes" webkit_dom_dom_mime_type_get_suffixes :: 
    Ptr DOMDOMMimeType ->                   -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeType"})
    IO CString

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

data DOMDOMMimeTypeGetSuffixesMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDOMDOMMimeType a) => O.MethodInfo DOMDOMMimeTypeGetSuffixesMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeGetSuffixes