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

Represents a git proxy options.
-}

module GI.Ggit.Objects.ProxyOptions
    ( 

-- * Exported types
    ProxyOptions(..)                        ,
    IsProxyOptions                          ,
    toProxyOptions                          ,
    noProxyOptions                          ,


 -- * Methods
-- ** new #method:new#
    proxyOptionsNew                         ,




    ) 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

newtype ProxyOptions = ProxyOptions (ManagedPtr ProxyOptions)
foreign import ccall "ggit_proxy_options_get_type"
    c_ggit_proxy_options_get_type :: IO GType

instance GObject ProxyOptions where
    gobjectType _ = c_ggit_proxy_options_get_type
    

class GObject o => IsProxyOptions o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError ProxyOptions a) =>
    IsProxyOptions a
#endif
instance IsProxyOptions ProxyOptions
instance GObject.Object.IsObject ProxyOptions

toProxyOptions :: (MonadIO m, IsProxyOptions o) => o -> m ProxyOptions
toProxyOptions = liftIO . unsafeCastTo ProxyOptions

noProxyOptions :: Maybe ProxyOptions
noProxyOptions = Nothing

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

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

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveProxyOptionsMethod t ProxyOptions, O.MethodInfo info ProxyOptions p) => O.IsLabel t (ProxyOptions -> 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

#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
instance O.HasAttributeList ProxyOptions
type instance O.AttributeList ProxyOptions = ProxyOptionsAttributeList
type ProxyOptionsAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
type instance O.SignalList ProxyOptions = ProxyOptionsSignalList
type ProxyOptionsSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method ProxyOptions::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Ggit", name = "ProxyOptions"}))
-- throws : False
-- Skip return : False

foreign import ccall "ggit_proxy_options_new" ggit_proxy_options_new :: 
    IO (Ptr ProxyOptions)

{- |
Create a new proxy options object.
-}
proxyOptionsNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m ProxyOptions
    {- ^ __Returns:__ a 'GI.Ggit.Objects.ProxyOptions.ProxyOptions'. -}
proxyOptionsNew  = liftIO $ do
    result <- ggit_proxy_options_new
    checkUnexpectedReturnNULL "proxyOptionsNew" result
    result' <- (wrapObject ProxyOptions) result
    return result'

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif