{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)

/No description available in the introspection data./
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.WebKit2WebExtension.Structs.ConsoleMessage
    (

-- * Exported types
    ConsoleMessage(..)                      ,
    noConsoleMessage                        ,


 -- * Methods
-- ** copy #method:copy#

#if ENABLE_OVERLOADING
    ConsoleMessageCopyMethodInfo            ,
#endif
    consoleMessageCopy                      ,


-- ** free #method:free#

#if ENABLE_OVERLOADING
    ConsoleMessageFreeMethodInfo            ,
#endif
    consoleMessageFree                      ,


-- ** getLevel #method:getLevel#

#if ENABLE_OVERLOADING
    ConsoleMessageGetLevelMethodInfo        ,
#endif
    consoleMessageGetLevel                  ,


-- ** getLine #method:getLine#

#if ENABLE_OVERLOADING
    ConsoleMessageGetLineMethodInfo         ,
#endif
    consoleMessageGetLine                   ,


-- ** getSource #method:getSource#

#if ENABLE_OVERLOADING
    ConsoleMessageGetSourceMethodInfo       ,
#endif
    consoleMessageGetSource                 ,


-- ** getSourceId #method:getSourceId#

#if ENABLE_OVERLOADING
    ConsoleMessageGetSourceIdMethodInfo     ,
#endif
    consoleMessageGetSourceId               ,


-- ** getText #method:getText#

#if ENABLE_OVERLOADING
    ConsoleMessageGetTextMethodInfo         ,
#endif
    consoleMessageGetText                   ,




    ) 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.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
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 GHC.OverloadedLabels as OL

import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Enums as WebKit2WebExtension.Enums

-- | Memory-managed wrapper type.
newtype ConsoleMessage = ConsoleMessage (ManagedPtr ConsoleMessage)
foreign import ccall "webkit_console_message_get_type" c_webkit_console_message_get_type ::
    IO GType

instance BoxedObject ConsoleMessage where
    boxedType _ = c_webkit_console_message_get_type

-- | A convenience alias for `Nothing` :: `Maybe` `ConsoleMessage`.
noConsoleMessage :: Maybe ConsoleMessage
noConsoleMessage = Nothing


#if ENABLE_OVERLOADING
instance O.HasAttributeList ConsoleMessage
type instance O.AttributeList ConsoleMessage = ConsoleMessageAttributeList
type ConsoleMessageAttributeList = ('[ ] :: [(Symbol, *)])
#endif

-- method ConsoleMessage::copy
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_console_message_copy" webkit_console_message_copy ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO (Ptr ConsoleMessage)

{- |
Make a copy of /@consoleMessage@/.

/Since: 2.12/
-}
consoleMessageCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m ConsoleMessage
    {- ^ __Returns:__ A copy of passed in 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
consoleMessageCopy consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_copy consoleMessage'
    checkUnexpectedReturnNULL "consoleMessageCopy" result
    result' <- (wrapBoxed ConsoleMessage) result
    touchManagedPtr consoleMessage
    return result'

#if ENABLE_OVERLOADING
data ConsoleMessageCopyMethodInfo
instance (signature ~ (m ConsoleMessage), MonadIO m) => O.MethodInfo ConsoleMessageCopyMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageCopy

#endif

-- method ConsoleMessage::free
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_console_message_free" webkit_console_message_free ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO ()

{- |
Free the 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m ()
consoleMessageFree consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    webkit_console_message_free consoleMessage'
    touchManagedPtr consoleMessage
    return ()

#if ENABLE_OVERLOADING
data ConsoleMessageFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo ConsoleMessageFreeMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageFree

#endif

-- method ConsoleMessage::get_level
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessageLevel"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_console_message_get_level" webkit_console_message_get_level ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO CUInt

{- |
Gets the log level of a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageGetLevel ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m WebKit2WebExtension.Enums.ConsoleMessageLevel
    {- ^ __Returns:__ a 'GI.WebKit2WebExtension.Enums.ConsoleMessageLevel' indicating the log level of /@consoleMessage@/ -}
consoleMessageGetLevel consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_get_level consoleMessage'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr consoleMessage
    return result'

#if ENABLE_OVERLOADING
data ConsoleMessageGetLevelMethodInfo
instance (signature ~ (m WebKit2WebExtension.Enums.ConsoleMessageLevel), MonadIO m) => O.MethodInfo ConsoleMessageGetLevelMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageGetLevel

#endif

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

foreign import ccall "webkit_console_message_get_line" webkit_console_message_get_line ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO Word32

{- |
Gets the line number of a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageGetLine ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m Word32
    {- ^ __Returns:__ the line number of /@consoleMessage@/ -}
consoleMessageGetLine consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_get_line consoleMessage'
    touchManagedPtr consoleMessage
    return result

#if ENABLE_OVERLOADING
data ConsoleMessageGetLineMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.MethodInfo ConsoleMessageGetLineMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageGetLine

#endif

-- method ConsoleMessage::get_source
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessageSource"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_console_message_get_source" webkit_console_message_get_source ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO CUInt

{- |
Gets the source of a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageGetSource ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m WebKit2WebExtension.Enums.ConsoleMessageSource
    {- ^ __Returns:__ a 'GI.WebKit2WebExtension.Enums.ConsoleMessageSource' indicating the source of /@consoleMessage@/ -}
consoleMessageGetSource consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_get_source consoleMessage'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr consoleMessage
    return result'

#if ENABLE_OVERLOADING
data ConsoleMessageGetSourceMethodInfo
instance (signature ~ (m WebKit2WebExtension.Enums.ConsoleMessageSource), MonadIO m) => O.MethodInfo ConsoleMessageGetSourceMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageGetSource

#endif

-- method ConsoleMessage::get_source_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", 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_console_message_get_source_id" webkit_console_message_get_source_id ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO CString

{- |
Gets the source identifier of a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageGetSourceId ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m T.Text
    {- ^ __Returns:__ the source identifier of /@consoleMessage@/ -}
consoleMessageGetSourceId consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_get_source_id consoleMessage'
    checkUnexpectedReturnNULL "consoleMessageGetSourceId" result
    result' <- cstringToText result
    touchManagedPtr consoleMessage
    return result'

#if ENABLE_OVERLOADING
data ConsoleMessageGetSourceIdMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo ConsoleMessageGetSourceIdMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageGetSourceId

#endif

-- method ConsoleMessage::get_text
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "console_message", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitConsoleMessage", 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_console_message_get_text" webkit_console_message_get_text ::
    Ptr ConsoleMessage ->                   -- console_message : TInterface (Name {namespace = "WebKit2WebExtension", name = "ConsoleMessage"})
    IO CString

{- |
Gets the text message of a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage'

/Since: 2.12/
-}
consoleMessageGetText ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    ConsoleMessage
    {- ^ /@consoleMessage@/: a 'GI.WebKit2WebExtension.Structs.ConsoleMessage.ConsoleMessage' -}
    -> m T.Text
    {- ^ __Returns:__ the text message of /@consoleMessage@/ -}
consoleMessageGetText consoleMessage = liftIO $ do
    consoleMessage' <- unsafeManagedPtrGetPtr consoleMessage
    result <- webkit_console_message_get_text consoleMessage'
    checkUnexpectedReturnNULL "consoleMessageGetText" result
    result' <- cstringToText result
    touchManagedPtr consoleMessage
    return result'

#if ENABLE_OVERLOADING
data ConsoleMessageGetTextMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.MethodInfo ConsoleMessageGetTextMethodInfo ConsoleMessage signature where
    overloadedMethod _ = consoleMessageGetText

#endif

#if ENABLE_OVERLOADING
type family ResolveConsoleMessageMethod (t :: Symbol) (o :: *) :: * where
    ResolveConsoleMessageMethod "copy" o = ConsoleMessageCopyMethodInfo
    ResolveConsoleMessageMethod "free" o = ConsoleMessageFreeMethodInfo
    ResolveConsoleMessageMethod "getLevel" o = ConsoleMessageGetLevelMethodInfo
    ResolveConsoleMessageMethod "getLine" o = ConsoleMessageGetLineMethodInfo
    ResolveConsoleMessageMethod "getSource" o = ConsoleMessageGetSourceMethodInfo
    ResolveConsoleMessageMethod "getSourceId" o = ConsoleMessageGetSourceIdMethodInfo
    ResolveConsoleMessageMethod "getText" o = ConsoleMessageGetTextMethodInfo
    ResolveConsoleMessageMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveConsoleMessageMethod t ConsoleMessage, O.MethodInfo info ConsoleMessage p) => OL.IsLabel t (ConsoleMessage -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif