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

-- * Exported types
    DOMConsole(..)                          ,
    IsDOMConsole                            ,
    toDOMConsole                            ,
    noDOMConsole                            ,


 -- * Methods
-- ** getMemory #method:getMemory#
    DOMConsoleGetMemoryMethodInfo           ,
    dOMConsoleGetMemory                     ,


-- ** groupEnd #method:groupEnd#
    DOMConsoleGroupEndMethodInfo            ,
    dOMConsoleGroupEnd                      ,


-- ** time #method:time#
    DOMConsoleTimeMethodInfo                ,
    dOMConsoleTime                          ,




    ) 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 DOMConsole = DOMConsole (ManagedPtr DOMConsole)
foreign import ccall "webkit_dom_console_get_type"
    c_webkit_dom_console_get_type :: IO GType

instance GObject DOMConsole where
    gobjectType _ = c_webkit_dom_console_get_type
    

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

toDOMConsole :: IsDOMConsole o => o -> IO DOMConsole
toDOMConsole = unsafeCastTo DOMConsole

noDOMConsole :: Maybe DOMConsole
noDOMConsole = Nothing

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

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

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

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

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

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

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

{-# DEPRECATED dOMConsoleGetMemory ["(Since version 2.2)"] #-}
{- |
This functionality has been removed from WebKit, this function does nothing.
-}
dOMConsoleGetMemory ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMConsole a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMConsole.DOMConsole' -}
    -> m (Ptr ())
dOMConsoleGetMemory self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- webkit_dom_console_get_memory self'
    touchManagedPtr self
    return result

data DOMConsoleGetMemoryMethodInfo
instance (signature ~ (m (Ptr ())), MonadIO m, IsDOMConsole a) => O.MethodInfo DOMConsoleGetMemoryMethodInfo a signature where
    overloadedMethod _ = dOMConsoleGetMemory

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

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

{- |
/No description available in the introspection data./
-}
dOMConsoleGroupEnd ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMConsole a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMConsole.DOMConsole' -}
    -> m ()
dOMConsoleGroupEnd self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    webkit_dom_console_group_end self'
    touchManagedPtr self
    return ()

data DOMConsoleGroupEndMethodInfo
instance (signature ~ (m ()), MonadIO m, IsDOMConsole a) => O.MethodInfo DOMConsoleGroupEndMethodInfo a signature where
    overloadedMethod _ = dOMConsoleGroupEnd

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

foreign import ccall "webkit_dom_console_time" webkit_dom_console_time :: 
    Ptr DOMConsole ->                       -- self : TInterface (Name {namespace = "WebKit", name = "DOMConsole"})
    CString ->                              -- title : TBasicType TUTF8
    IO ()

{- |
/No description available in the introspection data./
-}
dOMConsoleTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMConsole a) =>
    a
    {- ^ /@self@/: A 'GI.WebKit.Objects.DOMConsole.DOMConsole' -}
    -> T.Text
    {- ^ /@title@/: A @/gchar/@ -}
    -> m ()
dOMConsoleTime self title = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    title' <- textToCString title
    webkit_dom_console_time self' title'
    touchManagedPtr self
    freeMem title'
    return ()

data DOMConsoleTimeMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsDOMConsole a) => O.MethodInfo DOMConsoleTimeMethodInfo a signature where
    overloadedMethod _ = dOMConsoleTime