{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Wi-Fi P2P Settings
-- 
-- /Since: 1.16/

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

module GI.NM.Objects.SettingWifiP2P
    ( 

-- * Exported types
    SettingWifiP2P(..)                      ,
    IsSettingWifiP2P                        ,
    toSettingWifiP2P                        ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [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"), [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"), [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"), [getDbusPropertyType]("GI.NM.Objects.Setting#g:method:getDbusPropertyType"), [getName]("GI.NM.Objects.Setting#g:method:getName"), [getPeer]("GI.NM.Objects.SettingWifiP2P#g:method:getPeer"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getSecretFlags]("GI.NM.Objects.Setting#g:method:getSecretFlags"), [getWfdIes]("GI.NM.Objects.SettingWifiP2P#g:method:getWfdIes"), [getWpsMethod]("GI.NM.Objects.SettingWifiP2P#g:method:getWpsMethod").
-- 
-- ==== 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)
    ResolveSettingWifiP2PMethod             ,
#endif

-- ** getPeer #method:getPeer#

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PGetPeerMethodInfo         ,
#endif
    settingWifiP2PGetPeer                   ,


-- ** getWfdIes #method:getWfdIes#

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PGetWfdIesMethodInfo       ,
#endif
    settingWifiP2PGetWfdIes                 ,


-- ** getWpsMethod #method:getWpsMethod#

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PGetWpsMethodMethodInfo    ,
#endif
    settingWifiP2PGetWpsMethod              ,


-- ** new #method:new#

    settingWifiP2PNew                       ,




 -- * Properties


-- ** peer #attr:peer#
-- | The P2P device that should be connected to. Currently, this is the only
-- way to create or join a group.
-- 
-- /Since: 1.16/

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PPeerPropertyInfo          ,
#endif
    clearSettingWifiP2PPeer                 ,
    constructSettingWifiP2PPeer             ,
    getSettingWifiP2PPeer                   ,
    setSettingWifiP2PPeer                   ,
#if defined(ENABLE_OVERLOADING)
    settingWifiP2PPeer                      ,
#endif


-- ** wfdIes #attr:wfdIes#
-- | The Wi-Fi Display (WFD) Information Elements (IEs) to set.
-- 
-- Wi-Fi Display requires a protocol specific information element to be
-- set in certain Wi-Fi frames. These can be specified here for the
-- purpose of establishing a connection.
-- This setting is only useful when implementing a Wi-Fi Display client.
-- 
-- /Since: 1.16/

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PWfdIesPropertyInfo        ,
#endif
    clearSettingWifiP2PWfdIes               ,
    constructSettingWifiP2PWfdIes           ,
    getSettingWifiP2PWfdIes                 ,
    setSettingWifiP2PWfdIes                 ,
#if defined(ENABLE_OVERLOADING)
    settingWifiP2PWfdIes                    ,
#endif


-- ** wpsMethod #attr:wpsMethod#
-- | Flags indicating which mode of WPS is to be used.
-- 
-- There\'s little point in changing the default setting as NetworkManager will
-- automatically determine the best method to use.
-- 
-- /Since: 1.16/

#if defined(ENABLE_OVERLOADING)
    SettingWifiP2PWpsMethodPropertyInfo     ,
#endif
    constructSettingWifiP2PWpsMethod        ,
    getSettingWifiP2PWpsMethod              ,
    setSettingWifiP2PWpsMethod              ,
#if defined(ENABLE_OVERLOADING)
    settingWifiP2PWpsMethod                 ,
#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.SettingVpn as NM.SettingVpn
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.GLib.Structs.Bytes as GLib.Bytes
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.NM.Flags as NM.Flags
import {-# SOURCE #-} qualified GI.NM.Objects.Setting as NM.Setting

#endif

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

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

foreign import ccall "nm_setting_wifi_p2p_get_type"
    c_nm_setting_wifi_p2p_get_type :: IO B.Types.GType

instance B.Types.TypedObject SettingWifiP2P where
    glibType :: IO GType
glibType = IO GType
c_nm_setting_wifi_p2p_get_type

instance B.Types.GObject SettingWifiP2P

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

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

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

-- | Convert t'SettingWifiP2P' 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 SettingWifiP2P) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_nm_setting_wifi_p2p_get_type
    gvalueSet_ :: Ptr GValue -> Maybe SettingWifiP2P -> IO ()
gvalueSet_ Ptr GValue
gv Maybe SettingWifiP2P
P.Nothing = Ptr GValue -> Ptr SettingWifiP2P -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr SettingWifiP2P
forall a. Ptr a
FP.nullPtr :: FP.Ptr SettingWifiP2P)
    gvalueSet_ Ptr GValue
gv (P.Just SettingWifiP2P
obj) = SettingWifiP2P -> (Ptr SettingWifiP2P -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr SettingWifiP2P
obj (Ptr GValue -> Ptr SettingWifiP2P -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe SettingWifiP2P)
gvalueGet_ Ptr GValue
gv = do
        Ptr SettingWifiP2P
ptr <- Ptr GValue -> IO (Ptr SettingWifiP2P)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr SettingWifiP2P)
        if Ptr SettingWifiP2P
ptr Ptr SettingWifiP2P -> Ptr SettingWifiP2P -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr SettingWifiP2P
forall a. Ptr a
FP.nullPtr
        then SettingWifiP2P -> Maybe SettingWifiP2P
forall a. a -> Maybe a
P.Just (SettingWifiP2P -> Maybe SettingWifiP2P)
-> IO SettingWifiP2P -> IO (Maybe SettingWifiP2P)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr SettingWifiP2P -> SettingWifiP2P)
-> Ptr SettingWifiP2P -> IO SettingWifiP2P
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr SettingWifiP2P -> SettingWifiP2P
SettingWifiP2P Ptr SettingWifiP2P
ptr
        else Maybe SettingWifiP2P -> IO (Maybe SettingWifiP2P)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe SettingWifiP2P
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveSettingWifiP2PMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSettingWifiP2PMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSettingWifiP2PMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSettingWifiP2PMethod "compare" o = NM.Setting.SettingCompareMethodInfo
    ResolveSettingWifiP2PMethod "diff" o = NM.Setting.SettingDiffMethodInfo
    ResolveSettingWifiP2PMethod "duplicate" o = NM.Setting.SettingDuplicateMethodInfo
    ResolveSettingWifiP2PMethod "enumerateValues" o = NM.Setting.SettingEnumerateValuesMethodInfo
    ResolveSettingWifiP2PMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSettingWifiP2PMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSettingWifiP2PMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveSettingWifiP2PMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSettingWifiP2PMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSettingWifiP2PMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSettingWifiP2PMethod "optionClearByName" o = NM.Setting.SettingOptionClearByNameMethodInfo
    ResolveSettingWifiP2PMethod "optionGet" o = NM.Setting.SettingOptionGetMethodInfo
    ResolveSettingWifiP2PMethod "optionGetAllNames" o = NM.Setting.SettingOptionGetAllNamesMethodInfo
    ResolveSettingWifiP2PMethod "optionGetBoolean" o = NM.Setting.SettingOptionGetBooleanMethodInfo
    ResolveSettingWifiP2PMethod "optionGetUint32" o = NM.Setting.SettingOptionGetUint32MethodInfo
    ResolveSettingWifiP2PMethod "optionSet" o = NM.Setting.SettingOptionSetMethodInfo
    ResolveSettingWifiP2PMethod "optionSetBoolean" o = NM.Setting.SettingOptionSetBooleanMethodInfo
    ResolveSettingWifiP2PMethod "optionSetUint32" o = NM.Setting.SettingOptionSetUint32MethodInfo
    ResolveSettingWifiP2PMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSettingWifiP2PMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSettingWifiP2PMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSettingWifiP2PMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSettingWifiP2PMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSettingWifiP2PMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSettingWifiP2PMethod "toString" o = NM.Setting.SettingToStringMethodInfo
    ResolveSettingWifiP2PMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSettingWifiP2PMethod "verify" o = NM.Setting.SettingVerifyMethodInfo
    ResolveSettingWifiP2PMethod "verifySecrets" o = NM.Setting.SettingVerifySecretsMethodInfo
    ResolveSettingWifiP2PMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSettingWifiP2PMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSettingWifiP2PMethod "getDbusPropertyType" o = NM.Setting.SettingGetDbusPropertyTypeMethodInfo
    ResolveSettingWifiP2PMethod "getName" o = NM.Setting.SettingGetNameMethodInfo
    ResolveSettingWifiP2PMethod "getPeer" o = SettingWifiP2PGetPeerMethodInfo
    ResolveSettingWifiP2PMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSettingWifiP2PMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSettingWifiP2PMethod "getSecretFlags" o = NM.Setting.SettingGetSecretFlagsMethodInfo
    ResolveSettingWifiP2PMethod "getWfdIes" o = SettingWifiP2PGetWfdIesMethodInfo
    ResolveSettingWifiP2PMethod "getWpsMethod" o = SettingWifiP2PGetWpsMethodMethodInfo
    ResolveSettingWifiP2PMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSettingWifiP2PMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveSettingWifiP2PMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSettingWifiP2PMethod "setSecretFlags" o = NM.Setting.SettingSetSecretFlagsMethodInfo
    ResolveSettingWifiP2PMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSettingWifiP2PMethod t SettingWifiP2P, O.OverloadedMethod info SettingWifiP2P p) => OL.IsLabel t (SettingWifiP2P -> 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 ~ ResolveSettingWifiP2PMethod t SettingWifiP2P, O.OverloadedMethod info SettingWifiP2P p, R.HasField t SettingWifiP2P p) => R.HasField t SettingWifiP2P p where
    getField = O.overloadedMethod @info

#endif

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

#endif

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

-- | Get the value of the “@peer@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingWifiP2P #peer
-- @
getSettingWifiP2PPeer :: (MonadIO m, IsSettingWifiP2P o) => o -> m T.Text
getSettingWifiP2PPeer :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> m Text
getSettingWifiP2PPeer 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
"getSettingWifiP2PPeer" (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
"peer"

-- | Set the value of the “@peer@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingWifiP2P [ #peer 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingWifiP2PPeer :: (MonadIO m, IsSettingWifiP2P o) => o -> T.Text -> m ()
setSettingWifiP2PPeer :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> Text -> m ()
setSettingWifiP2PPeer 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
"peer" (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
val)

-- | Construct a t'GValueConstruct' with valid value for the “@peer@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingWifiP2PPeer :: (IsSettingWifiP2P o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructSettingWifiP2PPeer :: forall o (m :: * -> *).
(IsSettingWifiP2P o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructSettingWifiP2PPeer 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
"peer" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)

-- | Set the value of the “@peer@” 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' #peer
-- @
clearSettingWifiP2PPeer :: (MonadIO m, IsSettingWifiP2P o) => o -> m ()
clearSettingWifiP2PPeer :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> m ()
clearSettingWifiP2PPeer 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
"peer" (Maybe Text
forall a. Maybe a
Nothing :: Maybe T.Text)

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

-- VVV Prop "wfd-ies"
   -- Type: TInterface (Name {namespace = "GLib", name = "Bytes"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@wfd-ies@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingWifiP2P #wfdIes
-- @
getSettingWifiP2PWfdIes :: (MonadIO m, IsSettingWifiP2P o) => o -> m GLib.Bytes.Bytes
getSettingWifiP2PWfdIes :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> m Bytes
getSettingWifiP2PWfdIes o
obj = IO Bytes -> m Bytes
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bytes -> m Bytes) -> IO Bytes -> m Bytes
forall a b. (a -> b) -> a -> b
$ Text -> IO (Maybe Bytes) -> IO Bytes
forall a. HasCallStack => Text -> IO (Maybe a) -> IO a
checkUnexpectedNothing Text
"getSettingWifiP2PWfdIes" (IO (Maybe Bytes) -> IO Bytes) -> IO (Maybe Bytes) -> IO Bytes
forall a b. (a -> b) -> a -> b
$ o -> String -> (ManagedPtr Bytes -> Bytes) -> IO (Maybe Bytes)
forall a b.
(GObject a, GBoxed b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyBoxed o
obj String
"wfd-ies" ManagedPtr Bytes -> Bytes
GLib.Bytes.Bytes

-- | Set the value of the “@wfd-ies@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingWifiP2P [ #wfdIes 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingWifiP2PWfdIes :: (MonadIO m, IsSettingWifiP2P o) => o -> GLib.Bytes.Bytes -> m ()
setSettingWifiP2PWfdIes :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> Bytes -> m ()
setSettingWifiP2PWfdIes o
obj Bytes
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 Bytes -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"wfd-ies" (Bytes -> Maybe Bytes
forall a. a -> Maybe a
Just Bytes
val)

-- | Construct a t'GValueConstruct' with valid value for the “@wfd-ies@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingWifiP2PWfdIes :: (IsSettingWifiP2P o, MIO.MonadIO m) => GLib.Bytes.Bytes -> m (GValueConstruct o)
constructSettingWifiP2PWfdIes :: forall o (m :: * -> *).
(IsSettingWifiP2P o, MonadIO m) =>
Bytes -> m (GValueConstruct o)
constructSettingWifiP2PWfdIes Bytes
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 Bytes -> IO (GValueConstruct o)
forall a o. GBoxed a => String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBoxed String
"wfd-ies" (Bytes -> Maybe Bytes
forall a. a -> Maybe a
P.Just Bytes
val)

-- | Set the value of the “@wfd-ies@” 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' #wfdIes
-- @
clearSettingWifiP2PWfdIes :: (MonadIO m, IsSettingWifiP2P o) => o -> m ()
clearSettingWifiP2PWfdIes :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> m ()
clearSettingWifiP2PWfdIes 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 Bytes -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"wfd-ies" (Maybe Bytes
forall a. Maybe a
Nothing :: Maybe GLib.Bytes.Bytes)

#if defined(ENABLE_OVERLOADING)
data SettingWifiP2PWfdIesPropertyInfo
instance AttrInfo SettingWifiP2PWfdIesPropertyInfo where
    type AttrAllowedOps SettingWifiP2PWfdIesPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingWifiP2PWfdIesPropertyInfo = IsSettingWifiP2P
    type AttrSetTypeConstraint SettingWifiP2PWfdIesPropertyInfo = (~) GLib.Bytes.Bytes
    type AttrTransferTypeConstraint SettingWifiP2PWfdIesPropertyInfo = (~) GLib.Bytes.Bytes
    type AttrTransferType SettingWifiP2PWfdIesPropertyInfo = GLib.Bytes.Bytes
    type AttrGetType SettingWifiP2PWfdIesPropertyInfo = GLib.Bytes.Bytes
    type AttrLabel SettingWifiP2PWfdIesPropertyInfo = "wfd-ies"
    type AttrOrigin SettingWifiP2PWfdIesPropertyInfo = SettingWifiP2P
    attrGet = getSettingWifiP2PWfdIes
    attrSet = setSettingWifiP2PWfdIes
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingWifiP2PWfdIes
    attrClear = clearSettingWifiP2PWfdIes
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingWifiP2P.wfdIes"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingWifiP2P.html#g:attr:wfdIes"
        })
#endif

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

-- | Get the value of the “@wps-method@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingWifiP2P #wpsMethod
-- @
getSettingWifiP2PWpsMethod :: (MonadIO m, IsSettingWifiP2P o) => o -> m Word32
getSettingWifiP2PWpsMethod :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> m Word32
getSettingWifiP2PWpsMethod 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
"wps-method"

-- | Set the value of the “@wps-method@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingWifiP2P [ #wpsMethod 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingWifiP2PWpsMethod :: (MonadIO m, IsSettingWifiP2P o) => o -> Word32 -> m ()
setSettingWifiP2PWpsMethod :: forall (m :: * -> *) o.
(MonadIO m, IsSettingWifiP2P o) =>
o -> Word32 -> m ()
setSettingWifiP2PWpsMethod 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
"wps-method" Word32
val

-- | Construct a t'GValueConstruct' with valid value for the “@wps-method@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingWifiP2PWpsMethod :: (IsSettingWifiP2P o, MIO.MonadIO m) => Word32 -> m (GValueConstruct o)
constructSettingWifiP2PWpsMethod :: forall o (m :: * -> *).
(IsSettingWifiP2P o, MonadIO m) =>
Word32 -> m (GValueConstruct o)
constructSettingWifiP2PWpsMethod 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
"wps-method" Word32
val

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

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SettingWifiP2P
type instance O.AttributeList SettingWifiP2P = SettingWifiP2PAttributeList
type SettingWifiP2PAttributeList = ('[ '("name", NM.Setting.SettingNamePropertyInfo), '("peer", SettingWifiP2PPeerPropertyInfo), '("wfdIes", SettingWifiP2PWfdIesPropertyInfo), '("wpsMethod", SettingWifiP2PWpsMethodPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
settingWifiP2PPeer :: AttrLabelProxy "peer"
settingWifiP2PPeer = AttrLabelProxy

settingWifiP2PWfdIes :: AttrLabelProxy "wfdIes"
settingWifiP2PWfdIes = AttrLabelProxy

settingWifiP2PWpsMethod :: AttrLabelProxy "wpsMethod"
settingWifiP2PWpsMethod = AttrLabelProxy

#endif

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

#endif

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

foreign import ccall "nm_setting_wifi_p2p_new" nm_setting_wifi_p2p_new :: 
    IO (Ptr SettingWifiP2P)

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

#if defined(ENABLE_OVERLOADING)
#endif

-- method SettingWifiP2P::get_peer
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingWifiP2P" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingWifiP2P"
--                 , 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_wifi_p2p_get_peer" nm_setting_wifi_p2p_get_peer :: 
    Ptr SettingWifiP2P ->                   -- setting : TInterface (Name {namespace = "NM", name = "SettingWifiP2P"})
    IO CString

-- | /No description available in the introspection data./
-- 
-- /Since: 1.16/
settingWifiP2PGetPeer ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingWifiP2P.SettingWifiP2P'
    -> m T.Text
    -- ^ __Returns:__ the [SettingWifiP2P:peer]("GI.NM.Objects.SettingWifiP2P#g:attr:peer") property of the setting
settingWifiP2PGetPeer :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
a -> m Text
settingWifiP2PGetPeer 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 SettingWifiP2P
setting' <- a -> IO (Ptr SettingWifiP2P)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CString
result <- Ptr SettingWifiP2P -> IO CString
nm_setting_wifi_p2p_get_peer Ptr SettingWifiP2P
setting'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingWifiP2PGetPeer" 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 SettingWifiP2PGetPeerMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsSettingWifiP2P a) => O.OverloadedMethod SettingWifiP2PGetPeerMethodInfo a signature where
    overloadedMethod = settingWifiP2PGetPeer

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


#endif

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

foreign import ccall "nm_setting_wifi_p2p_get_wfd_ies" nm_setting_wifi_p2p_get_wfd_ies :: 
    Ptr SettingWifiP2P ->                   -- setting : TInterface (Name {namespace = "NM", name = "SettingWifiP2P"})
    IO (Ptr GLib.Bytes.Bytes)

-- | /No description available in the introspection data./
-- 
-- /Since: 1.16/
settingWifiP2PGetWfdIes ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
    a
    -- ^ /@setting@/: the @/NMSettingWiFiP2P/@
    -> m GLib.Bytes.Bytes
    -- ^ __Returns:__ the @/NMSettingWiFiP2P:wfd-ies/@ property of the setting
settingWifiP2PGetWfdIes :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
a -> m Bytes
settingWifiP2PGetWfdIes a
setting = IO Bytes -> m Bytes
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bytes -> m Bytes) -> IO Bytes -> m Bytes
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingWifiP2P
setting' <- a -> IO (Ptr SettingWifiP2P)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr Bytes
result <- Ptr SettingWifiP2P -> IO (Ptr Bytes)
nm_setting_wifi_p2p_get_wfd_ies Ptr SettingWifiP2P
setting'
    Text -> Ptr Bytes -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingWifiP2PGetWfdIes" Ptr Bytes
result
    Bytes
result' <- ((ManagedPtr Bytes -> Bytes) -> Ptr Bytes -> IO Bytes
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Bytes -> Bytes
GLib.Bytes.Bytes) Ptr Bytes
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Bytes -> IO Bytes
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bytes
result'

#if defined(ENABLE_OVERLOADING)
data SettingWifiP2PGetWfdIesMethodInfo
instance (signature ~ (m GLib.Bytes.Bytes), MonadIO m, IsSettingWifiP2P a) => O.OverloadedMethod SettingWifiP2PGetWfdIesMethodInfo a signature where
    overloadedMethod = settingWifiP2PGetWfdIes

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


#endif

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

foreign import ccall "nm_setting_wifi_p2p_get_wps_method" nm_setting_wifi_p2p_get_wps_method :: 
    Ptr SettingWifiP2P ->                   -- setting : TInterface (Name {namespace = "NM", name = "SettingWifiP2P"})
    IO CUInt

-- | /No description available in the introspection data./
-- 
-- /Since: 1.16/
settingWifiP2PGetWpsMethod ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingWifiP2P.SettingWifiP2P'
    -> m [NM.Flags.SettingWirelessSecurityWpsMethod]
    -- ^ __Returns:__ the [SettingWifiP2P:wpsMethod]("GI.NM.Objects.SettingWifiP2P#g:attr:wpsMethod") property of the setting
settingWifiP2PGetWpsMethod :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingWifiP2P a) =>
a -> m [SettingWirelessSecurityWpsMethod]
settingWifiP2PGetWpsMethod a
setting = IO [SettingWirelessSecurityWpsMethod]
-> m [SettingWirelessSecurityWpsMethod]
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO [SettingWirelessSecurityWpsMethod]
 -> m [SettingWirelessSecurityWpsMethod])
-> IO [SettingWirelessSecurityWpsMethod]
-> m [SettingWirelessSecurityWpsMethod]
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingWifiP2P
setting' <- a -> IO (Ptr SettingWifiP2P)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    CUInt
result <- Ptr SettingWifiP2P -> IO CUInt
nm_setting_wifi_p2p_get_wps_method Ptr SettingWifiP2P
setting'
    let result' :: [SettingWirelessSecurityWpsMethod]
result' = CUInt -> [SettingWirelessSecurityWpsMethod]
forall a b. (Storable a, Integral a, Bits a, IsGFlag b) => a -> [b]
wordToGFlags CUInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    [SettingWirelessSecurityWpsMethod]
-> IO [SettingWirelessSecurityWpsMethod]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return [SettingWirelessSecurityWpsMethod]
result'

#if defined(ENABLE_OVERLOADING)
data SettingWifiP2PGetWpsMethodMethodInfo
instance (signature ~ (m [NM.Flags.SettingWirelessSecurityWpsMethod]), MonadIO m, IsSettingWifiP2P a) => O.OverloadedMethod SettingWifiP2PGetWpsMethodMethodInfo a signature where
    overloadedMethod = settingWifiP2PGetWpsMethod

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


#endif