{- |
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.Soup.Objects.AuthDomainBasic
    ( 

-- * Exported types
    AuthDomainBasic(..)                     ,
    AuthDomainBasicK                        ,
    toAuthDomainBasic                       ,
    noAuthDomainBasic                       ,


 -- * Properties
-- ** AuthCallback
    AuthDomainBasicAuthCallbackPropertyInfo ,
    constructAuthDomainBasicAuthCallback    ,
    getAuthDomainBasicAuthCallback          ,
    setAuthDomainBasicAuthCallback          ,


-- ** AuthData
    AuthDomainBasicAuthDataPropertyInfo     ,
    constructAuthDomainBasicAuthData        ,
    getAuthDomainBasicAuthData              ,
    setAuthDomainBasicAuthData              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Soup.Types
import GI.Soup.Callbacks
import qualified GI.GObject as GObject

newtype AuthDomainBasic = AuthDomainBasic (ForeignPtr AuthDomainBasic)
foreign import ccall "soup_auth_domain_basic_get_type"
    c_soup_auth_domain_basic_get_type :: IO GType

type instance ParentTypes AuthDomainBasic = AuthDomainBasicParentTypes
type AuthDomainBasicParentTypes = '[AuthDomain, GObject.Object]

instance GObject AuthDomainBasic where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_soup_auth_domain_basic_get_type
    

class GObject o => AuthDomainBasicK o
instance (GObject o, IsDescendantOf AuthDomainBasic o) => AuthDomainBasicK o

toAuthDomainBasic :: AuthDomainBasicK o => o -> IO AuthDomainBasic
toAuthDomainBasic = unsafeCastTo AuthDomainBasic

noAuthDomainBasic :: Maybe AuthDomainBasic
noAuthDomainBasic = Nothing

-- VVV Prop "auth-callback"
   -- Type: TBasicType TVoid
   -- Flags: [PropertyReadable,PropertyWritable]

getAuthDomainBasicAuthCallback :: (MonadIO m, AuthDomainBasicK o) => o -> m (Ptr ())
getAuthDomainBasicAuthCallback obj = liftIO $ getObjectPropertyPtr obj "auth-callback"

setAuthDomainBasicAuthCallback :: (MonadIO m, AuthDomainBasicK o) => o -> (Ptr ()) -> m ()
setAuthDomainBasicAuthCallback obj val = liftIO $ setObjectPropertyPtr obj "auth-callback" val

constructAuthDomainBasicAuthCallback :: (Ptr ()) -> IO ([Char], GValue)
constructAuthDomainBasicAuthCallback val = constructObjectPropertyPtr "auth-callback" val

data AuthDomainBasicAuthCallbackPropertyInfo
instance AttrInfo AuthDomainBasicAuthCallbackPropertyInfo where
    type AttrAllowedOps AuthDomainBasicAuthCallbackPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint AuthDomainBasicAuthCallbackPropertyInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint AuthDomainBasicAuthCallbackPropertyInfo = AuthDomainBasicK
    type AttrGetType AuthDomainBasicAuthCallbackPropertyInfo = (Ptr ())
    type AttrLabel AuthDomainBasicAuthCallbackPropertyInfo = "AuthDomainBasic::auth-callback"
    attrGet _ = getAuthDomainBasicAuthCallback
    attrSet _ = setAuthDomainBasicAuthCallback
    attrConstruct _ = constructAuthDomainBasicAuthCallback

-- VVV Prop "auth-data"
   -- Type: TBasicType TVoid
   -- Flags: [PropertyReadable,PropertyWritable]

getAuthDomainBasicAuthData :: (MonadIO m, AuthDomainBasicK o) => o -> m (Ptr ())
getAuthDomainBasicAuthData obj = liftIO $ getObjectPropertyPtr obj "auth-data"

setAuthDomainBasicAuthData :: (MonadIO m, AuthDomainBasicK o) => o -> (Ptr ()) -> m ()
setAuthDomainBasicAuthData obj val = liftIO $ setObjectPropertyPtr obj "auth-data" val

constructAuthDomainBasicAuthData :: (Ptr ()) -> IO ([Char], GValue)
constructAuthDomainBasicAuthData val = constructObjectPropertyPtr "auth-data" val

data AuthDomainBasicAuthDataPropertyInfo
instance AttrInfo AuthDomainBasicAuthDataPropertyInfo where
    type AttrAllowedOps AuthDomainBasicAuthDataPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint AuthDomainBasicAuthDataPropertyInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint AuthDomainBasicAuthDataPropertyInfo = AuthDomainBasicK
    type AttrGetType AuthDomainBasicAuthDataPropertyInfo = (Ptr ())
    type AttrLabel AuthDomainBasicAuthDataPropertyInfo = "AuthDomainBasic::auth-data"
    attrGet _ = getAuthDomainBasicAuthData
    attrSet _ = setAuthDomainBasicAuthData
    attrConstruct _ = constructAuthDomainBasicAuthData

type instance AttributeList AuthDomainBasic = AuthDomainBasicAttributeList
type AuthDomainBasicAttributeList = ('[ '("add-path", AuthDomainAddPathPropertyInfo), '("auth-callback", AuthDomainBasicAuthCallbackPropertyInfo), '("auth-data", AuthDomainBasicAuthDataPropertyInfo), '("filter", AuthDomainFilterPropertyInfo), '("filter-data", AuthDomainFilterDataPropertyInfo), '("generic-auth-callback", AuthDomainGenericAuthCallbackPropertyInfo), '("generic-auth-data", AuthDomainGenericAuthDataPropertyInfo), '("proxy", AuthDomainProxyPropertyInfo), '("realm", AuthDomainRealmPropertyInfo), '("remove-path", AuthDomainRemovePathPropertyInfo)] :: [(Symbol, *)])

type instance SignalList AuthDomainBasic = AuthDomainBasicSignalList
type AuthDomainBasicSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])