{-# LANGUAGE TypeApplications #-}


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

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

module GI.NM.Objects.SettingVlan
    ( 

-- * Exported types
    SettingVlan(..)                         ,
    IsSettingVlan                           ,
    toSettingVlan                           ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [addPriority]("GI.NM.Objects.SettingVlan#g:method:addPriority"), [addPriorityStr]("GI.NM.Objects.SettingVlan#g:method:addPriorityStr"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [clearPriorities]("GI.NM.Objects.SettingVlan#g:method:clearPriorities"), [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"), [removePriority]("GI.NM.Objects.SettingVlan#g:method:removePriority"), [removePriorityByValue]("GI.NM.Objects.SettingVlan#g:method:removePriorityByValue"), [removePriorityStrByValue]("GI.NM.Objects.SettingVlan#g:method:removePriorityStrByValue"), [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"), [getFlags]("GI.NM.Objects.SettingVlan#g:method:getFlags"), [getId]("GI.NM.Objects.SettingVlan#g:method:getId"), [getName]("GI.NM.Objects.Setting#g:method:getName"), [getNumPriorities]("GI.NM.Objects.SettingVlan#g:method:getNumPriorities"), [getParent]("GI.NM.Objects.SettingVlan#g:method:getParent"), [getPriority]("GI.NM.Objects.SettingVlan#g:method:getPriority"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getProtocol]("GI.NM.Objects.SettingVlan#g:method:getProtocol"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getSecretFlags]("GI.NM.Objects.Setting#g:method:getSecretFlags").
-- 
-- ==== 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)
    ResolveSettingVlanMethod                ,
#endif

-- ** addPriority #method:addPriority#

#if defined(ENABLE_OVERLOADING)
    SettingVlanAddPriorityMethodInfo        ,
#endif
    settingVlanAddPriority                  ,


-- ** addPriorityStr #method:addPriorityStr#

#if defined(ENABLE_OVERLOADING)
    SettingVlanAddPriorityStrMethodInfo     ,
#endif
    settingVlanAddPriorityStr               ,


-- ** clearPriorities #method:clearPriorities#

#if defined(ENABLE_OVERLOADING)
    SettingVlanClearPrioritiesMethodInfo    ,
#endif
    settingVlanClearPriorities              ,


-- ** getFlags #method:getFlags#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetFlagsMethodInfo           ,
#endif
    settingVlanGetFlags                     ,


-- ** getId #method:getId#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetIdMethodInfo              ,
#endif
    settingVlanGetId                        ,


-- ** getNumPriorities #method:getNumPriorities#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetNumPrioritiesMethodInfo   ,
#endif
    settingVlanGetNumPriorities             ,


-- ** getParent #method:getParent#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetParentMethodInfo          ,
#endif
    settingVlanGetParent                    ,


-- ** getPriority #method:getPriority#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetPriorityMethodInfo        ,
#endif
    settingVlanGetPriority                  ,


-- ** getProtocol #method:getProtocol#

#if defined(ENABLE_OVERLOADING)
    SettingVlanGetProtocolMethodInfo        ,
#endif
    settingVlanGetProtocol                  ,


-- ** new #method:new#

    settingVlanNew                          ,


-- ** removePriority #method:removePriority#

#if defined(ENABLE_OVERLOADING)
    SettingVlanRemovePriorityMethodInfo     ,
#endif
    settingVlanRemovePriority               ,


-- ** removePriorityByValue #method:removePriorityByValue#

#if defined(ENABLE_OVERLOADING)
    SettingVlanRemovePriorityByValueMethodInfo,
#endif
    settingVlanRemovePriorityByValue        ,


-- ** removePriorityStrByValue #method:removePriorityStrByValue#

#if defined(ENABLE_OVERLOADING)
    SettingVlanRemovePriorityStrByValueMethodInfo,
#endif
    settingVlanRemovePriorityStrByValue     ,




 -- * Properties


-- ** egressPriorityMap #attr:egressPriorityMap#
-- | For outgoing packets, a list of mappings from Linux SKB priorities to
-- 802.1p priorities.  The mapping is given in the format \"from:to\" where
-- both \"from\" and \"to\" are unsigned integers, ie \"7:3\".

#if defined(ENABLE_OVERLOADING)
    SettingVlanEgressPriorityMapPropertyInfo,
#endif
    clearSettingVlanEgressPriorityMap       ,
    constructSettingVlanEgressPriorityMap   ,
    getSettingVlanEgressPriorityMap         ,
    setSettingVlanEgressPriorityMap         ,
#if defined(ENABLE_OVERLOADING)
    settingVlanEgressPriorityMap            ,
#endif


-- ** flags #attr:flags#
-- | One or more flags which control the behavior and features of the VLAN
-- interface.  Flags include 'GI.NM.Flags.VlanFlagsReorderHeaders' (reordering of
-- output packet headers), 'GI.NM.Flags.VlanFlagsGvrp' (use of the GVRP protocol),
-- and 'GI.NM.Flags.VlanFlagsLooseBinding' (loose binding of the interface to its
-- controller device\'s operating state). 'GI.NM.Flags.VlanFlagsMvrp' (use of the MVRP
-- protocol).
-- 
-- The default value of this property is NM_VLAN_FLAG_REORDER_HEADERS,
-- but it used to be 0. To preserve backward compatibility, the default-value
-- in the D-Bus API continues to be 0 and a missing property on D-Bus
-- is still considered as 0.

#if defined(ENABLE_OVERLOADING)
    SettingVlanFlagsPropertyInfo            ,
#endif
    constructSettingVlanFlags               ,
    getSettingVlanFlags                     ,
    setSettingVlanFlags                     ,
#if defined(ENABLE_OVERLOADING)
    settingVlanFlags                        ,
#endif


-- ** id #attr:id#
-- | The VLAN identifier that the interface created by this connection should
-- be assigned. The valid range is from 0 to 4094, without the reserved id 4095.

#if defined(ENABLE_OVERLOADING)
    SettingVlanIdPropertyInfo               ,
#endif
    constructSettingVlanId                  ,
    getSettingVlanId                        ,
    setSettingVlanId                        ,
#if defined(ENABLE_OVERLOADING)
    settingVlanId                           ,
#endif


-- ** ingressPriorityMap #attr:ingressPriorityMap#
-- | For incoming packets, a list of mappings from 802.1p priorities to Linux
-- SKB priorities.  The mapping is given in the format \"from:to\" where both
-- \"from\" and \"to\" are unsigned integers, ie \"7:3\".

#if defined(ENABLE_OVERLOADING)
    SettingVlanIngressPriorityMapPropertyInfo,
#endif
    clearSettingVlanIngressPriorityMap      ,
    constructSettingVlanIngressPriorityMap  ,
    getSettingVlanIngressPriorityMap        ,
    setSettingVlanIngressPriorityMap        ,
#if defined(ENABLE_OVERLOADING)
    settingVlanIngressPriorityMap           ,
#endif


-- ** parent #attr:parent#
-- | If given, specifies the parent interface name or parent connection UUID
-- from which this VLAN interface should be created.  If this property is
-- not specified, the connection must contain an t'GI.NM.Objects.SettingWired.SettingWired' setting
-- with a [SettingWired:macAddress]("GI.NM.Objects.SettingWired#g:attr:macAddress") property.

#if defined(ENABLE_OVERLOADING)
    SettingVlanParentPropertyInfo           ,
#endif
    clearSettingVlanParent                  ,
    constructSettingVlanParent              ,
    getSettingVlanParent                    ,
    setSettingVlanParent                    ,
#if defined(ENABLE_OVERLOADING)
    settingVlanParent                       ,
#endif


-- ** protocol #attr:protocol#
-- | Specifies the VLAN protocol to use for encapsulation.
-- 
-- Supported values are: \'802.1Q\', \'802.1ad\'. If not specified the default
-- value is \'802.1Q\'.
-- 
-- /Since: 1.42/

#if defined(ENABLE_OVERLOADING)
    SettingVlanProtocolPropertyInfo         ,
#endif
    clearSettingVlanProtocol                ,
    constructSettingVlanProtocol            ,
    getSettingVlanProtocol                  ,
    setSettingVlanProtocol                  ,
#if defined(ENABLE_OVERLOADING)
    settingVlanProtocol                     ,
#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.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.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.NM.Enums as NM.Enums
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 SettingVlan = SettingVlan (SP.ManagedPtr SettingVlan)
    deriving (SettingVlan -> SettingVlan -> Bool
(SettingVlan -> SettingVlan -> Bool)
-> (SettingVlan -> SettingVlan -> Bool) -> Eq SettingVlan
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SettingVlan -> SettingVlan -> Bool
== :: SettingVlan -> SettingVlan -> Bool
$c/= :: SettingVlan -> SettingVlan -> Bool
/= :: SettingVlan -> SettingVlan -> Bool
Eq)

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

foreign import ccall "nm_setting_vlan_get_type"
    c_nm_setting_vlan_get_type :: IO B.Types.GType

instance B.Types.TypedObject SettingVlan where
    glibType :: IO GType
glibType = IO GType
c_nm_setting_vlan_get_type

instance B.Types.GObject SettingVlan

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

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

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

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

#if defined(ENABLE_OVERLOADING)
type family ResolveSettingVlanMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSettingVlanMethod "addPriority" o = SettingVlanAddPriorityMethodInfo
    ResolveSettingVlanMethod "addPriorityStr" o = SettingVlanAddPriorityStrMethodInfo
    ResolveSettingVlanMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSettingVlanMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSettingVlanMethod "clearPriorities" o = SettingVlanClearPrioritiesMethodInfo
    ResolveSettingVlanMethod "compare" o = NM.Setting.SettingCompareMethodInfo
    ResolveSettingVlanMethod "diff" o = NM.Setting.SettingDiffMethodInfo
    ResolveSettingVlanMethod "duplicate" o = NM.Setting.SettingDuplicateMethodInfo
    ResolveSettingVlanMethod "enumerateValues" o = NM.Setting.SettingEnumerateValuesMethodInfo
    ResolveSettingVlanMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSettingVlanMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSettingVlanMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveSettingVlanMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSettingVlanMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSettingVlanMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSettingVlanMethod "optionClearByName" o = NM.Setting.SettingOptionClearByNameMethodInfo
    ResolveSettingVlanMethod "optionGet" o = NM.Setting.SettingOptionGetMethodInfo
    ResolveSettingVlanMethod "optionGetAllNames" o = NM.Setting.SettingOptionGetAllNamesMethodInfo
    ResolveSettingVlanMethod "optionGetBoolean" o = NM.Setting.SettingOptionGetBooleanMethodInfo
    ResolveSettingVlanMethod "optionGetUint32" o = NM.Setting.SettingOptionGetUint32MethodInfo
    ResolveSettingVlanMethod "optionSet" o = NM.Setting.SettingOptionSetMethodInfo
    ResolveSettingVlanMethod "optionSetBoolean" o = NM.Setting.SettingOptionSetBooleanMethodInfo
    ResolveSettingVlanMethod "optionSetUint32" o = NM.Setting.SettingOptionSetUint32MethodInfo
    ResolveSettingVlanMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSettingVlanMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSettingVlanMethod "removePriority" o = SettingVlanRemovePriorityMethodInfo
    ResolveSettingVlanMethod "removePriorityByValue" o = SettingVlanRemovePriorityByValueMethodInfo
    ResolveSettingVlanMethod "removePriorityStrByValue" o = SettingVlanRemovePriorityStrByValueMethodInfo
    ResolveSettingVlanMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSettingVlanMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSettingVlanMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSettingVlanMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSettingVlanMethod "toString" o = NM.Setting.SettingToStringMethodInfo
    ResolveSettingVlanMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSettingVlanMethod "verify" o = NM.Setting.SettingVerifyMethodInfo
    ResolveSettingVlanMethod "verifySecrets" o = NM.Setting.SettingVerifySecretsMethodInfo
    ResolveSettingVlanMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSettingVlanMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSettingVlanMethod "getDbusPropertyType" o = NM.Setting.SettingGetDbusPropertyTypeMethodInfo
    ResolveSettingVlanMethod "getFlags" o = SettingVlanGetFlagsMethodInfo
    ResolveSettingVlanMethod "getId" o = SettingVlanGetIdMethodInfo
    ResolveSettingVlanMethod "getName" o = NM.Setting.SettingGetNameMethodInfo
    ResolveSettingVlanMethod "getNumPriorities" o = SettingVlanGetNumPrioritiesMethodInfo
    ResolveSettingVlanMethod "getParent" o = SettingVlanGetParentMethodInfo
    ResolveSettingVlanMethod "getPriority" o = SettingVlanGetPriorityMethodInfo
    ResolveSettingVlanMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSettingVlanMethod "getProtocol" o = SettingVlanGetProtocolMethodInfo
    ResolveSettingVlanMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSettingVlanMethod "getSecretFlags" o = NM.Setting.SettingGetSecretFlagsMethodInfo
    ResolveSettingVlanMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSettingVlanMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveSettingVlanMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSettingVlanMethod "setSecretFlags" o = NM.Setting.SettingSetSecretFlagsMethodInfo
    ResolveSettingVlanMethod l o = O.MethodResolutionFailed l o

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

#endif

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

#endif

-- VVV Prop "egress-priority-map"
   -- Type: TCArray True (-1) (-1) (TBasicType TUTF8)
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@egress-priority-map@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVlan #egressPriorityMap
-- @
getSettingVlanEgressPriorityMap :: (MonadIO m, IsSettingVlan o) => o -> m (Maybe [T.Text])
getSettingVlanEgressPriorityMap :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVlan o) =>
o -> m (Maybe [Text])
getSettingVlanEgressPriorityMap o
obj = IO (Maybe [Text]) -> m (Maybe [Text])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe [Text]) -> m (Maybe [Text]))
-> IO (Maybe [Text]) -> m (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe [Text])
forall a. GObject a => a -> String -> IO (Maybe [Text])
B.Properties.getObjectPropertyStringArray o
obj String
"egress-priority-map"

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

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

-- | Set the value of the “@egress-priority-map@” 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' #egressPriorityMap
-- @
clearSettingVlanEgressPriorityMap :: (MonadIO m, IsSettingVlan o) => o -> m ()
clearSettingVlanEgressPriorityMap :: forall (m :: * -> *) o. (MonadIO m, IsSettingVlan o) => o -> m ()
clearSettingVlanEgressPriorityMap 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.setObjectPropertyStringArray o
obj String
"egress-priority-map" (Maybe [Text]
forall a. Maybe a
Nothing :: Maybe [T.Text])

#if defined(ENABLE_OVERLOADING)
data SettingVlanEgressPriorityMapPropertyInfo
instance AttrInfo SettingVlanEgressPriorityMapPropertyInfo where
    type AttrAllowedOps SettingVlanEgressPriorityMapPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVlanEgressPriorityMapPropertyInfo = IsSettingVlan
    type AttrSetTypeConstraint SettingVlanEgressPriorityMapPropertyInfo = (~) [T.Text]
    type AttrTransferTypeConstraint SettingVlanEgressPriorityMapPropertyInfo = (~) [T.Text]
    type AttrTransferType SettingVlanEgressPriorityMapPropertyInfo = [T.Text]
    type AttrGetType SettingVlanEgressPriorityMapPropertyInfo = (Maybe [T.Text])
    type AttrLabel SettingVlanEgressPriorityMapPropertyInfo = "egress-priority-map"
    type AttrOrigin SettingVlanEgressPriorityMapPropertyInfo = SettingVlan
    attrGet = getSettingVlanEgressPriorityMap
    attrSet = setSettingVlanEgressPriorityMap
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVlanEgressPriorityMap
    attrClear = clearSettingVlanEgressPriorityMap
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVlan.egressPriorityMap"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVlan.html#g:attr:egressPriorityMap"
        })
#endif

-- VVV Prop "flags"
   -- Type: TInterface (Name {namespace = "NM", name = "VlanFlags"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@flags@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVlan #flags
-- @
getSettingVlanFlags :: (MonadIO m, IsSettingVlan o) => o -> m [NM.Flags.VlanFlags]
getSettingVlanFlags :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVlan o) =>
o -> m [VlanFlags]
getSettingVlanFlags o
obj = IO [VlanFlags] -> m [VlanFlags]
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO [VlanFlags] -> m [VlanFlags])
-> IO [VlanFlags] -> m [VlanFlags]
forall a b. (a -> b) -> a -> b
$ o -> String -> IO [VlanFlags]
forall a b.
(GObject a, IsGFlag b, BoxedFlags b) =>
a -> String -> IO [b]
B.Properties.getObjectPropertyFlags o
obj String
"flags"

-- | Set the value of the “@flags@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' settingVlan [ #flags 'Data.GI.Base.Attributes.:=' value ]
-- @
setSettingVlanFlags :: (MonadIO m, IsSettingVlan o) => o -> [NM.Flags.VlanFlags] -> m ()
setSettingVlanFlags :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVlan o) =>
o -> [VlanFlags] -> m ()
setSettingVlanFlags o
obj [VlanFlags]
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 -> [VlanFlags] -> IO ()
forall a b.
(IsGFlag b, BoxedFlags b, GObject a) =>
a -> String -> [b] -> IO ()
B.Properties.setObjectPropertyFlags o
obj String
"flags" [VlanFlags]
val

-- | Construct a t'GValueConstruct' with valid value for the “@flags@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructSettingVlanFlags :: (IsSettingVlan o, MIO.MonadIO m) => [NM.Flags.VlanFlags] -> m (GValueConstruct o)
constructSettingVlanFlags :: forall o (m :: * -> *).
(IsSettingVlan o, MonadIO m) =>
[VlanFlags] -> m (GValueConstruct o)
constructSettingVlanFlags [VlanFlags]
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 -> [VlanFlags] -> IO (GValueConstruct o)
forall a o.
(IsGFlag a, BoxedFlags a) =>
String -> [a] -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyFlags String
"flags" [VlanFlags]
val

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

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

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

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

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

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

-- VVV Prop "ingress-priority-map"
   -- Type: TCArray True (-1) (-1) (TBasicType TUTF8)
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@ingress-priority-map@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' settingVlan #ingressPriorityMap
-- @
getSettingVlanIngressPriorityMap :: (MonadIO m, IsSettingVlan o) => o -> m (Maybe [T.Text])
getSettingVlanIngressPriorityMap :: forall (m :: * -> *) o.
(MonadIO m, IsSettingVlan o) =>
o -> m (Maybe [Text])
getSettingVlanIngressPriorityMap o
obj = IO (Maybe [Text]) -> m (Maybe [Text])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe [Text]) -> m (Maybe [Text]))
-> IO (Maybe [Text]) -> m (Maybe [Text])
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe [Text])
forall a. GObject a => a -> String -> IO (Maybe [Text])
B.Properties.getObjectPropertyStringArray o
obj String
"ingress-priority-map"

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

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

-- | Set the value of the “@ingress-priority-map@” 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' #ingressPriorityMap
-- @
clearSettingVlanIngressPriorityMap :: (MonadIO m, IsSettingVlan o) => o -> m ()
clearSettingVlanIngressPriorityMap :: forall (m :: * -> *) o. (MonadIO m, IsSettingVlan o) => o -> m ()
clearSettingVlanIngressPriorityMap 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.setObjectPropertyStringArray o
obj String
"ingress-priority-map" (Maybe [Text]
forall a. Maybe a
Nothing :: Maybe [T.Text])

#if defined(ENABLE_OVERLOADING)
data SettingVlanIngressPriorityMapPropertyInfo
instance AttrInfo SettingVlanIngressPriorityMapPropertyInfo where
    type AttrAllowedOps SettingVlanIngressPriorityMapPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint SettingVlanIngressPriorityMapPropertyInfo = IsSettingVlan
    type AttrSetTypeConstraint SettingVlanIngressPriorityMapPropertyInfo = (~) [T.Text]
    type AttrTransferTypeConstraint SettingVlanIngressPriorityMapPropertyInfo = (~) [T.Text]
    type AttrTransferType SettingVlanIngressPriorityMapPropertyInfo = [T.Text]
    type AttrGetType SettingVlanIngressPriorityMapPropertyInfo = (Maybe [T.Text])
    type AttrLabel SettingVlanIngressPriorityMapPropertyInfo = "ingress-priority-map"
    type AttrOrigin SettingVlanIngressPriorityMapPropertyInfo = SettingVlan
    attrGet = getSettingVlanIngressPriorityMap
    attrSet = setSettingVlanIngressPriorityMap
    attrTransfer _ v = do
        return v
    attrConstruct = constructSettingVlanIngressPriorityMap
    attrClear = clearSettingVlanIngressPriorityMap
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.NM.Objects.SettingVlan.ingressPriorityMap"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-nm-1.0.1/docs/GI-NM-Objects-SettingVlan.html#g:attr:ingressPriorityMap"
        })
#endif

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

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

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

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

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

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

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

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

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

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

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

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

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SettingVlan
type instance O.AttributeList SettingVlan = SettingVlanAttributeList
type SettingVlanAttributeList = ('[ '("egressPriorityMap", SettingVlanEgressPriorityMapPropertyInfo), '("flags", SettingVlanFlagsPropertyInfo), '("id", SettingVlanIdPropertyInfo), '("ingressPriorityMap", SettingVlanIngressPriorityMapPropertyInfo), '("name", NM.Setting.SettingNamePropertyInfo), '("parent", SettingVlanParentPropertyInfo), '("protocol", SettingVlanProtocolPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
settingVlanEgressPriorityMap :: AttrLabelProxy "egressPriorityMap"
settingVlanEgressPriorityMap = AttrLabelProxy

settingVlanFlags :: AttrLabelProxy "flags"
settingVlanFlags = AttrLabelProxy

settingVlanId :: AttrLabelProxy "id"
settingVlanId = AttrLabelProxy

settingVlanIngressPriorityMap :: AttrLabelProxy "ingressPriorityMap"
settingVlanIngressPriorityMap = AttrLabelProxy

settingVlanParent :: AttrLabelProxy "parent"
settingVlanParent = AttrLabelProxy

settingVlanProtocol :: AttrLabelProxy "protocol"
settingVlanProtocol = AttrLabelProxy

#endif

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

#endif

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

foreign import ccall "nm_setting_vlan_new" nm_setting_vlan_new :: 
    IO (Ptr SettingVlan)

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

#if defined(ENABLE_OVERLOADING)
#endif

-- method SettingVlan::add_priority
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "from"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the priority to map to @to"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "to"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the priority to map @from to"
--                 , 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_vlan_add_priority" nm_setting_vlan_add_priority :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    Word32 ->                               -- from : TBasicType TUInt32
    Word32 ->                               -- to : TBasicType TUInt32
    IO CInt

-- | Adds a priority mapping to the t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@ or
-- t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ properties of the setting. If /@from@/ is
-- already in the given priority map, this function will overwrite the
-- existing entry with the new /@to@/.
-- 
-- If /@map@/ is @/NM_VLAN_INGRESS_MAP/@ then /@from@/ is the incoming 802.1q VLAN
-- Priority Code Point (PCP) value, and /@to@/ is the Linux SKB priority value.
-- 
-- If /@map@/ is @/NM_VLAN_EGRESS_MAP/@ then /@from@/ is the Linux SKB priority value and
-- /@to@/ is the outgoing 802.1q VLAN Priority Code Point (PCP) value.
settingVlanAddPriority ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> Word32
    -- ^ /@from@/: the priority to map to /@to@/
    -> Word32
    -- ^ /@to@/: the priority to map /@from@/ to
    -> m Bool
    -- ^ __Returns:__ 'P.True'.
settingVlanAddPriority :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Word32 -> Word32 -> m Bool
settingVlanAddPriority a
setting VlanPriorityMap
map_ Word32
from Word32
to = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    CInt
result <- Ptr SettingVlan -> CUInt -> Word32 -> Word32 -> IO CInt
nm_setting_vlan_add_priority Ptr SettingVlan
setting' CUInt
map_' Word32
from Word32
to
    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 SettingVlanAddPriorityMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> Word32 -> Word32 -> m Bool), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanAddPriorityMethodInfo a signature where
    overloadedMethod = settingVlanAddPriority

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


#endif

-- method SettingVlan::add_priority_str
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "str"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the string which contains a priority map, like \"3:7\""
--                 , 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_vlan_add_priority_str" nm_setting_vlan_add_priority_str :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    CString ->                              -- str : TBasicType TUTF8
    IO CInt

-- | Adds a priority map entry into either the t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@
-- or the t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ properties.  The priority map maps
-- the Linux SKB priorities to 802.1p priorities.
settingVlanAddPriorityStr ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> T.Text
    -- ^ /@str@/: the string which contains a priority map, like \"3:7\"
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the entry was successfully added to the list, or it
    -- overwrote the old value, 'P.False' if /@str@/ is not a valid mapping.
settingVlanAddPriorityStr :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Text -> m Bool
settingVlanAddPriorityStr a
setting VlanPriorityMap
map_ Text
str = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    CString
str' <- Text -> IO CString
textToCString Text
str
    CInt
result <- Ptr SettingVlan -> CUInt -> CString -> IO CInt
nm_setting_vlan_add_priority_str Ptr SettingVlan
setting' CUInt
map_' CString
str'
    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
str'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingVlanAddPriorityStrMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> T.Text -> m Bool), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanAddPriorityStrMethodInfo a signature where
    overloadedMethod = settingVlanAddPriorityStr

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


#endif

-- method SettingVlan::clear_priorities
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , 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_vlan_clear_priorities" nm_setting_vlan_clear_priorities :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    IO ()

-- | Clear all the entries from t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@ or
-- t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ properties.
settingVlanClearPriorities ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> m ()
settingVlanClearPriorities :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> m ()
settingVlanClearPriorities a
setting VlanPriorityMap
map_ = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    Ptr SettingVlan -> CUInt -> IO ()
nm_setting_vlan_clear_priorities Ptr SettingVlan
setting' CUInt
map_'
    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 SettingVlanClearPrioritiesMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> m ()), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanClearPrioritiesMethodInfo a signature where
    overloadedMethod = settingVlanClearPriorities

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


#endif

-- method SettingVlan::get_flags
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , 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_vlan_get_flags" nm_setting_vlan_get_flags :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    IO Word32

-- | /No description available in the introspection data./
settingVlanGetFlags ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> m Word32
    -- ^ __Returns:__ the [SettingVlan:flags]("GI.NM.Objects.SettingVlan#g:attr:flags") property of the setting
settingVlanGetFlags :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> m Word32
settingVlanGetFlags 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingVlan -> IO Word32
nm_setting_vlan_get_flags Ptr SettingVlan
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 SettingVlanGetFlagsMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanGetFlagsMethodInfo a signature where
    overloadedMethod = settingVlanGetFlags

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


#endif

-- method SettingVlan::get_id
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , 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_vlan_get_id" nm_setting_vlan_get_id :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    IO Word32

-- | /No description available in the introspection data./
settingVlanGetId ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> m Word32
    -- ^ __Returns:__ the [SettingVlan:id]("GI.NM.Objects.SettingVlan#g:attr:id") property of the setting
settingVlanGetId :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> m Word32
settingVlanGetId 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingVlan -> IO Word32
nm_setting_vlan_get_id Ptr SettingVlan
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 SettingVlanGetIdMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanGetIdMethodInfo a signature where
    overloadedMethod = settingVlanGetId

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


#endif

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

foreign import ccall "nm_setting_vlan_get_num_priorities" nm_setting_vlan_get_num_priorities :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    IO Int32

-- | Returns the number of entries in the
-- t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@ or t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@
-- properties of this setting.
settingVlanGetNumPriorities ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> m Int32
    -- ^ __Returns:__ return the number of ingress\/egress priority entries.
settingVlanGetNumPriorities :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> m Int32
settingVlanGetNumPriorities a
setting VlanPriorityMap
map_ = IO Int32 -> m Int32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    Int32
result <- Ptr SettingVlan -> CUInt -> IO Int32
nm_setting_vlan_get_num_priorities Ptr SettingVlan
setting' CUInt
map_'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Int32 -> IO Int32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Int32
result

#if defined(ENABLE_OVERLOADING)
data SettingVlanGetNumPrioritiesMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> m Int32), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanGetNumPrioritiesMethodInfo a signature where
    overloadedMethod = settingVlanGetNumPriorities

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


#endif

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

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

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


#endif

-- method SettingVlan::get_priority
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just
--                       "the zero-based index of the ingress/egress priority map entry"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "out_from"
--           , argType = TBasicType TUInt32
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "on return the value of the priority map's 'from' item"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       , Arg
--           { argCName = "out_to"
--           , argType = TBasicType TUInt32
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "on return the value of priority map's 'to' item"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_vlan_get_priority" nm_setting_vlan_get_priority :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    Word32 ->                               -- idx : TBasicType TUInt32
    Ptr Word32 ->                           -- out_from : TBasicType TUInt32
    Ptr Word32 ->                           -- out_to : TBasicType TUInt32
    IO CInt

-- | Retrieve one of the entries of the t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@
-- or t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ properties of this setting.
settingVlanGetPriority ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> Word32
    -- ^ /@idx@/: the zero-based index of the ingress\/egress priority map entry
    -> m ((Bool, Word32, Word32))
    -- ^ __Returns:__ returns 'P.True' if /@idx@/ is in range. Otherwise, 'P.False'.
settingVlanGetPriority :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Word32 -> m (Bool, Word32, Word32)
settingVlanGetPriority a
setting VlanPriorityMap
map_ Word32
idx = IO (Bool, Word32, Word32) -> m (Bool, Word32, Word32)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Bool, Word32, Word32) -> m (Bool, Word32, Word32))
-> IO (Bool, Word32, Word32) -> m (Bool, Word32, Word32)
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    Ptr Word32
outFrom <- IO (Ptr Word32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
    Ptr Word32
outTo <- IO (Ptr Word32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
    CInt
result <- Ptr SettingVlan
-> CUInt -> Word32 -> Ptr Word32 -> Ptr Word32 -> IO CInt
nm_setting_vlan_get_priority Ptr SettingVlan
setting' CUInt
map_' Word32
idx Ptr Word32
outFrom Ptr Word32
outTo
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    Word32
outFrom' <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
outFrom
    Word32
outTo' <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
outTo
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word32
outFrom
    Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word32
outTo
    (Bool, Word32, Word32) -> IO (Bool, Word32, Word32)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
result', Word32
outFrom', Word32
outTo')

#if defined(ENABLE_OVERLOADING)
data SettingVlanGetPriorityMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> Word32 -> m ((Bool, Word32, Word32))), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanGetPriorityMethodInfo a signature where
    overloadedMethod = settingVlanGetPriority

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


#endif

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

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

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


#endif

-- method SettingVlan::remove_priority
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the zero-based index of the priority map to remove"
--                 , 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_vlan_remove_priority" nm_setting_vlan_remove_priority :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    Word32 ->                               -- idx : TBasicType TUInt32
    IO ()

-- | Removes the priority map at index /@idx@/ from the
-- t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@ or t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@
-- properties.
settingVlanRemovePriority ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> Word32
    -- ^ /@idx@/: the zero-based index of the priority map to remove
    -> m ()
settingVlanRemovePriority :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Word32 -> m ()
settingVlanRemovePriority a
setting VlanPriorityMap
map_ Word32
idx = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    Ptr SettingVlan -> CUInt -> Word32 -> IO ()
nm_setting_vlan_remove_priority Ptr SettingVlan
setting' CUInt
map_' Word32
idx
    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 SettingVlanRemovePriorityMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> Word32 -> m ()), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanRemovePriorityMethodInfo a signature where
    overloadedMethod = settingVlanRemovePriority

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


#endif

-- method SettingVlan::remove_priority_by_value
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "from"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the priority to map to @to"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "to"
--           , argType = TBasicType TUInt32
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the priority to map @from to"
--                 , 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_vlan_remove_priority_by_value" nm_setting_vlan_remove_priority_by_value :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    Word32 ->                               -- from : TBasicType TUInt32
    Word32 ->                               -- to : TBasicType TUInt32
    IO CInt

-- | Removes the priority map /@form@/:/@to@/ from the t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@
-- or t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ (according to /@map@/ argument)
-- properties.
settingVlanRemovePriorityByValue ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> Word32
    -- ^ /@from@/: the priority to map to /@to@/
    -> Word32
    -- ^ /@to@/: the priority to map /@from@/ to
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the priority mapping was found and removed; 'P.False' if it was not.
settingVlanRemovePriorityByValue :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Word32 -> Word32 -> m Bool
settingVlanRemovePriorityByValue a
setting VlanPriorityMap
map_ Word32
from Word32
to = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    CInt
result <- Ptr SettingVlan -> CUInt -> Word32 -> Word32 -> IO CInt
nm_setting_vlan_remove_priority_by_value Ptr SettingVlan
setting' CUInt
map_' Word32
from Word32
to
    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 SettingVlanRemovePriorityByValueMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> Word32 -> Word32 -> m Bool), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanRemovePriorityByValueMethodInfo a signature where
    overloadedMethod = settingVlanRemovePriorityByValue

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


#endif

-- method SettingVlan::remove_priority_str_by_value
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingVlan" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingVlan" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "map"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "VlanPriorityMap" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the type of priority map"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "str"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "the string which contains a priority map, like \"3:7\""
--                 , 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_vlan_remove_priority_str_by_value" nm_setting_vlan_remove_priority_str_by_value :: 
    Ptr SettingVlan ->                      -- setting : TInterface (Name {namespace = "NM", name = "SettingVlan"})
    CUInt ->                                -- map : TInterface (Name {namespace = "NM", name = "VlanPriorityMap"})
    CString ->                              -- str : TBasicType TUTF8
    IO CInt

-- | Removes the priority map /@str@/ from the t'GI.NM.Objects.SettingVlan.SettingVlan':@/ingress_priority_map/@
-- or t'GI.NM.Objects.SettingVlan.SettingVlan':@/egress_priority_map/@ (according to /@map@/ argument)
-- properties.
settingVlanRemovePriorityStrByValue ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingVlan a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingVlan.SettingVlan'
    -> NM.Enums.VlanPriorityMap
    -- ^ /@map@/: the type of priority map
    -> T.Text
    -- ^ /@str@/: the string which contains a priority map, like \"3:7\"
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the priority mapping was found and removed; 'P.False' if it was not.
settingVlanRemovePriorityStrByValue :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingVlan a) =>
a -> VlanPriorityMap -> Text -> m Bool
settingVlanRemovePriorityStrByValue a
setting VlanPriorityMap
map_ Text
str = 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 SettingVlan
setting' <- a -> IO (Ptr SettingVlan)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    let map_' :: CUInt
map_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VlanPriorityMap -> Int) -> VlanPriorityMap -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VlanPriorityMap -> Int
forall a. Enum a => a -> Int
fromEnum) VlanPriorityMap
map_
    CString
str' <- Text -> IO CString
textToCString Text
str
    CInt
result <- Ptr SettingVlan -> CUInt -> CString -> IO CInt
nm_setting_vlan_remove_priority_str_by_value Ptr SettingVlan
setting' CUInt
map_' CString
str'
    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
str'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingVlanRemovePriorityStrByValueMethodInfo
instance (signature ~ (NM.Enums.VlanPriorityMap -> T.Text -> m Bool), MonadIO m, IsSettingVlan a) => O.OverloadedMethod SettingVlanRemovePriorityStrByValueMethodInfo a signature where
    overloadedMethod = settingVlanRemovePriorityStrByValue

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


#endif