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

-- * Exported types
    DOMDOMMimeTypeArray(..)                 ,
    IsDOMDOMMimeTypeArray                   ,
    toDOMDOMMimeTypeArray                   ,
    noDOMDOMMimeTypeArray                   ,


 -- * Methods
-- ** getLength #method:getLength#
    DOMDOMMimeTypeArrayGetLengthMethodInfo  ,
    dOMDOMMimeTypeArrayGetLength            ,


-- ** item #method:item#
    DOMDOMMimeTypeArrayItemMethodInfo       ,
    dOMDOMMimeTypeArrayItem                 ,


-- ** namedItem #method:namedItem#
    DOMDOMMimeTypeArrayNamedItemMethodInfo  ,
    dOMDOMMimeTypeArrayNamedItem            ,




 -- * Properties
-- ** length #attr:length#
    DOMDOMMimeTypeArrayLengthPropertyInfo   ,
    dOMDOMMimeTypeArrayLength               ,
    getDOMDOMMimeTypeArrayLength            ,




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

newtype DOMDOMMimeTypeArray = DOMDOMMimeTypeArray (ManagedPtr DOMDOMMimeTypeArray)
foreign import ccall "webkit_dom_dom_mime_type_array_get_type"
    c_webkit_dom_dom_mime_type_array_get_type :: IO GType

instance GObject DOMDOMMimeTypeArray where
    gobjectType _ = c_webkit_dom_dom_mime_type_array_get_type
    

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

toDOMDOMMimeTypeArray :: IsDOMDOMMimeTypeArray o => o -> IO DOMDOMMimeTypeArray
toDOMDOMMimeTypeArray = unsafeCastTo DOMDOMMimeTypeArray

noDOMDOMMimeTypeArray :: Maybe DOMDOMMimeTypeArray
noDOMDOMMimeTypeArray = Nothing

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

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

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

-- VVV Prop "length"
   -- Type: TBasicType TULong
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getDOMDOMMimeTypeArrayLength :: (MonadIO m, IsDOMDOMMimeTypeArray o) => o -> m CULong
getDOMDOMMimeTypeArrayLength obj = liftIO $ getObjectPropertyULong obj "length"

data DOMDOMMimeTypeArrayLengthPropertyInfo
instance AttrInfo DOMDOMMimeTypeArrayLengthPropertyInfo where
    type AttrAllowedOps DOMDOMMimeTypeArrayLengthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMMimeTypeArrayLengthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMMimeTypeArrayLengthPropertyInfo = IsDOMDOMMimeTypeArray
    type AttrGetType DOMDOMMimeTypeArrayLengthPropertyInfo = CULong
    type AttrLabel DOMDOMMimeTypeArrayLengthPropertyInfo = "length"
    type AttrOrigin DOMDOMMimeTypeArrayLengthPropertyInfo = DOMDOMMimeTypeArray
    attrGet _ = getDOMDOMMimeTypeArrayLength
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMDOMMimeTypeArray
type instance O.AttributeList DOMDOMMimeTypeArray = DOMDOMMimeTypeArrayAttributeList
type DOMDOMMimeTypeArrayAttributeList = ('[ '("coreObject", WebKit.DOMObject.DOMObjectCoreObjectPropertyInfo), '("length", DOMDOMMimeTypeArrayLengthPropertyInfo)] :: [(Symbol, *)])

dOMDOMMimeTypeArrayLength :: AttrLabelProxy "length"
dOMDOMMimeTypeArrayLength = AttrLabelProxy

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

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

foreign import ccall "webkit_dom_dom_mime_type_array_get_length" webkit_dom_dom_mime_type_array_get_length :: 
    Ptr DOMDOMMimeTypeArray ->              -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeTypeArray"})
    IO CULong

{- |
/No description available in the introspection data./
-}
dOMDOMMimeTypeArrayGetLength ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMMimeTypeArray a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMDOMMimeTypeArray.DOMDOMMimeTypeArray' -}
    -> m CULong
    {- ^ __Returns:__ A @/gulong/@ -}
dOMDOMMimeTypeArrayGetLength self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_dom_mime_type_array_get_length self'
    touchManagedPtr self
    return result

data DOMDOMMimeTypeArrayGetLengthMethodInfo
instance (signature ~ (m CULong), MonadIO m, IsDOMDOMMimeTypeArray a) => O.MethodInfo DOMDOMMimeTypeArrayGetLengthMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeArrayGetLength

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

foreign import ccall "webkit_dom_dom_mime_type_array_item" webkit_dom_dom_mime_type_array_item :: 
    Ptr DOMDOMMimeTypeArray ->              -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeTypeArray"})
    CULong ->                               -- index : TBasicType TULong
    IO (Ptr WebKit.DOMDOMMimeType.DOMDOMMimeType)

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

data DOMDOMMimeTypeArrayItemMethodInfo
instance (signature ~ (CULong -> m WebKit.DOMDOMMimeType.DOMDOMMimeType), MonadIO m, IsDOMDOMMimeTypeArray a) => O.MethodInfo DOMDOMMimeTypeArrayItemMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeArrayItem

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

foreign import ccall "webkit_dom_dom_mime_type_array_named_item" webkit_dom_dom_mime_type_array_named_item :: 
    Ptr DOMDOMMimeTypeArray ->              -- self : TInterface (Name {namespace = "WebKit", name = "DOMDOMMimeTypeArray"})
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr WebKit.DOMDOMMimeType.DOMDOMMimeType)

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

data DOMDOMMimeTypeArrayNamedItemMethodInfo
instance (signature ~ (T.Text -> m WebKit.DOMDOMMimeType.DOMDOMMimeType), MonadIO m, IsDOMDOMMimeTypeArray a) => O.MethodInfo DOMDOMMimeTypeArrayNamedItemMethodInfo a signature where
    overloadedMethod _ = dOMDOMMimeTypeArrayNamedItem