{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- VPN Settings

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

module GI.NM.Objects.SettingVpn
    ( 

-- * Exported types
    SettingVpn(..)                          ,
    IsSettingVpn                            ,
    toSettingVpn                            ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [addDataItem]("GI.NM.Objects.SettingVpn#g:method:addDataItem"), [addSecret]("GI.NM.Objects.SettingVpn#g:method:addSecret"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [compare]("GI.NM.Objects.Setting#g:method:compare"), [diff]("GI.NM.Objects.Setting#g:method:diff"), [duplicate]("GI.NM.Objects.Setting#g:method:duplicate"), [enumerateValues]("GI.NM.Objects.Setting#g:method:enumerateValues"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreachDataItem]("GI.NM.Objects.SettingVpn#g:method:foreachDataItem"), [foreachSecret]("GI.NM.Objects.SettingVpn#g:method:foreachSecret"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [optionClearByName]("GI.NM.Objects.Setting#g:method:optionClearByName"), [optionGet]("GI.NM.Objects.Setting#g:method:optionGet"), [optionGetAllNames]("GI.NM.Objects.Setting#g:method:optionGetAllNames"), [optionGetBoolean]("GI.NM.Objects.Setting#g:method:optionGetBoolean"), [optionGetUint32]("GI.NM.Objects.Setting#g:method:optionGetUint32"), [optionSet]("GI.NM.Objects.Setting#g:method:optionSet"), [optionSetBoolean]("GI.NM.Objects.Setting#g:method:optionSetBoolean"), [optionSetUint32]("GI.NM.Objects.Setting#g:method:optionSetUint32"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [removeDataItem]("GI.NM.Objects.SettingVpn#g:method:removeDataItem"), [removeSecret]("GI.NM.Objects.SettingVpn#g:method:removeSecret"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [toString]("GI.NM.Objects.Setting#g:method:toString"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [verify]("GI.NM.Objects.Setting#g:method:verify"), [verifySecrets]("GI.NM.Objects.Setting#g:method:verifySecrets"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDataItem]("GI.NM.Objects.SettingVpn#g:method:getDataItem"), [getDataKeys]("GI.NM.Objects.SettingVpn#g:method:getDataKeys"), [getDbusPropertyType]("GI.NM.Objects.Setting#g:method:getDbusPropertyType"), [getName]("GI.NM.Objects.Setting#g:method:getName"), [getNumDataItems]("GI.NM.Objects.SettingVpn#g:method:getNumDataItems"), [getNumSecrets]("GI.NM.Objects.SettingVpn#g:method:getNumSecrets"), [getPersistent]("GI.NM.Objects.SettingVpn#g:method:getPersistent"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getSecret]("GI.NM.Objects.SettingVpn#g:method:getSecret"), [getSecretFlags]("GI.NM.Objects.Setting#g:method:getSecretFlags"), [getSecretKeys]("GI.NM.Objects.SettingVpn#g:method:getSecretKeys"), [getServiceType]("GI.NM.Objects.SettingVpn#g:method:getServiceType"), [getTimeout]("GI.NM.Objects.SettingVpn#g:method:getTimeout"), [getUserName]("GI.NM.Objects.SettingVpn#g:method:getUserName").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setSecretFlags]("GI.NM.Objects.Setting#g:method:setSecretFlags").

#if defined(ENABLE_OVERLOADING)
    ResolveSettingVpnMethod                 ,
#endif

-- ** addDataItem #method:addDataItem#

#if defined(ENABLE_OVERLOADING)
    SettingVpnAddDataItemMethodInfo         ,
#endif
    settingVpnAddDataItem                   ,


-- ** addSecret #method:addSecret#

#if defined(ENABLE_OVERLOADING)
    SettingVpnAddSecretMethodInfo           ,
#endif
    settingVpnAddSecret                     ,


-- ** foreachDataItem #method:foreachDataItem#

#if defined(ENABLE_OVERLOADING)
    SettingVpnForeachDataItemMethodInfo     ,
#endif
    settingVpnForeachDataItem               ,


-- ** foreachSecret #method:foreachSecret#

#if defined(ENABLE_OVERLOADING)
    SettingVpnForeachSecretMethodInfo       ,
#endif
    settingVpnForeachSecret                 ,


-- ** getDataItem #method:getDataItem#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetDataItemMethodInfo         ,
#endif
    settingVpnGetDataItem                   ,


-- ** getDataKeys #method:getDataKeys#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetDataKeysMethodInfo         ,
#endif
    settingVpnGetDataKeys                   ,


-- ** getNumDataItems #method:getNumDataItems#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetNumDataItemsMethodInfo     ,
#endif
    settingVpnGetNumDataItems               ,


-- ** getNumSecrets #method:getNumSecrets#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetNumSecretsMethodInfo       ,
#endif
    settingVpnGetNumSecrets                 ,


-- ** getPersistent #method:getPersistent#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetPersistentMethodInfo       ,
#endif
    settingVpnGetPersistent                 ,


-- ** getSecret #method:getSecret#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetSecretMethodInfo           ,
#endif
    settingVpnGetSecret                     ,


-- ** getSecretKeys #method:getSecretKeys#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetSecretKeysMethodInfo       ,
#endif
    settingVpnGetSecretKeys                 ,


-- ** getServiceType #method:getServiceType#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetServiceTypeMethodInfo      ,
#endif
    settingVpnGetServiceType                ,


-- ** getTimeout #method:getTimeout#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetTimeoutMethodInfo          ,
#endif
    settingVpnGetTimeout                    ,


-- ** getUserName #method:getUserName#

#if defined(ENABLE_OVERLOADING)
    SettingVpnGetUserNameMethodInfo         ,
#endif
    settingVpnGetUserName                   ,


-- ** new #method:new#

    settingVpnNew                           ,


-- ** removeDataItem #method:removeDataItem#

#if defined(ENABLE_OVERLOADING)
    SettingVpnRemoveDataItemMethodInfo      ,
#endif
    settingVpnRemoveDataItem                ,


-- ** removeSecret #method:removeSecret#

#if defined(ENABLE_OVERLOADING)
    SettingVpnRemoveSecretMethodInfo        ,
#endif
    settingVpnRemoveSecret                  ,




 -- * Properties


-- ** data #attr:data#
-- | Dictionary of key\/value pairs of VPN plugin specific data.  Both keys and
-- values must be strings.

#if defined(ENABLE_OVERLOADING)
    SettingVpnDataPropertyInfo              ,
#endif
    clearSettingVpnData                     ,
    constructSettingVpnData                 ,
    getSettingVpnData                       ,
    setSettingVpnData                       ,
#if defined(ENABLE_OVERLOADING)
    settingVpnData                          ,
#endif


-- ** persistent #attr:persistent#
-- | If the VPN service supports persistence, and this property is 'P.True',
-- the VPN will attempt to stay connected across link changes and outages,
-- until explicitly disconnected.

#if defined(ENABLE_OVERLOADING)
    SettingVpnPersistentPropertyInfo        ,
#endif
    constructSettingVpnPersistent           ,
    getSettingVpnPersistent                 ,
    setSettingVpnPersistent                 ,
#if defined(ENABLE_OVERLOADING)
    settingVpnPersistent                    ,
#endif


-- ** secrets #attr:secrets#
-- | Dictionary of key\/value pairs of VPN plugin specific secrets like
-- passwords or private keys.  Both keys and values must be strings.

#if defined(ENABLE_OVERLOADING)
    SettingVpnSecretsPropertyInfo           ,
#endif
    clearSettingVpnSecrets                  ,
    constructSettingVpnSecrets              ,
    getSettingVpnSecrets                    ,
    setSettingVpnSecrets                    ,
#if defined(ENABLE_OVERLOADING)
    settingVpnSecrets                       ,
#endif


-- ** serviceType #attr:serviceType#
-- | D-Bus service name of the VPN plugin that this setting uses to connect to
-- its network.  i.e. org.freedesktop.NetworkManager.vpnc for the vpnc
-- plugin.

#if defined(ENABLE_OVERLOADING)
    SettingVpnServiceTypePropertyInfo       ,
#endif
    clearSettingVpnServiceType              ,
    constructSettingVpnServiceType          ,
    getSettingVpnServiceType                ,
    setSettingVpnServiceType                ,
#if defined(ENABLE_OVERLOADING)
    settingVpnServiceType                   ,
#endif


-- ** timeout #attr:timeout#
-- | Timeout for the VPN service to establish the connection. Some services
-- may take quite a long time to connect.
-- Value of 0 means a default timeout, which is 60 seconds (unless overridden
-- by vpn.timeout in configuration file). Values greater than zero mean
-- timeout in seconds.
-- 
-- /Since: 1.2/

#if defined(ENABLE_OVERLOADING)
    SettingVpnTimeoutPropertyInfo           ,
#endif
    constructSettingVpnTimeout              ,
    getSettingVpnTimeout                    ,
    setSettingVpnTimeout                    ,
#if defined(ENABLE_OVERLOADING)
    settingVpnTimeout                       ,
#endif


-- ** userName #attr:userName#
-- | If the VPN connection requires a user name for authentication, that name
-- should be provided here.  If the connection is available to more than one
-- user, and the VPN requires each user to supply a different name, then
-- leave this property empty.  If this property is empty, NetworkManager
-- will automatically supply the username of the user which requested the
-- VPN connection.

#if defined(ENABLE_OVERLOADING)
    SettingVpnUserNamePropertyInfo          ,
#endif
    clearSettingVpnUserName                 ,
    constructSettingVpnUserName             ,
    getSettingVpnUserName                   ,
    setSettingVpnUserName                   ,
#if defined(ENABLE_OVERLOADING)
    settingVpnUserName                      ,
#endif




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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 qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import qualified GI.GLib.Structs.Bytes as GLib.Bytes
import qualified GI.GLib.Structs.VariantType as GLib.VariantType
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.NM.Callbacks as NM.Callbacks
import {-# SOURCE #-} qualified GI.NM.Enums as NM.Enums
import {-# SOURCE #-} qualified GI.NM.Flags as NM.Flags
import {-# SOURCE #-} qualified GI.NM.Interfaces.Connection as NM.Connection
import {-# SOURCE #-} qualified GI.NM.Objects.Setting as NM.Setting
import {-# SOURCE #-} qualified GI.NM.Objects.Setting8021x as NM.Setting8021x
import {-# SOURCE #-} qualified GI.NM.Objects.SettingAdsl as NM.SettingAdsl
import {-# SOURCE #-} qualified GI.NM.Objects.SettingBluetooth as NM.SettingBluetooth
import {-# SOURCE #-} qualified GI.NM.Objects.SettingBond as NM.SettingBond
import {-# SOURCE #-} qualified GI.NM.Objects.SettingBridge as NM.SettingBridge
import {-# SOURCE #-} qualified GI.NM.Objects.SettingBridgePort as NM.SettingBridgePort
import {-# SOURCE #-} qualified GI.NM.Objects.SettingCdma as NM.SettingCdma
import {-# SOURCE #-} qualified GI.NM.Objects.SettingConnection as NM.SettingConnection
import {-# SOURCE #-} qualified GI.NM.Objects.SettingDcb as NM.SettingDcb
import {-# SOURCE #-} qualified GI.NM.Objects.SettingDummy as NM.SettingDummy
import {-# SOURCE #-} qualified GI.NM.Objects.SettingGeneric as NM.SettingGeneric
import {-# SOURCE #-} qualified GI.NM.Objects.SettingGsm as NM.SettingGsm
import {-# SOURCE #-} qualified GI.NM.Objects.SettingIP4Config as NM.SettingIP4Config
import {-# SOURCE #-} qualified GI.NM.Objects.SettingIP6Config as NM.SettingIP6Config
import {-# SOURCE #-} qualified GI.NM.Objects.SettingIPConfig as NM.SettingIPConfig
import {-# SOURCE #-} qualified GI.NM.Objects.SettingIPTunnel as NM.SettingIPTunnel
import {-# SOURCE #-} qualified GI.NM.Objects.SettingInfiniband as NM.SettingInfiniband
import {-# SOURCE #-} qualified GI.NM.Objects.SettingMacsec as NM.SettingMacsec
import {-# SOURCE #-} qualified GI.NM.Objects.SettingMacvlan as NM.SettingMacvlan
import {-# SOURCE #-} qualified GI.NM.Objects.SettingOlpcMesh as NM.SettingOlpcMesh
import {-# SOURCE #-} qualified GI.NM.Objects.SettingOvsBridge as NM.SettingOvsBridge
import {-# SOURCE #-} qualified GI.NM.Objects.SettingOvsInterface as NM.SettingOvsInterface
import {-# SOURCE #-} qualified GI.NM.Objects.SettingOvsPatch as NM.SettingOvsPatch
import {-# SOURCE #-} qualified GI.NM.Objects.SettingOvsPort as NM.SettingOvsPort
import {-# SOURCE #-} qualified GI.NM.Objects.SettingPpp as NM.SettingPpp
import {-# SOURCE #-} qualified GI.NM.Objects.SettingPppoe as NM.SettingPppoe
import {-# SOURCE #-} qualified GI.NM.Objects.SettingProxy as NM.SettingProxy
import {-# SOURCE #-} qualified GI.NM.Objects.SettingSerial as NM.SettingSerial
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTCConfig as NM.SettingTCConfig
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTeam as NM.SettingTeam
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTeamPort as NM.SettingTeamPort
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTun as NM.SettingTun
import {-# SOURCE #-} qualified GI.NM.Objects.SettingVlan as NM.SettingVlan
import {-# SOURCE #-} qualified GI.NM.Objects.SettingVxlan as NM.SettingVxlan
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWimax as NM.SettingWimax
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWired as NM.SettingWired
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWireless as NM.SettingWireless
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWirelessSecurity as NM.SettingWirelessSecurity
import {-# SOURCE #-} qualified GI.NM.Structs.BridgeVlan as NM.BridgeVlan
import {-# SOURCE #-} qualified GI.NM.Structs.IPAddress as NM.IPAddress
import {-# SOURCE #-} qualified GI.NM.Structs.IPRoute as NM.IPRoute
import {-# SOURCE #-} qualified GI.NM.Structs.IPRoutingRule as NM.IPRoutingRule
import {-# SOURCE #-} qualified GI.NM.Structs.Range as NM.Range
import {-# SOURCE #-} qualified GI.NM.Structs.TCAction as NM.TCAction
import {-# SOURCE #-} qualified GI.NM.Structs.TCQdisc as NM.TCQdisc
import {-# SOURCE #-} qualified GI.NM.Structs.TCTfilter as NM.TCTfilter
import {-# SOURCE #-} qualified GI.NM.Structs.TeamLinkWatcher as NM.TeamLinkWatcher
import {-# SOURCE #-} qualified GI.NM.Structs.VariantAttributeSpec as NM.VariantAttributeSpec

#else
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.NM.Callbacks as NM.Callbacks
import {-# SOURCE #-} qualified GI.NM.Objects.Setting as NM.Setting

#endif

-- | Memory-managed wrapper type.
newtype SettingVpn = SettingVpn (SP.ManagedPtr SettingVpn)
    deriving (SettingVpn -> SettingVpn -> Bool
(SettingVpn -> SettingVpn -> Bool)
-> (SettingVpn -> SettingVpn -> Bool) -> Eq SettingVpn
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SettingVpn -> SettingVpn -> Bool
== :: SettingVpn -> SettingVpn -> Bool
$c/= :: SettingVpn -> SettingVpn -> Bool
/= :: SettingVpn -> SettingVpn -> Bool
Eq)

instance SP.ManagedPtrNewtype SettingVpn where
    toManagedPtr :: SettingVpn -> ManagedPtr SettingVpn
toManagedPtr (SettingVpn ManagedPtr SettingVpn
p) = ManagedPtr SettingVpn
p

foreign import ccall "nm_setting_vpn_get_type"
    c_nm_setting_vpn_get_type :: IO B.Types.GType

instance B.Types.TypedObject SettingVpn where
    glibType :: IO GType
glibType = IO GType
c_nm_setting_vpn_get_type

instance B.Types.GObject SettingVpn

-- | Type class for types which can be safely cast to t'SettingVpn', for instance with `toSettingVpn`.
class (SP.GObject o, O.IsDescendantOf SettingVpn o) => IsSettingVpn o
instance (SP.GObject o, O.IsDescendantOf SettingVpn o) => IsSettingVpn o

instance O.HasParentTypes SettingVpn
type instance O.ParentTypes SettingVpn = '[NM.Setting.Setting, GObject.Object.Object]

-- | Cast to t'SettingVpn', for types for which this is known to be safe. For general casts, use 'Data.GI.Base.ManagedPtr.castTo'.
toSettingVpn :: (MIO.MonadIO m, IsSettingVpn o) => o -> m SettingVpn
toSettingVpn :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> m SettingVpn
toSettingVpn = IO SettingVpn -> m SettingVpn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO SettingVpn -> m SettingVpn)
-> (o -> IO SettingVpn) -> o -> m SettingVpn
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr SettingVpn -> SettingVpn) -> o -> IO SettingVpn
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr SettingVpn -> SettingVpn
SettingVpn

-- | Convert t'SettingVpn' to and from t'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe SettingVpn) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_nm_setting_vpn_get_type
    gvalueSet_ :: Ptr GValue -> Maybe SettingVpn -> IO ()
gvalueSet_ Ptr GValue
gv Maybe SettingVpn
P.Nothing = Ptr GValue -> Ptr SettingVpn -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr SettingVpn
forall a. Ptr a
FP.nullPtr :: FP.Ptr SettingVpn)
    gvalueSet_ Ptr GValue
gv (P.Just SettingVpn
obj) = SettingVpn -> (Ptr SettingVpn -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr SettingVpn
obj (Ptr GValue -> Ptr SettingVpn -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe SettingVpn)
gvalueGet_ Ptr GValue
gv = do
        Ptr SettingVpn
ptr <- Ptr GValue -> IO (Ptr SettingVpn)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr SettingVpn)
        if Ptr SettingVpn
ptr Ptr SettingVpn -> Ptr SettingVpn -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr SettingVpn
forall a. Ptr a
FP.nullPtr
        then SettingVpn -> Maybe SettingVpn
forall a. a -> Maybe a
P.Just (SettingVpn -> Maybe SettingVpn)
-> IO SettingVpn -> IO (Maybe SettingVpn)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr SettingVpn -> SettingVpn)
-> Ptr SettingVpn -> IO SettingVpn
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr SettingVpn -> SettingVpn
SettingVpn Ptr SettingVpn
ptr
        else Maybe SettingVpn -> IO (Maybe SettingVpn)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe SettingVpn
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveSettingVpnMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSettingVpnMethod "addDataItem" o = SettingVpnAddDataItemMethodInfo
    ResolveSettingVpnMethod "addSecret" o = SettingVpnAddSecretMethodInfo
    ResolveSettingVpnMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSettingVpnMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSettingVpnMethod "compare" o = NM.Setting.SettingCompareMethodInfo
    ResolveSettingVpnMethod "diff" o = NM.Setting.SettingDiffMethodInfo
    ResolveSettingVpnMethod "duplicate" o = NM.Setting.SettingDuplicateMethodInfo
    ResolveSettingVpnMethod "enumerateValues" o = NM.Setting.SettingEnumerateValuesMethodInfo
    ResolveSettingVpnMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSettingVpnMethod "foreachDataItem" o = SettingVpnForeachDataItemMethodInfo
    ResolveSettingVpnMethod "foreachSecret" o = SettingVpnForeachSecretMethodInfo
    ResolveSettingVpnMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSettingVpnMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveSettingVpnMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSettingVpnMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSettingVpnMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSettingVpnMethod "optionClearByName" o = NM.Setting.SettingOptionClearByNameMethodInfo
    ResolveSettingVpnMethod "optionGet" o = NM.Setting.SettingOptionGetMethodInfo
    ResolveSettingVpnMethod "optionGetAllNames" o = NM.Setting.SettingOptionGetAllNamesMethodInfo
    ResolveSettingVpnMethod "optionGetBoolean" o = NM.Setting.SettingOptionGetBooleanMethodInfo
    ResolveSettingVpnMethod "optionGetUint32" o = NM.Setting.SettingOptionGetUint32MethodInfo
    ResolveSettingVpnMethod "optionSet" o = NM.Setting.SettingOptionSetMethodInfo
    ResolveSettingVpnMethod "optionSetBoolean" o = NM.Setting.SettingOptionSetBooleanMethodInfo
    ResolveSettingVpnMethod "optionSetUint32" o = NM.Setting.SettingOptionSetUint32MethodInfo
    ResolveSettingVpnMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSettingVpnMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSettingVpnMethod "removeDataItem" o = SettingVpnRemoveDataItemMethodInfo
    ResolveSettingVpnMethod "removeSecret" o = SettingVpnRemoveSecretMethodInfo
    ResolveSettingVpnMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSettingVpnMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSettingVpnMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSettingVpnMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSettingVpnMethod "toString" o = NM.Setting.SettingToStringMethodInfo
    ResolveSettingVpnMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSettingVpnMethod "verify" o = NM.Setting.SettingVerifyMethodInfo
    ResolveSettingVpnMethod "verifySecrets" o = NM.Setting.SettingVerifySecretsMethodInfo
    ResolveSettingVpnMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSettingVpnMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSettingVpnMethod "getDataItem" o = SettingVpnGetDataItemMethodInfo
    ResolveSettingVpnMethod "getDataKeys" o = SettingVpnGetDataKeysMethodInfo
    ResolveSettingVpnMethod "getDbusPropertyType" o = NM.Setting.SettingGetDbusPropertyTypeMethodInfo
    ResolveSettingVpnMethod "getName" o = NM.Setting.SettingGetNameMethodInfo
    ResolveSettingVpnMethod "getNumDataItems" o = SettingVpnGetNumDataItemsMethodInfo
    ResolveSettingVpnMethod "getNumSecrets" o = SettingVpnGetNumSecretsMethodInfo
    ResolveSettingVpnMethod "getPersistent" o = SettingVpnGetPersistentMethodInfo
    ResolveSettingVpnMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSettingVpnMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSettingVpnMethod "getSecret" o = SettingVpnGetSecretMethodInfo
    ResolveSettingVpnMethod "getSecretFlags" o = NM.Setting.SettingGetSecretFlagsMethodInfo
    ResolveSettingVpnMethod "getSecretKeys" o = SettingVpnGetSecretKeysMethodInfo
    ResolveSettingVpnMethod "getServiceType" o = SettingVpnGetServiceTypeMethodInfo
    ResolveSettingVpnMethod "getTimeout" o = SettingVpnGetTimeoutMethodInfo
    ResolveSettingVpnMethod "getUserName" o = SettingVpnGetUserNameMethodInfo
    ResolveSettingVpnMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSettingVpnMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveSettingVpnMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSettingVpnMethod "setSecretFlags" o = NM.Setting.SettingSetSecretFlagsMethodInfo
    ResolveSettingVpnMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSettingVpnMethod t SettingVpn, O.OverloadedMethod info SettingVpn p) => OL.IsLabel t (SettingVpn -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveSettingVpnMethod t SettingVpn, O.OverloadedMethod info SettingVpn p, R.HasField t SettingVpn p) => R.HasField t SettingVpn p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveSettingVpnMethod t SettingVpn, O.OverloadedMethodInfo info SettingVpn) => OL.IsLabel t (O.MethodProxy info SettingVpn) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- VVV Prop "data"
   -- Type: TGHash (TBasicType TUTF8) (TBasicType TUTF8)
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@data@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #data
-- @
getSettingVpnData :: (MonadIO m, IsSettingVpn o) => o -> m (Maybe (Map.Map T.Text T.Text))
getSettingVpnData :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> m (Maybe (Map Text Text))
getSettingVpnData o
obj = IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text))
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text)))
-> IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text))
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe (Map Text Text))
forall a b. GObject a => a -> String -> IO b
B.Properties.getObjectPropertyHash o
obj String
"data"

-- | Set the value of the “@data@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #data 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnData :: (MonadIO m, IsSettingVpn o) => o -> Map.Map T.Text T.Text -> m ()
setSettingVpnData :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Map Text Text -> m ()
setSettingVpnData o
obj Map Text Text
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe (Map Text Text) -> IO ()
forall a b. GObject a => a -> String -> b -> IO ()
B.Properties.setObjectPropertyHash o
obj String
"data" (Map Text Text -> Maybe (Map Text Text)
forall a. a -> Maybe a
Just Map Text Text
val)

-- | Construct a t'GValueConstruct' with valid value for the “@data@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnData :: (IsSettingVpn o, MIO.MonadIO m) => Map.Map T.Text T.Text -> m (GValueConstruct o)
constructSettingVpnData :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Map Text Text -> m (GValueConstruct o)
constructSettingVpnData Map Text Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe (Map Text Text) -> IO (GValueConstruct o)
forall b o. String -> b -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyHash String
"data" (Map Text Text -> Maybe (Map Text Text)
forall a. a -> Maybe a
P.Just Map Text Text
val)

-- | Set the value of the “@data@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #data
-- @
clearSettingVpnData :: (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnData :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnData o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe (Map Text Text) -> IO ()
forall a b. GObject a => a -> String -> b -> IO ()
B.Properties.setObjectPropertyHash o
obj String
"data" (Maybe (Map Text Text)
forall a. Maybe a
Nothing :: Maybe (Map.Map T.Text T.Text))

#if defined(ENABLE_OVERLOADING)
data SettingVpnDataPropertyInfo
instance AttrInfo SettingVpnDataPropertyInfo where
    type AttrAllowedOps SettingVpnDataPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVpnDataPropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnDataPropertyInfo = (~) (Map.Map T.Text T.Text)
    type AttrTransferTypeConstraint SettingVpnDataPropertyInfo = (~) (Map.Map T.Text T.Text)
    type AttrTransferType SettingVpnDataPropertyInfo = Map.Map T.Text T.Text
    type AttrGetType SettingVpnDataPropertyInfo = (Maybe (Map.Map T.Text T.Text))
    type AttrLabel SettingVpnDataPropertyInfo = "data"
    type AttrOrigin SettingVpnDataPropertyInfo = SettingVpn
    attrGet = getSettingVpnData
    attrSet = setSettingVpnData
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnData
    attrClear = clearSettingVpnData
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.data"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:data"
        })
#endif

-- VVV Prop "persistent"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@persistent@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #persistent
-- @
getSettingVpnPersistent :: (MonadIO m, IsSettingVpn o) => o -> m Bool
getSettingVpnPersistent :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m Bool
getSettingVpnPersistent o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"persistent"

-- | Set the value of the “@persistent@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #persistent 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnPersistent :: (MonadIO m, IsSettingVpn o) => o -> Bool -> m ()
setSettingVpnPersistent :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Bool -> m ()
setSettingVpnPersistent o
obj Bool
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"persistent" Bool
val

-- | Construct a t'GValueConstruct' with valid value for the “@persistent@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnPersistent :: (IsSettingVpn o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructSettingVpnPersistent :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructSettingVpnPersistent Bool
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"persistent" Bool
val

#if defined(ENABLE_OVERLOADING)
data SettingVpnPersistentPropertyInfo
instance AttrInfo SettingVpnPersistentPropertyInfo where
    type AttrAllowedOps SettingVpnPersistentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint SettingVpnPersistentPropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnPersistentPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint SettingVpnPersistentPropertyInfo = (~) Bool
    type AttrTransferType SettingVpnPersistentPropertyInfo = Bool
    type AttrGetType SettingVpnPersistentPropertyInfo = Bool
    type AttrLabel SettingVpnPersistentPropertyInfo = "persistent"
    type AttrOrigin SettingVpnPersistentPropertyInfo = SettingVpn
    attrGet = getSettingVpnPersistent
    attrSet = setSettingVpnPersistent
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnPersistent
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.persistent"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:persistent"
        })
#endif

-- VVV Prop "secrets"
   -- Type: TGHash (TBasicType TUTF8) (TBasicType TUTF8)
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@secrets@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #secrets
-- @
getSettingVpnSecrets :: (MonadIO m, IsSettingVpn o) => o -> m (Maybe (Map.Map T.Text T.Text))
getSettingVpnSecrets :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> m (Maybe (Map Text Text))
getSettingVpnSecrets o
obj = IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text))
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text)))
-> IO (Maybe (Map Text Text)) -> m (Maybe (Map Text Text))
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe (Map Text Text))
forall a b. GObject a => a -> String -> IO b
B.Properties.getObjectPropertyHash o
obj String
"secrets"

-- | Set the value of the “@secrets@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #secrets 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnSecrets :: (MonadIO m, IsSettingVpn o) => o -> Map.Map T.Text T.Text -> m ()
setSettingVpnSecrets :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Map Text Text -> m ()
setSettingVpnSecrets o
obj Map Text Text
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe (Map Text Text) -> IO ()
forall a b. GObject a => a -> String -> b -> IO ()
B.Properties.setObjectPropertyHash o
obj String
"secrets" (Map Text Text -> Maybe (Map Text Text)
forall a. a -> Maybe a
Just Map Text Text
val)

-- | Construct a t'GValueConstruct' with valid value for the “@secrets@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnSecrets :: (IsSettingVpn o, MIO.MonadIO m) => Map.Map T.Text T.Text -> m (GValueConstruct o)
constructSettingVpnSecrets :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Map Text Text -> m (GValueConstruct o)
constructSettingVpnSecrets Map Text Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe (Map Text Text) -> IO (GValueConstruct o)
forall b o. String -> b -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyHash String
"secrets" (Map Text Text -> Maybe (Map Text Text)
forall a. a -> Maybe a
P.Just Map Text Text
val)

-- | Set the value of the “@secrets@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #secrets
-- @
clearSettingVpnSecrets :: (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnSecrets :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnSecrets o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe (Map Text Text) -> IO ()
forall a b. GObject a => a -> String -> b -> IO ()
B.Properties.setObjectPropertyHash o
obj String
"secrets" (Maybe (Map Text Text)
forall a. Maybe a
Nothing :: Maybe (Map.Map T.Text T.Text))

#if defined(ENABLE_OVERLOADING)
data SettingVpnSecretsPropertyInfo
instance AttrInfo SettingVpnSecretsPropertyInfo where
    type AttrAllowedOps SettingVpnSecretsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVpnSecretsPropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnSecretsPropertyInfo = (~) (Map.Map T.Text T.Text)
    type AttrTransferTypeConstraint SettingVpnSecretsPropertyInfo = (~) (Map.Map T.Text T.Text)
    type AttrTransferType SettingVpnSecretsPropertyInfo = Map.Map T.Text T.Text
    type AttrGetType SettingVpnSecretsPropertyInfo = (Maybe (Map.Map T.Text T.Text))
    type AttrLabel SettingVpnSecretsPropertyInfo = "secrets"
    type AttrOrigin SettingVpnSecretsPropertyInfo = SettingVpn
    attrGet = getSettingVpnSecrets
    attrSet = setSettingVpnSecrets
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnSecrets
    attrClear = clearSettingVpnSecrets
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.secrets"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:secrets"
        })
#endif

-- VVV Prop "service-type"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@service-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #serviceType
-- @
getSettingVpnServiceType :: (MonadIO m, IsSettingVpn o) => o -> m T.Text
getSettingVpnServiceType :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m Text
getSettingVpnServiceType o
obj = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ Text -> IO (Maybe Text) -> IO Text
forall a. HasCallStack => Text -> IO (Maybe a) -> IO a
checkUnexpectedNothing Text
"getSettingVpnServiceType" (IO (Maybe Text) -> IO Text) -> IO (Maybe Text) -> IO Text
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe Text)
forall a. GObject a => a -> String -> IO (Maybe Text)
B.Properties.getObjectPropertyString o
obj String
"service-type"

-- | Set the value of the “@service-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #serviceType 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnServiceType :: (MonadIO m, IsSettingVpn o) => o -> T.Text -> m ()
setSettingVpnServiceType :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Text -> m ()
setSettingVpnServiceType o
obj Text
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"service-type" (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
val)

-- | Construct a t'GValueConstruct' with valid value for the “@service-type@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnServiceType :: (IsSettingVpn o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructSettingVpnServiceType :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructSettingVpnServiceType Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Text -> IO (GValueConstruct o)
forall o. String -> Maybe Text -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyString String
"service-type" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)

-- | Set the value of the “@service-type@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #serviceType
-- @
clearSettingVpnServiceType :: (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnServiceType :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnServiceType o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"service-type" (Maybe Text
forall a. Maybe a
Nothing :: Maybe T.Text)

#if defined(ENABLE_OVERLOADING)
data SettingVpnServiceTypePropertyInfo
instance AttrInfo SettingVpnServiceTypePropertyInfo where
    type AttrAllowedOps SettingVpnServiceTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVpnServiceTypePropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnServiceTypePropertyInfo = (~) T.Text
    type AttrTransferTypeConstraint SettingVpnServiceTypePropertyInfo = (~) T.Text
    type AttrTransferType SettingVpnServiceTypePropertyInfo = T.Text
    type AttrGetType SettingVpnServiceTypePropertyInfo = T.Text
    type AttrLabel SettingVpnServiceTypePropertyInfo = "service-type"
    type AttrOrigin SettingVpnServiceTypePropertyInfo = SettingVpn
    attrGet = getSettingVpnServiceType
    attrSet = setSettingVpnServiceType
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnServiceType
    attrClear = clearSettingVpnServiceType
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.serviceType"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:serviceType"
        })
#endif

-- VVV Prop "timeout"
   -- Type: TBasicType TUInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@timeout@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #timeout
-- @
getSettingVpnTimeout :: (MonadIO m, IsSettingVpn o) => o -> m Word32
getSettingVpnTimeout :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> m Word32
getSettingVpnTimeout o
obj = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word32
forall a. GObject a => a -> String -> IO Word32
B.Properties.getObjectPropertyUInt32 o
obj String
"timeout"

-- | Set the value of the “@timeout@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #timeout 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnTimeout :: (MonadIO m, IsSettingVpn o) => o -> Word32 -> m ()
setSettingVpnTimeout :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Word32 -> m ()
setSettingVpnTimeout o
obj Word32
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Word32 -> IO ()
forall a. GObject a => a -> String -> Word32 -> IO ()
B.Properties.setObjectPropertyUInt32 o
obj String
"timeout" Word32
val

-- | Construct a t'GValueConstruct' with valid value for the “@timeout@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnTimeout :: (IsSettingVpn o, MIO.MonadIO m) => Word32 -> m (GValueConstruct o)
constructSettingVpnTimeout :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Word32 -> m (GValueConstruct o)
constructSettingVpnTimeout Word32
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Word32 -> IO (GValueConstruct o)
forall o. String -> Word32 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt32 String
"timeout" Word32
val

#if defined(ENABLE_OVERLOADING)
data SettingVpnTimeoutPropertyInfo
instance AttrInfo SettingVpnTimeoutPropertyInfo where
    type AttrAllowedOps SettingVpnTimeoutPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint SettingVpnTimeoutPropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnTimeoutPropertyInfo = (~) Word32
    type AttrTransferTypeConstraint SettingVpnTimeoutPropertyInfo = (~) Word32
    type AttrTransferType SettingVpnTimeoutPropertyInfo = Word32
    type AttrGetType SettingVpnTimeoutPropertyInfo = Word32
    type AttrLabel SettingVpnTimeoutPropertyInfo = "timeout"
    type AttrOrigin SettingVpnTimeoutPropertyInfo = SettingVpn
    attrGet = getSettingVpnTimeout
    attrSet = setSettingVpnTimeout
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnTimeout
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.timeout"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:timeout"
        })
#endif

-- VVV Prop "user-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@user-name@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVpn #userName
-- @
getSettingVpnUserName :: (MonadIO m, IsSettingVpn o) => o -> m T.Text
getSettingVpnUserName :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m Text
getSettingVpnUserName o
obj = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ Text -> IO (Maybe Text) -> IO Text
forall a. HasCallStack => Text -> IO (Maybe a) -> IO a
checkUnexpectedNothing Text
"getSettingVpnUserName" (IO (Maybe Text) -> IO Text) -> IO (Maybe Text) -> IO Text
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe Text)
forall a. GObject a => a -> String -> IO (Maybe Text)
B.Properties.getObjectPropertyString o
obj String
"user-name"

-- | Set the value of the “@user-name@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVpn [ #userName 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVpnUserName :: (MonadIO m, IsSettingVpn o) => o -> T.Text -> m ()
setSettingVpnUserName :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVpn o) =>
o -> Text -> m ()
setSettingVpnUserName o
obj Text
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"user-name" (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
val)

-- | Construct a t'GValueConstruct' with valid value for the “@user-name@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVpnUserName :: (IsSettingVpn o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructSettingVpnUserName :: forall o (m :: * -> *).
(IsSettingVpn o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructSettingVpnUserName Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Text -> IO (GValueConstruct o)
forall o. String -> Maybe Text -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyString String
"user-name" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)

-- | Set the value of the “@user-name@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #userName
-- @
clearSettingVpnUserName :: (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnUserName :: forall (m :: * -> *) o. (MonadIO m, IsSettingVpn o) => o -> m ()
clearSettingVpnUserName o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"user-name" (Maybe Text
forall a. Maybe a
Nothing :: Maybe T.Text)

#if defined(ENABLE_OVERLOADING)
data SettingVpnUserNamePropertyInfo
instance AttrInfo SettingVpnUserNamePropertyInfo where
    type AttrAllowedOps SettingVpnUserNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVpnUserNamePropertyInfo = IsSettingVpn
    type AttrSetTypeConstraint SettingVpnUserNamePropertyInfo = (~) T.Text
    type AttrTransferTypeConstraint SettingVpnUserNamePropertyInfo = (~) T.Text
    type AttrTransferType SettingVpnUserNamePropertyInfo = T.Text
    type AttrGetType SettingVpnUserNamePropertyInfo = T.Text
    type AttrLabel SettingVpnUserNamePropertyInfo = "user-name"
    type AttrOrigin SettingVpnUserNamePropertyInfo = SettingVpn
    attrGet = getSettingVpnUserName
    attrSet = setSettingVpnUserName
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVpnUserName
    attrClear = clearSettingVpnUserName
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.userName"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#g:attr:userName"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SettingVpn
type instance O.AttributeList SettingVpn = SettingVpnAttributeList
type SettingVpnAttributeList = ('[ '("data", SettingVpnDataPropertyInfo), '("name", NM.Setting.SettingNamePropertyInfo), '("persistent", SettingVpnPersistentPropertyInfo), '("secrets", SettingVpnSecretsPropertyInfo), '("serviceType", SettingVpnServiceTypePropertyInfo), '("timeout", SettingVpnTimeoutPropertyInfo), '("userName", SettingVpnUserNamePropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
settingVpnData :: AttrLabelProxy "data"
settingVpnData = AttrLabelProxy

settingVpnPersistent :: AttrLabelProxy "persistent"
settingVpnPersistent = AttrLabelProxy

settingVpnSecrets :: AttrLabelProxy "secrets"
settingVpnSecrets = AttrLabelProxy

settingVpnServiceType :: AttrLabelProxy "serviceType"
settingVpnServiceType = AttrLabelProxy

settingVpnTimeout :: AttrLabelProxy "timeout"
settingVpnTimeout = AttrLabelProxy

settingVpnUserName :: AttrLabelProxy "userName"
settingVpnUserName = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList SettingVpn = SettingVpnSignalList
type SettingVpnSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])

#endif

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

foreign import ccall "nm_setting_vpn_new" nm_setting_vpn_new :: 
    IO (Ptr SettingVpn)

-- | Creates a new t'GI.NM.Objects.SettingVpn.SettingVpn' object with default values.
settingVpnNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m SettingVpn
    -- ^ __Returns:__ the new empty t'GI.NM.Objects.SettingVpn.SettingVpn' object
settingVpnNew :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m SettingVpn
settingVpnNew  = IO SettingVpn -> m SettingVpn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SettingVpn -> m SettingVpn) -> IO SettingVpn -> m SettingVpn
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
result <- IO (Ptr SettingVpn)
nm_setting_vpn_new
    Text -> Ptr SettingVpn -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingVpnNew" Ptr SettingVpn
result
    SettingVpn
result' <- ((ManagedPtr SettingVpn -> SettingVpn)
-> Ptr SettingVpn -> IO SettingVpn
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr SettingVpn -> SettingVpn
SettingVpn) Ptr SettingVpn
result
    SettingVpn -> IO SettingVpn
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return SettingVpn
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- method SettingVpn::add_data_item
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "a name that uniquely identifies the given value @item"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "item"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the value to be referenced by @key"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_add_data_item" nm_setting_vpn_add_data_item :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    CString ->                              -- item : TBasicType TUTF8
    IO ()

-- | Establishes a relationship between /@key@/ and /@item@/ internally in the
-- setting which may be retrieved later.  Should not be used to store passwords
-- or other secrets, which is what 'GI.NM.Objects.SettingVpn.settingVpnAddSecret' is for.
-- 
-- Before 1.24, /@item@/ must not be 'P.Nothing' and not an empty string. Since 1.24,
-- /@item@/ can be set to an empty string. It can also be set to 'P.Nothing' to unset
-- the key. In that case, the behavior is as if calling 'GI.NM.Objects.SettingVpn.settingVpnRemoveDataItem'.
settingVpnAddDataItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: a name that uniquely identifies the given value /@item@/
    -> Maybe (T.Text)
    -- ^ /@item@/: the value to be referenced by /@key@/
    -> m ()
settingVpnAddDataItem :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> Maybe Text -> m ()
settingVpnAddDataItem a
setting Text
key Maybe Text
item = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CString
maybeItem <- case Maybe Text
item of
        Maybe Text
Nothing -> CString -> IO CString
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CString
forall a. Ptr a
FP.nullPtr
        Just Text
jItem -> do
            CString
jItem' <- Text -> IO CString
textToCString Text
jItem
            CString -> IO CString
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CString
jItem'
    Ptr SettingVpn -> CString -> CString -> IO ()
nm_setting_vpn_add_data_item Ptr SettingVpn
setting' CString
key' CString
maybeItem
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
maybeItem
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data SettingVpnAddDataItemMethodInfo
instance (signature ~ (T.Text -> Maybe (T.Text) -> m ()), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnAddDataItemMethodInfo a signature where
    overloadedMethod = settingVpnAddDataItem

instance O.OverloadedMethodInfo SettingVpnAddDataItemMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnAddDataItem",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnAddDataItem"
        })


#endif

-- method SettingVpn::add_secret
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "a name that uniquely identifies the given secret @secret"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "secret"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the secret to be referenced by @key"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_add_secret" nm_setting_vpn_add_secret :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    CString ->                              -- secret : TBasicType TUTF8
    IO ()

-- | Establishes a relationship between /@key@/ and /@secret@/ internally in the
-- setting which may be retrieved later.
-- 
-- Before 1.24, /@secret@/ must not be 'P.Nothing' and not an empty string. Since 1.24,
-- /@secret@/ can be set to an empty string. It can also be set to 'P.Nothing' to unset
-- the key. In that case, the behavior is as if calling 'GI.NM.Objects.SettingVpn.settingVpnRemoveSecret'.
settingVpnAddSecret ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: a name that uniquely identifies the given secret /@secret@/
    -> Maybe (T.Text)
    -- ^ /@secret@/: the secret to be referenced by /@key@/
    -> m ()
settingVpnAddSecret :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> Maybe Text -> m ()
settingVpnAddSecret a
setting Text
key Maybe Text
secret = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CString
maybeSecret <- case Maybe Text
secret of
        Maybe Text
Nothing -> CString -> IO CString
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CString
forall a. Ptr a
FP.nullPtr
        Just Text
jSecret -> do
            CString
jSecret' <- Text -> IO CString
textToCString Text
jSecret
            CString -> IO CString
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CString
jSecret'
    Ptr SettingVpn -> CString -> CString -> IO ()
nm_setting_vpn_add_secret Ptr SettingVpn
setting' CString
key' CString
maybeSecret
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
maybeSecret
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data SettingVpnAddSecretMethodInfo
instance (signature ~ (T.Text -> Maybe (T.Text) -> m ()), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnAddSecretMethodInfo a signature where
    overloadedMethod = settingVpnAddSecret

instance O.OverloadedMethodInfo SettingVpnAddSecretMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnAddSecret",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnAddSecret"
        })


#endif

-- method SettingVpn::foreach_data_item
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "func"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VpnIterFunc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an user provided function"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeCall
--           , argClosure = 2
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "user_data"
--           , argType = TBasicType TPtr
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "data to be passed to @func"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_foreach_data_item" nm_setting_vpn_foreach_data_item :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    FunPtr NM.Callbacks.C_VpnIterFunc ->    -- func : TInterface (Name {namespace = "NM", name = "VpnIterFunc"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

-- | Iterates all data items stored in this setting.  It is safe to add, remove,
-- and modify data items inside /@func@/, though any additions or removals made
-- during iteration will not be part of the iteration.
settingVpnForeachDataItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: a t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> NM.Callbacks.VpnIterFunc
    -- ^ /@func@/: an user provided function
    -> m ()
settingVpnForeachDataItem :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> VpnIterFunc -> m ()
settingVpnForeachDataItem a
setting VpnIterFunc
func = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    FunPtr C_VpnIterFunc
func' <- C_VpnIterFunc -> IO (FunPtr C_VpnIterFunc)
NM.Callbacks.mk_VpnIterFunc (Maybe (Ptr (FunPtr C_VpnIterFunc))
-> VpnIterFunc_WithClosures -> C_VpnIterFunc
NM.Callbacks.wrap_VpnIterFunc Maybe (Ptr (FunPtr C_VpnIterFunc))
forall a. Maybe a
Nothing (VpnIterFunc -> VpnIterFunc_WithClosures
NM.Callbacks.drop_closures_VpnIterFunc VpnIterFunc
func))
    let userData :: Ptr a
userData = Ptr a
forall a. Ptr a
nullPtr
    Ptr SettingVpn -> FunPtr C_VpnIterFunc -> Ptr () -> IO ()
nm_setting_vpn_foreach_data_item Ptr SettingVpn
setting' FunPtr C_VpnIterFunc
func' Ptr ()
forall a. Ptr a
userData
    Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_VpnIterFunc -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_VpnIterFunc
func'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data SettingVpnForeachDataItemMethodInfo
instance (signature ~ (NM.Callbacks.VpnIterFunc -> m ()), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnForeachDataItemMethodInfo a signature where
    overloadedMethod = settingVpnForeachDataItem

instance O.OverloadedMethodInfo SettingVpnForeachDataItemMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnForeachDataItem",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnForeachDataItem"
        })


#endif

-- method SettingVpn::foreach_secret
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "func"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VpnIterFunc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an user provided function"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeCall
--           , argClosure = 2
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "user_data"
--           , argType = TBasicType TPtr
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "data to be passed to @func"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_foreach_secret" nm_setting_vpn_foreach_secret :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    FunPtr NM.Callbacks.C_VpnIterFunc ->    -- func : TInterface (Name {namespace = "NM", name = "VpnIterFunc"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

-- | Iterates all secrets stored in this setting.  It is safe to add, remove,
-- and modify secrets inside /@func@/, though any additions or removals made during
-- iteration will not be part of the iteration.
settingVpnForeachSecret ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: a t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> NM.Callbacks.VpnIterFunc
    -- ^ /@func@/: an user provided function
    -> m ()
settingVpnForeachSecret :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> VpnIterFunc -> m ()
settingVpnForeachSecret a
setting VpnIterFunc
func = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    FunPtr C_VpnIterFunc
func' <- C_VpnIterFunc -> IO (FunPtr C_VpnIterFunc)
NM.Callbacks.mk_VpnIterFunc (Maybe (Ptr (FunPtr C_VpnIterFunc))
-> VpnIterFunc_WithClosures -> C_VpnIterFunc
NM.Callbacks.wrap_VpnIterFunc Maybe (Ptr (FunPtr C_VpnIterFunc))
forall a. Maybe a
Nothing (VpnIterFunc -> VpnIterFunc_WithClosures
NM.Callbacks.drop_closures_VpnIterFunc VpnIterFunc
func))
    let userData :: Ptr a
userData = Ptr a
forall a. Ptr a
nullPtr
    Ptr SettingVpn -> FunPtr C_VpnIterFunc -> Ptr () -> IO ()
nm_setting_vpn_foreach_secret Ptr SettingVpn
setting' FunPtr C_VpnIterFunc
func' Ptr ()
forall a. Ptr a
userData
    Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_VpnIterFunc -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_VpnIterFunc
func'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data SettingVpnForeachSecretMethodInfo
instance (signature ~ (NM.Callbacks.VpnIterFunc -> m ()), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnForeachSecretMethodInfo a signature where
    overloadedMethod = settingVpnForeachSecret

instance O.OverloadedMethodInfo SettingVpnForeachSecretMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnForeachSecret",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnForeachSecret"
        })


#endif

-- method SettingVpn::get_data_item
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the name of the data item to retrieve"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_data_item" nm_setting_vpn_get_data_item :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    IO CString

-- | Retrieves the data item of a key\/value relationship previously established
-- by 'GI.NM.Objects.SettingVpn.settingVpnAddDataItem'.
settingVpnGetDataItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: the name of the data item to retrieve
    -> m T.Text
    -- ^ __Returns:__ the data item, if any
settingVpnGetDataItem :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> m Text
settingVpnGetDataItem a
setting Text
key = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CString
result <- Ptr SettingVpn -> CString -> IO CString
nm_setting_vpn_get_data_item Ptr SettingVpn
setting' CString
key'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingVpnGetDataItem" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetDataItemMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetDataItemMethodInfo a signature where
    overloadedMethod = settingVpnGetDataItem

instance O.OverloadedMethodInfo SettingVpnGetDataItemMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetDataItem",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetDataItem"
        })


#endif

-- method SettingVpn::get_data_keys
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "out_length"
--           , argType = TBasicType TUInt
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the length of the returned array"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: [ Arg
--              { argCName = "out_length"
--              , argType = TBasicType TUInt
--              , direction = DirectionOut
--              , mayBeNull = False
--              , argDoc =
--                  Documentation
--                    { rawDocText = Just "the length of the returned array"
--                    , sinceVersion = Nothing
--                    }
--              , argScope = ScopeTypeInvalid
--              , argClosure = -1
--              , argDestroy = -1
--              , argCallerAllocates = False
--              , argCallbackUserData = False
--              , transfer = TransferEverything
--              }
--          ]
-- returnType: Just (TCArray False (-1) 1 (TBasicType TUTF8))
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_data_keys" nm_setting_vpn_get_data_keys :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    Ptr Word32 ->                           -- out_length : TBasicType TUInt
    IO (Ptr CString)

-- | Retrieves every data key inside /@setting@/, as an array.
-- 
-- /Since: 1.12/
settingVpnGetDataKeys ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m (Maybe [T.Text])
    -- ^ __Returns:__ a
    --   'P.Nothing'-terminated array containing each data key or 'P.Nothing' if
    --   there are no data items.
settingVpnGetDataKeys :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m (Maybe [Text])
settingVpnGetDataKeys a
setting = IO (Maybe [Text]) -> m (Maybe [Text])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe [Text]) -> m (Maybe [Text]))
-> IO (Maybe [Text]) -> m (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr Word32
outLength <- IO (Ptr Word32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
    Ptr CString
result <- Ptr SettingVpn -> Ptr Word32 -> IO (Ptr CString)
nm_setting_vpn_get_data_keys Ptr SettingVpn
setting' Ptr Word32
outLength
    Word32
outLength' <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
outLength
    Maybe [Text]
maybeResult <- Ptr CString -> (Ptr CString -> IO [Text]) -> IO (Maybe [Text])
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr CString
result ((Ptr CString -> IO [Text]) -> IO (Maybe [Text]))
-> (Ptr CString -> IO [Text]) -> IO (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ \Ptr CString
result' -> do
        [Text]
result'' <- (Word32 -> Ptr CString -> IO [Text]
forall a.
(HasCallStack, Integral a) =>
a -> Ptr CString -> IO [Text]
unpackUTF8CArrayWithLength Word32
outLength') Ptr CString
result'
        Ptr CString -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CString
result'
        [Text] -> IO [Text]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return [Text]
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word32
outLength
    Maybe [Text] -> IO (Maybe [Text])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe [Text]
maybeResult

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetDataKeysMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetDataKeysMethodInfo a signature where
    overloadedMethod = settingVpnGetDataKeys

instance O.OverloadedMethodInfo SettingVpnGetDataKeysMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetDataKeys",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetDataKeys"
        })


#endif

-- method SettingVpn::get_num_data_items
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt32)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_num_data_items" nm_setting_vpn_get_num_data_items :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO Word32

-- | Gets number of key\/value pairs of VPN configuration data.
settingVpnGetNumDataItems ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m Word32
    -- ^ __Returns:__ the number of VPN plugin specific configuration data items
settingVpnGetNumDataItems :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Word32
settingVpnGetNumDataItems a
setting = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingVpn -> IO Word32
nm_setting_vpn_get_num_data_items Ptr SettingVpn
setting'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetNumDataItemsMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetNumDataItemsMethodInfo a signature where
    overloadedMethod = settingVpnGetNumDataItems

instance O.OverloadedMethodInfo SettingVpnGetNumDataItemsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetNumDataItems",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetNumDataItems"
        })


#endif

-- method SettingVpn::get_num_secrets
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt32)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_num_secrets" nm_setting_vpn_get_num_secrets :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO Word32

-- | Gets number of VPN plugin specific secrets in the setting.
settingVpnGetNumSecrets ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m Word32
    -- ^ __Returns:__ the number of VPN plugin specific secrets
settingVpnGetNumSecrets :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Word32
settingVpnGetNumSecrets a
setting = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingVpn -> IO Word32
nm_setting_vpn_get_num_secrets Ptr SettingVpn
setting'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetNumSecretsMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetNumSecretsMethodInfo a signature where
    overloadedMethod = settingVpnGetNumSecrets

instance O.OverloadedMethodInfo SettingVpnGetNumSecretsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetNumSecrets",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetNumSecrets"
        })


#endif

-- method SettingVpn::get_persistent
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_persistent" nm_setting_vpn_get_persistent :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO CInt

-- | /No description available in the introspection data./
-- 
-- /Since: 1.42/
settingVpnGetPersistent ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m Bool
    -- ^ __Returns:__ the [SettingVpn:persistent]("GI.NM.Objects.SettingVpn#g:attr:persistent") property of the setting
settingVpnGetPersistent :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Bool
settingVpnGetPersistent a
setting = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CInt
result <- Ptr SettingVpn -> IO CInt
nm_setting_vpn_get_persistent Ptr SettingVpn
setting'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetPersistentMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetPersistentMethodInfo a signature where
    overloadedMethod = settingVpnGetPersistent

instance O.OverloadedMethodInfo SettingVpnGetPersistentMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetPersistent",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetPersistent"
        })


#endif

-- method SettingVpn::get_secret
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the name of the secret to retrieve"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_secret" nm_setting_vpn_get_secret :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    IO CString

-- | Retrieves the secret of a key\/value relationship previously established
-- by 'GI.NM.Objects.SettingVpn.settingVpnAddSecret'.
settingVpnGetSecret ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: the name of the secret to retrieve
    -> m T.Text
    -- ^ __Returns:__ the secret, if any
settingVpnGetSecret :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> m Text
settingVpnGetSecret a
setting Text
key = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CString
result <- Ptr SettingVpn -> CString -> IO CString
nm_setting_vpn_get_secret Ptr SettingVpn
setting' CString
key'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingVpnGetSecret" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetSecretMethodInfo
instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetSecretMethodInfo a signature where
    overloadedMethod = settingVpnGetSecret

instance O.OverloadedMethodInfo SettingVpnGetSecretMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetSecret",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetSecret"
        })


#endif

-- method SettingVpn::get_secret_keys
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "out_length"
--           , argType = TBasicType TUInt
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the length of the returned array"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: [ Arg
--              { argCName = "out_length"
--              , argType = TBasicType TUInt
--              , direction = DirectionOut
--              , mayBeNull = False
--              , argDoc =
--                  Documentation
--                    { rawDocText = Just "the length of the returned array"
--                    , sinceVersion = Nothing
--                    }
--              , argScope = ScopeTypeInvalid
--              , argClosure = -1
--              , argDestroy = -1
--              , argCallerAllocates = False
--              , argCallbackUserData = False
--              , transfer = TransferEverything
--              }
--          ]
-- returnType: Just (TCArray False (-1) 1 (TBasicType TUTF8))
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_secret_keys" nm_setting_vpn_get_secret_keys :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    Ptr Word32 ->                           -- out_length : TBasicType TUInt
    IO (Ptr CString)

-- | Retrieves every secret key inside /@setting@/, as an array.
-- 
-- /Since: 1.12/
settingVpnGetSecretKeys ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m (Maybe [T.Text])
    -- ^ __Returns:__ a
    --   'P.Nothing'-terminated array containing each secret key or 'P.Nothing' if
    --   there are no secrets.
settingVpnGetSecretKeys :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m (Maybe [Text])
settingVpnGetSecretKeys a
setting = IO (Maybe [Text]) -> m (Maybe [Text])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe [Text]) -> m (Maybe [Text]))
-> IO (Maybe [Text]) -> m (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr Word32
outLength <- IO (Ptr Word32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
    Ptr CString
result <- Ptr SettingVpn -> Ptr Word32 -> IO (Ptr CString)
nm_setting_vpn_get_secret_keys Ptr SettingVpn
setting' Ptr Word32
outLength
    Word32
outLength' <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
outLength
    Maybe [Text]
maybeResult <- Ptr CString -> (Ptr CString -> IO [Text]) -> IO (Maybe [Text])
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr CString
result ((Ptr CString -> IO [Text]) -> IO (Maybe [Text]))
-> (Ptr CString -> IO [Text]) -> IO (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ \Ptr CString
result' -> do
        [Text]
result'' <- (Word32 -> Ptr CString -> IO [Text]
forall a.
(HasCallStack, Integral a) =>
a -> Ptr CString -> IO [Text]
unpackUTF8CArrayWithLength Word32
outLength') Ptr CString
result'
        Ptr CString -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CString
result'
        [Text] -> IO [Text]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return [Text]
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word32
outLength
    Maybe [Text] -> IO (Maybe [Text])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe [Text]
maybeResult

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetSecretKeysMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetSecretKeysMethodInfo a signature where
    overloadedMethod = settingVpnGetSecretKeys

instance O.OverloadedMethodInfo SettingVpnGetSecretKeysMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetSecretKeys",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetSecretKeys"
        })


#endif

-- method SettingVpn::get_service_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_service_type" nm_setting_vpn_get_service_type :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO CString

-- | Returns the service name of the VPN, which identifies the specific VPN
-- plugin that should be used to connect to this VPN.
settingVpnGetServiceType ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m T.Text
    -- ^ __Returns:__ the VPN plugin\'s service name
settingVpnGetServiceType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Text
settingVpnGetServiceType a
setting = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
result <- Ptr SettingVpn -> IO CString
nm_setting_vpn_get_service_type Ptr SettingVpn
setting'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingVpnGetServiceType" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetServiceTypeMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetServiceTypeMethodInfo a signature where
    overloadedMethod = settingVpnGetServiceType

instance O.OverloadedMethodInfo SettingVpnGetServiceTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetServiceType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetServiceType"
        })


#endif

-- method SettingVpn::get_timeout
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt32)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_timeout" nm_setting_vpn_get_timeout :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO Word32

-- | /No description available in the introspection data./
-- 
-- /Since: 1.2/
settingVpnGetTimeout ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m Word32
    -- ^ __Returns:__ the [SettingVpn:timeout]("GI.NM.Objects.SettingVpn#g:attr:timeout") property of the setting
settingVpnGetTimeout :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Word32
settingVpnGetTimeout a
setting = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingVpn -> IO Word32
nm_setting_vpn_get_timeout Ptr SettingVpn
setting'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetTimeoutMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetTimeoutMethodInfo a signature where
    overloadedMethod = settingVpnGetTimeout

instance O.OverloadedMethodInfo SettingVpnGetTimeoutMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetTimeout",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetTimeout"
        })


#endif

-- method SettingVpn::get_user_name
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_get_user_name" nm_setting_vpn_get_user_name :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    IO CString

-- | /No description available in the introspection data./
settingVpnGetUserName ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> m T.Text
    -- ^ __Returns:__ the [SettingVpn:userName]("GI.NM.Objects.SettingVpn#g:attr:userName") property of the setting
settingVpnGetUserName :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> m Text
settingVpnGetUserName a
setting = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
result <- Ptr SettingVpn -> IO CString
nm_setting_vpn_get_user_name Ptr SettingVpn
setting'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingVpnGetUserName" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnGetUserNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnGetUserNameMethodInfo a signature where
    overloadedMethod = settingVpnGetUserName

instance O.OverloadedMethodInfo SettingVpnGetUserNameMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnGetUserName",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnGetUserName"
        })


#endif

-- method SettingVpn::remove_data_item
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the name of the data item to remove"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_remove_data_item" nm_setting_vpn_remove_data_item :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    IO CInt

-- | Deletes a key\/value relationship previously established by
-- 'GI.NM.Objects.SettingVpn.settingVpnAddDataItem'.
settingVpnRemoveDataItem ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: the name of the data item to remove
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the data item was found and removed from the internal list,
    -- 'P.False' if it was not.
settingVpnRemoveDataItem :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> m Bool
settingVpnRemoveDataItem a
setting Text
key = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CInt
result <- Ptr SettingVpn -> CString -> IO CInt
nm_setting_vpn_remove_data_item Ptr SettingVpn
setting' CString
key'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnRemoveDataItemMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnRemoveDataItemMethodInfo a signature where
    overloadedMethod = settingVpnRemoveDataItem

instance O.OverloadedMethodInfo SettingVpnRemoveDataItemMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnRemoveDataItem",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnRemoveDataItem"
        })


#endif

-- method SettingVpn::remove_secret
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVpn" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVpn" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "key"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the name of the secret to remove"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vpn_remove_secret" nm_setting_vpn_remove_secret :: 
    Ptr SettingVpn ->                       -- setting : TInterface (Name {namespace = "NM", name = "SettingVpn"})
    CString ->                              -- key : TBasicType TUTF8
    IO CInt

-- | Deletes a key\/value relationship previously established by
-- 'GI.NM.Objects.SettingVpn.settingVpnAddSecret'.
settingVpnRemoveSecret ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVpn a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVpn.SettingVpn'
    -> T.Text
    -- ^ /@key@/: the name of the secret to remove
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the secret was found and removed from the internal list,
    -- 'P.False' if it was not.
settingVpnRemoveSecret :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVpn a) =>
a -> Text -> m Bool
settingVpnRemoveSecret a
setting Text
key = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVpn
setting' <- a -> IO (Ptr SettingVpn)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
key' <- Text -> IO CString
textToCString Text
key
    CInt
result <- Ptr SettingVpn -> CString -> IO CInt
nm_setting_vpn_remove_secret Ptr SettingVpn
setting' CString
key'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
key'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingVpnRemoveSecretMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsSettingVpn a) => O.OverloadedMethod SettingVpnRemoveSecretMethodInfo a signature where
    overloadedMethod = settingVpnRemoveSecret

instance O.OverloadedMethodInfo SettingVpnRemoveSecretMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVpn.settingVpnRemoveSecret",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVpn.html#v:settingVpnRemoveSecret"
        })


#endif