{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Linux Traffic Control Settings
-- 
-- /Since: 1.12/

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

module GI.NM.Objects.SettingTCConfig
    ( 

-- * Exported types
    SettingTCConfig(..)                     ,
    IsSettingTCConfig                       ,
    toSettingTCConfig                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [addQdisc]("GI.NM.Objects.SettingTCConfig#g:method:addQdisc"), [addTfilter]("GI.NM.Objects.SettingTCConfig#g:method:addTfilter"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [clearQdiscs]("GI.NM.Objects.SettingTCConfig#g:method:clearQdiscs"), [clearTfilters]("GI.NM.Objects.SettingTCConfig#g:method:clearTfilters"), [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"), [removeQdisc]("GI.NM.Objects.SettingTCConfig#g:method:removeQdisc"), [removeQdiscByValue]("GI.NM.Objects.SettingTCConfig#g:method:removeQdiscByValue"), [removeTfilter]("GI.NM.Objects.SettingTCConfig#g:method:removeTfilter"), [removeTfilterByValue]("GI.NM.Objects.SettingTCConfig#g:method:removeTfilterByValue"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [toString]("GI.NM.Objects.Setting#g:method:toString"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [verify]("GI.NM.Objects.Setting#g:method:verify"), [verifySecrets]("GI.NM.Objects.Setting#g:method:verifySecrets"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDbusPropertyType]("GI.NM.Objects.Setting#g:method:getDbusPropertyType"), [getName]("GI.NM.Objects.Setting#g:method:getName"), [getNumQdiscs]("GI.NM.Objects.SettingTCConfig#g:method:getNumQdiscs"), [getNumTfilters]("GI.NM.Objects.SettingTCConfig#g:method:getNumTfilters"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getQdisc]("GI.NM.Objects.SettingTCConfig#g:method:getQdisc"), [getSecretFlags]("GI.NM.Objects.Setting#g:method:getSecretFlags"), [getTfilter]("GI.NM.Objects.SettingTCConfig#g:method:getTfilter").
-- 
-- ==== 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)
    ResolveSettingTCConfigMethod            ,
#endif

-- ** addQdisc #method:addQdisc#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigAddQdiscMethodInfo       ,
#endif
    settingTCConfigAddQdisc                 ,


-- ** addTfilter #method:addTfilter#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigAddTfilterMethodInfo     ,
#endif
    settingTCConfigAddTfilter               ,


-- ** clearQdiscs #method:clearQdiscs#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigClearQdiscsMethodInfo    ,
#endif
    settingTCConfigClearQdiscs              ,


-- ** clearTfilters #method:clearTfilters#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigClearTfiltersMethodInfo  ,
#endif
    settingTCConfigClearTfilters            ,


-- ** getNumQdiscs #method:getNumQdiscs#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigGetNumQdiscsMethodInfo   ,
#endif
    settingTCConfigGetNumQdiscs             ,


-- ** getNumTfilters #method:getNumTfilters#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigGetNumTfiltersMethodInfo ,
#endif
    settingTCConfigGetNumTfilters           ,


-- ** getQdisc #method:getQdisc#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigGetQdiscMethodInfo       ,
#endif
    settingTCConfigGetQdisc                 ,


-- ** getTfilter #method:getTfilter#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigGetTfilterMethodInfo     ,
#endif
    settingTCConfigGetTfilter               ,


-- ** new #method:new#

    settingTCConfigNew                      ,


-- ** removeQdisc #method:removeQdisc#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigRemoveQdiscMethodInfo    ,
#endif
    settingTCConfigRemoveQdisc              ,


-- ** removeQdiscByValue #method:removeQdiscByValue#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigRemoveQdiscByValueMethodInfo,
#endif
    settingTCConfigRemoveQdiscByValue       ,


-- ** removeTfilter #method:removeTfilter#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigRemoveTfilterMethodInfo  ,
#endif
    settingTCConfigRemoveTfilter            ,


-- ** removeTfilterByValue #method:removeTfilterByValue#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigRemoveTfilterByValueMethodInfo,
#endif
    settingTCConfigRemoveTfilterByValue     ,




 -- * Properties


-- ** qdiscs #attr:qdiscs#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigQdiscsPropertyInfo       ,
#endif
#if defined(ENABLE_OVERLOADING)
    settingTCConfigQdiscs                   ,
#endif


-- ** tfilters #attr:tfilters#

#if defined(ENABLE_OVERLOADING)
    SettingTCConfigTfiltersPropertyInfo     ,
#endif
#if defined(ENABLE_OVERLOADING)
    settingTCConfigTfilters                 ,
#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.SettingTeam as NM.SettingTeam
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTeamPort as NM.SettingTeamPort
import {-# SOURCE #-} qualified GI.NM.Objects.SettingTun as NM.SettingTun
import {-# SOURCE #-} qualified GI.NM.Objects.SettingVlan as NM.SettingVlan
import {-# SOURCE #-} qualified GI.NM.Objects.SettingVpn as NM.SettingVpn
import {-# SOURCE #-} qualified GI.NM.Objects.SettingVxlan as NM.SettingVxlan
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWimax as NM.SettingWimax
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWired as NM.SettingWired
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWireless as NM.SettingWireless
import {-# SOURCE #-} qualified GI.NM.Objects.SettingWirelessSecurity as NM.SettingWirelessSecurity
import {-# SOURCE #-} qualified GI.NM.Structs.BridgeVlan as NM.BridgeVlan
import {-# SOURCE #-} qualified GI.NM.Structs.IPAddress as NM.IPAddress
import {-# SOURCE #-} qualified GI.NM.Structs.IPRoute as NM.IPRoute
import {-# SOURCE #-} qualified GI.NM.Structs.IPRoutingRule as NM.IPRoutingRule
import {-# SOURCE #-} qualified GI.NM.Structs.Range as NM.Range
import {-# SOURCE #-} qualified GI.NM.Structs.TCAction as NM.TCAction
import {-# SOURCE #-} qualified GI.NM.Structs.TCQdisc as NM.TCQdisc
import {-# SOURCE #-} qualified GI.NM.Structs.TCTfilter as NM.TCTfilter
import {-# SOURCE #-} qualified GI.NM.Structs.TeamLinkWatcher as NM.TeamLinkWatcher
import {-# SOURCE #-} qualified GI.NM.Structs.VariantAttributeSpec as NM.VariantAttributeSpec

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

#endif

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

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

foreign import ccall "nm_setting_tc_config_get_type"
    c_nm_setting_tc_config_get_type :: IO B.Types.GType

instance B.Types.TypedObject SettingTCConfig where
    glibType :: IO GType
glibType = IO GType
c_nm_setting_tc_config_get_type

instance B.Types.GObject SettingTCConfig

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

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

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

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

#if defined(ENABLE_OVERLOADING)
type family ResolveSettingTCConfigMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSettingTCConfigMethod "addQdisc" o = SettingTCConfigAddQdiscMethodInfo
    ResolveSettingTCConfigMethod "addTfilter" o = SettingTCConfigAddTfilterMethodInfo
    ResolveSettingTCConfigMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSettingTCConfigMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSettingTCConfigMethod "clearQdiscs" o = SettingTCConfigClearQdiscsMethodInfo
    ResolveSettingTCConfigMethod "clearTfilters" o = SettingTCConfigClearTfiltersMethodInfo
    ResolveSettingTCConfigMethod "compare" o = NM.Setting.SettingCompareMethodInfo
    ResolveSettingTCConfigMethod "diff" o = NM.Setting.SettingDiffMethodInfo
    ResolveSettingTCConfigMethod "duplicate" o = NM.Setting.SettingDuplicateMethodInfo
    ResolveSettingTCConfigMethod "enumerateValues" o = NM.Setting.SettingEnumerateValuesMethodInfo
    ResolveSettingTCConfigMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSettingTCConfigMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSettingTCConfigMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveSettingTCConfigMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSettingTCConfigMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSettingTCConfigMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSettingTCConfigMethod "optionClearByName" o = NM.Setting.SettingOptionClearByNameMethodInfo
    ResolveSettingTCConfigMethod "optionGet" o = NM.Setting.SettingOptionGetMethodInfo
    ResolveSettingTCConfigMethod "optionGetAllNames" o = NM.Setting.SettingOptionGetAllNamesMethodInfo
    ResolveSettingTCConfigMethod "optionGetBoolean" o = NM.Setting.SettingOptionGetBooleanMethodInfo
    ResolveSettingTCConfigMethod "optionGetUint32" o = NM.Setting.SettingOptionGetUint32MethodInfo
    ResolveSettingTCConfigMethod "optionSet" o = NM.Setting.SettingOptionSetMethodInfo
    ResolveSettingTCConfigMethod "optionSetBoolean" o = NM.Setting.SettingOptionSetBooleanMethodInfo
    ResolveSettingTCConfigMethod "optionSetUint32" o = NM.Setting.SettingOptionSetUint32MethodInfo
    ResolveSettingTCConfigMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSettingTCConfigMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSettingTCConfigMethod "removeQdisc" o = SettingTCConfigRemoveQdiscMethodInfo
    ResolveSettingTCConfigMethod "removeQdiscByValue" o = SettingTCConfigRemoveQdiscByValueMethodInfo
    ResolveSettingTCConfigMethod "removeTfilter" o = SettingTCConfigRemoveTfilterMethodInfo
    ResolveSettingTCConfigMethod "removeTfilterByValue" o = SettingTCConfigRemoveTfilterByValueMethodInfo
    ResolveSettingTCConfigMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSettingTCConfigMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSettingTCConfigMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSettingTCConfigMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSettingTCConfigMethod "toString" o = NM.Setting.SettingToStringMethodInfo
    ResolveSettingTCConfigMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSettingTCConfigMethod "verify" o = NM.Setting.SettingVerifyMethodInfo
    ResolveSettingTCConfigMethod "verifySecrets" o = NM.Setting.SettingVerifySecretsMethodInfo
    ResolveSettingTCConfigMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSettingTCConfigMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSettingTCConfigMethod "getDbusPropertyType" o = NM.Setting.SettingGetDbusPropertyTypeMethodInfo
    ResolveSettingTCConfigMethod "getName" o = NM.Setting.SettingGetNameMethodInfo
    ResolveSettingTCConfigMethod "getNumQdiscs" o = SettingTCConfigGetNumQdiscsMethodInfo
    ResolveSettingTCConfigMethod "getNumTfilters" o = SettingTCConfigGetNumTfiltersMethodInfo
    ResolveSettingTCConfigMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSettingTCConfigMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSettingTCConfigMethod "getQdisc" o = SettingTCConfigGetQdiscMethodInfo
    ResolveSettingTCConfigMethod "getSecretFlags" o = NM.Setting.SettingGetSecretFlagsMethodInfo
    ResolveSettingTCConfigMethod "getTfilter" o = SettingTCConfigGetTfilterMethodInfo
    ResolveSettingTCConfigMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSettingTCConfigMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveSettingTCConfigMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSettingTCConfigMethod "setSecretFlags" o = NM.Setting.SettingSetSecretFlagsMethodInfo
    ResolveSettingTCConfigMethod l o = O.MethodResolutionFailed l o

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

#endif

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

#endif

-- XXX Generation of property "qdiscs" of object "SettingTCConfig" failed.
-- Not implemented: Don't know how to handle properties of type TPtrArray (TInterface (Name {namespace = "NM", name = "TCQdisc"}))
#if defined(ENABLE_OVERLOADING)
-- XXX Placeholder
data SettingTCConfigQdiscsPropertyInfo
instance AttrInfo SettingTCConfigQdiscsPropertyInfo where
    type AttrAllowedOps SettingTCConfigQdiscsPropertyInfo = '[]
    type AttrSetTypeConstraint SettingTCConfigQdiscsPropertyInfo = (~) ()
    type AttrTransferTypeConstraint SettingTCConfigQdiscsPropertyInfo = (~) ()
    type AttrTransferType SettingTCConfigQdiscsPropertyInfo = ()
    type AttrBaseTypeConstraint SettingTCConfigQdiscsPropertyInfo = (~) ()
    type AttrGetType SettingTCConfigQdiscsPropertyInfo = ()
    type AttrLabel SettingTCConfigQdiscsPropertyInfo = ""
    type AttrOrigin SettingTCConfigQdiscsPropertyInfo = SettingTCConfig
    attrGet = undefined
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
#endif

-- XXX Generation of property "tfilters" of object "SettingTCConfig" failed.
-- Not implemented: Don't know how to handle properties of type TPtrArray (TInterface (Name {namespace = "NM", name = "TCTfilter"}))
#if defined(ENABLE_OVERLOADING)
-- XXX Placeholder
data SettingTCConfigTfiltersPropertyInfo
instance AttrInfo SettingTCConfigTfiltersPropertyInfo where
    type AttrAllowedOps SettingTCConfigTfiltersPropertyInfo = '[]
    type AttrSetTypeConstraint SettingTCConfigTfiltersPropertyInfo = (~) ()
    type AttrTransferTypeConstraint SettingTCConfigTfiltersPropertyInfo = (~) ()
    type AttrTransferType SettingTCConfigTfiltersPropertyInfo = ()
    type AttrBaseTypeConstraint SettingTCConfigTfiltersPropertyInfo = (~) ()
    type AttrGetType SettingTCConfigTfiltersPropertyInfo = ()
    type AttrLabel SettingTCConfigTfiltersPropertyInfo = ""
    type AttrOrigin SettingTCConfigTfiltersPropertyInfo = SettingTCConfig
    attrGet = undefined
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SettingTCConfig
type instance O.AttributeList SettingTCConfig = SettingTCConfigAttributeList
type SettingTCConfigAttributeList = ('[ '("name", NM.Setting.SettingNamePropertyInfo), '("qdiscs", SettingTCConfigQdiscsPropertyInfo), '("tfilters", SettingTCConfigTfiltersPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
settingTCConfigQdiscs :: AttrLabelProxy "qdiscs"
settingTCConfigQdiscs = AttrLabelProxy

settingTCConfigTfilters :: AttrLabelProxy "tfilters"
settingTCConfigTfilters = AttrLabelProxy

#endif

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

#endif

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

foreign import ccall "nm_setting_tc_config_new" nm_setting_tc_config_new :: 
    IO (Ptr SettingTCConfig)

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

#if defined(ENABLE_OVERLOADING)
#endif

-- method SettingTCConfig::add_qdisc
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "qdisc"
--           , argType = TInterface Name { namespace = "NM" , name = "TCQdisc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the qdisc to add" , 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_tc_config_add_qdisc" nm_setting_tc_config_add_qdisc :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Ptr NM.TCQdisc.TCQdisc ->               -- qdisc : TInterface (Name {namespace = "NM", name = "TCQdisc"})
    IO CInt

-- | Appends a new qdisc and associated information to the setting.  The
-- given qdisc is duplicated internally and is not changed by this function.
-- If an identical qdisc (considering attributes as well) already exists, the
-- qdisc is not added and the function returns 'P.False'.
-- 
-- /Since: 1.12/
settingTCConfigAddQdisc ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> NM.TCQdisc.TCQdisc
    -- ^ /@qdisc@/: the qdisc to add
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the qdisc was added; 'P.False' if the qdisc was already known.
settingTCConfigAddQdisc :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> TCQdisc -> m Bool
settingTCConfigAddQdisc a
setting TCQdisc
qdisc = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCQdisc
qdisc' <- TCQdisc -> IO (Ptr TCQdisc)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TCQdisc
qdisc
    CInt
result <- Ptr SettingTCConfig -> Ptr TCQdisc -> IO CInt
nm_setting_tc_config_add_qdisc Ptr SettingTCConfig
setting' Ptr TCQdisc
qdisc'
    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
    TCQdisc -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TCQdisc
qdisc
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigAddQdiscMethodInfo
instance (signature ~ (NM.TCQdisc.TCQdisc -> m Bool), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigAddQdiscMethodInfo a signature where
    overloadedMethod = settingTCConfigAddQdisc

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


#endif

-- method SettingTCConfig::add_tfilter
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "tfilter"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "TCTfilter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the tfilter to add" , 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_tc_config_add_tfilter" nm_setting_tc_config_add_tfilter :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Ptr NM.TCTfilter.TCTfilter ->           -- tfilter : TInterface (Name {namespace = "NM", name = "TCTfilter"})
    IO CInt

-- | Appends a new tfilter and associated information to the setting.  The
-- given tfilter is duplicated internally and is not changed by this function.
-- If an identical tfilter (considering attributes as well) already exists, the
-- tfilter is not added and the function returns 'P.False'.
-- 
-- /Since: 1.12/
settingTCConfigAddTfilter ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> NM.TCTfilter.TCTfilter
    -- ^ /@tfilter@/: the tfilter to add
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the tfilter was added; 'P.False' if the tfilter was already known.
settingTCConfigAddTfilter :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> TCTfilter -> m Bool
settingTCConfigAddTfilter a
setting TCTfilter
tfilter = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCTfilter
tfilter' <- TCTfilter -> IO (Ptr TCTfilter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TCTfilter
tfilter
    CInt
result <- Ptr SettingTCConfig -> Ptr TCTfilter -> IO CInt
nm_setting_tc_config_add_tfilter Ptr SettingTCConfig
setting' Ptr TCTfilter
tfilter'
    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
    TCTfilter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TCTfilter
tfilter
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigAddTfilterMethodInfo
instance (signature ~ (NM.TCTfilter.TCTfilter -> m Bool), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigAddTfilterMethodInfo a signature where
    overloadedMethod = settingTCConfigAddTfilter

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


#endif

-- method SettingTCConfig::clear_qdiscs
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , 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_tc_config_clear_qdiscs" nm_setting_tc_config_clear_qdiscs :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    IO ()

-- | Removes all configured queueing disciplines.
-- 
-- /Since: 1.12/
settingTCConfigClearQdiscs ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> m ()
settingTCConfigClearQdiscs :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> m ()
settingTCConfigClearQdiscs a
setting = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr SettingTCConfig -> IO ()
nm_setting_tc_config_clear_qdiscs Ptr SettingTCConfig
setting'
    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 SettingTCConfigClearQdiscsMethodInfo
instance (signature ~ (m ()), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigClearQdiscsMethodInfo a signature where
    overloadedMethod = settingTCConfigClearQdiscs

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


#endif

-- method SettingTCConfig::clear_tfilters
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , 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_tc_config_clear_tfilters" nm_setting_tc_config_clear_tfilters :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    IO ()

-- | Removes all configured queueing disciplines.
-- 
-- /Since: 1.12/
settingTCConfigClearTfilters ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> m ()
settingTCConfigClearTfilters :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> m ()
settingTCConfigClearTfilters a
setting = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr SettingTCConfig -> IO ()
nm_setting_tc_config_clear_tfilters Ptr SettingTCConfig
setting'
    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 SettingTCConfigClearTfiltersMethodInfo
instance (signature ~ (m ()), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigClearTfiltersMethodInfo a signature where
    overloadedMethod = settingTCConfigClearTfilters

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


#endif

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

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

-- | /No description available in the introspection data./
-- 
-- /Since: 1.12/
settingTCConfigGetNumQdiscs ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> m Word32
    -- ^ __Returns:__ the number of configured queueing disciplines
settingTCConfigGetNumQdiscs :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> m Word32
settingTCConfigGetNumQdiscs 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingTCConfig -> IO Word32
nm_setting_tc_config_get_num_qdiscs Ptr SettingTCConfig
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 SettingTCConfigGetNumQdiscsMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigGetNumQdiscsMethodInfo a signature where
    overloadedMethod = settingTCConfigGetNumQdiscs

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


#endif

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

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

-- | /No description available in the introspection data./
-- 
-- /Since: 1.12/
settingTCConfigGetNumTfilters ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> m Word32
    -- ^ __Returns:__ the number of configured queueing disciplines
settingTCConfigGetNumTfilters :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> m Word32
settingTCConfigGetNumTfilters 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Word32
result <- Ptr SettingTCConfig -> IO Word32
nm_setting_tc_config_get_num_tfilters Ptr SettingTCConfig
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 SettingTCConfigGetNumTfiltersMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigGetNumTfiltersMethodInfo a signature where
    overloadedMethod = settingTCConfigGetNumTfilters

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


#endif

-- method SettingTCConfig::get_qdisc
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "index number of the qdisc to return"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "NM" , name = "TCQdisc" })
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_tc_config_get_qdisc" nm_setting_tc_config_get_qdisc :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Word32 ->                               -- idx : TBasicType TUInt
    IO (Ptr NM.TCQdisc.TCQdisc)

-- | /No description available in the introspection data./
-- 
-- /Since: 1.12/
settingTCConfigGetQdisc ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> Word32
    -- ^ /@idx@/: index number of the qdisc to return
    -> m NM.TCQdisc.TCQdisc
    -- ^ __Returns:__ the qdisc at index /@idx@/
settingTCConfigGetQdisc :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> Word32 -> m TCQdisc
settingTCConfigGetQdisc a
setting Word32
idx = IO TCQdisc -> m TCQdisc
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TCQdisc -> m TCQdisc) -> IO TCQdisc -> m TCQdisc
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCQdisc
result <- Ptr SettingTCConfig -> Word32 -> IO (Ptr TCQdisc)
nm_setting_tc_config_get_qdisc Ptr SettingTCConfig
setting' Word32
idx
    Text -> Ptr TCQdisc -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingTCConfigGetQdisc" Ptr TCQdisc
result
    TCQdisc
result' <- ((ManagedPtr TCQdisc -> TCQdisc) -> Ptr TCQdisc -> IO TCQdisc
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr TCQdisc -> TCQdisc
NM.TCQdisc.TCQdisc) Ptr TCQdisc
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    TCQdisc -> IO TCQdisc
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TCQdisc
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigGetQdiscMethodInfo
instance (signature ~ (Word32 -> m NM.TCQdisc.TCQdisc), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigGetQdiscMethodInfo a signature where
    overloadedMethod = settingTCConfigGetQdisc

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


#endif

-- method SettingTCConfig::get_tfilter
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "index number of the tfilter to return"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "NM" , name = "TCTfilter" })
-- throws : False
-- Skip return : False

foreign import ccall "nm_setting_tc_config_get_tfilter" nm_setting_tc_config_get_tfilter :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Word32 ->                               -- idx : TBasicType TUInt
    IO (Ptr NM.TCTfilter.TCTfilter)

-- | /No description available in the introspection data./
-- 
-- /Since: 1.12/
settingTCConfigGetTfilter ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> Word32
    -- ^ /@idx@/: index number of the tfilter to return
    -> m NM.TCTfilter.TCTfilter
    -- ^ __Returns:__ the tfilter at index /@idx@/
settingTCConfigGetTfilter :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> Word32 -> m TCTfilter
settingTCConfigGetTfilter a
setting Word32
idx = IO TCTfilter -> m TCTfilter
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TCTfilter -> m TCTfilter) -> IO TCTfilter -> m TCTfilter
forall a b. (a -> b) -> a -> b
$ do
    Ptr SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCTfilter
result <- Ptr SettingTCConfig -> Word32 -> IO (Ptr TCTfilter)
nm_setting_tc_config_get_tfilter Ptr SettingTCConfig
setting' Word32
idx
    Text -> Ptr TCTfilter -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"settingTCConfigGetTfilter" Ptr TCTfilter
result
    TCTfilter
result' <- ((ManagedPtr TCTfilter -> TCTfilter)
-> Ptr TCTfilter -> IO TCTfilter
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr TCTfilter -> TCTfilter
NM.TCTfilter.TCTfilter) Ptr TCTfilter
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
setting
    TCTfilter -> IO TCTfilter
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TCTfilter
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigGetTfilterMethodInfo
instance (signature ~ (Word32 -> m NM.TCTfilter.TCTfilter), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigGetTfilterMethodInfo a signature where
    overloadedMethod = settingTCConfigGetTfilter

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


#endif

-- method SettingTCConfig::remove_qdisc
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "index number of the qdisc"
--                 , 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_tc_config_remove_qdisc" nm_setting_tc_config_remove_qdisc :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Word32 ->                               -- idx : TBasicType TUInt
    IO ()

-- | Removes the qdisc at index /@idx@/.
-- 
-- /Since: 1.12/
settingTCConfigRemoveQdisc ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> Word32
    -- ^ /@idx@/: index number of the qdisc
    -> m ()
settingTCConfigRemoveQdisc :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> Word32 -> m ()
settingTCConfigRemoveQdisc a
setting 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr SettingTCConfig -> Word32 -> IO ()
nm_setting_tc_config_remove_qdisc Ptr SettingTCConfig
setting' 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 SettingTCConfigRemoveQdiscMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigRemoveQdiscMethodInfo a signature where
    overloadedMethod = settingTCConfigRemoveQdisc

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


#endif

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

foreign import ccall "nm_setting_tc_config_remove_qdisc_by_value" nm_setting_tc_config_remove_qdisc_by_value :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Ptr NM.TCQdisc.TCQdisc ->               -- qdisc : TInterface (Name {namespace = "NM", name = "TCQdisc"})
    IO CInt

-- | Removes the first matching qdisc that matches /@qdisc@/.
-- 
-- /Since: 1.12/
settingTCConfigRemoveQdiscByValue ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> NM.TCQdisc.TCQdisc
    -- ^ /@qdisc@/: the qdisc to remove
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the qdisc was found and removed; 'P.False' if it was not.
settingTCConfigRemoveQdiscByValue :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> TCQdisc -> m Bool
settingTCConfigRemoveQdiscByValue a
setting TCQdisc
qdisc = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCQdisc
qdisc' <- TCQdisc -> IO (Ptr TCQdisc)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TCQdisc
qdisc
    CInt
result <- Ptr SettingTCConfig -> Ptr TCQdisc -> IO CInt
nm_setting_tc_config_remove_qdisc_by_value Ptr SettingTCConfig
setting' Ptr TCQdisc
qdisc'
    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
    TCQdisc -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TCQdisc
qdisc
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigRemoveQdiscByValueMethodInfo
instance (signature ~ (NM.TCQdisc.TCQdisc -> m Bool), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigRemoveQdiscByValueMethodInfo a signature where
    overloadedMethod = settingTCConfigRemoveQdiscByValue

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


#endif

-- method SettingTCConfig::remove_tfilter
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "setting"
--           , argType =
--               TInterface Name { namespace = "NM" , name = "SettingTCConfig" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #NMSettingTCConfig"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "idx"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "index number of the tfilter"
--                 , 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_tc_config_remove_tfilter" nm_setting_tc_config_remove_tfilter :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Word32 ->                               -- idx : TBasicType TUInt
    IO ()

-- | Removes the tfilter at index /@idx@/.
-- 
-- /Since: 1.12/
settingTCConfigRemoveTfilter ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> Word32
    -- ^ /@idx@/: index number of the tfilter
    -> m ()
settingTCConfigRemoveTfilter :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> Word32 -> m ()
settingTCConfigRemoveTfilter a
setting 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr SettingTCConfig -> Word32 -> IO ()
nm_setting_tc_config_remove_tfilter Ptr SettingTCConfig
setting' 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 SettingTCConfigRemoveTfilterMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigRemoveTfilterMethodInfo a signature where
    overloadedMethod = settingTCConfigRemoveTfilter

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


#endif

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

foreign import ccall "nm_setting_tc_config_remove_tfilter_by_value" nm_setting_tc_config_remove_tfilter_by_value :: 
    Ptr SettingTCConfig ->                  -- setting : TInterface (Name {namespace = "NM", name = "SettingTCConfig"})
    Ptr NM.TCTfilter.TCTfilter ->           -- tfilter : TInterface (Name {namespace = "NM", name = "TCTfilter"})
    IO CInt

-- | Removes the first matching tfilter that matches /@tfilter@/.
-- 
-- /Since: 1.12/
settingTCConfigRemoveTfilterByValue ::
    (B.CallStack.HasCallStack, MonadIO m, IsSettingTCConfig a) =>
    a
    -- ^ /@setting@/: the t'GI.NM.Objects.SettingTCConfig.SettingTCConfig'
    -> NM.TCTfilter.TCTfilter
    -- ^ /@tfilter@/: the tfilter to remove
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the tfilter was found and removed; 'P.False' if it was not.
settingTCConfigRemoveTfilterByValue :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsSettingTCConfig a) =>
a -> TCTfilter -> m Bool
settingTCConfigRemoveTfilterByValue a
setting TCTfilter
tfilter = 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 SettingTCConfig
setting' <- a -> IO (Ptr SettingTCConfig)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
setting
    Ptr TCTfilter
tfilter' <- TCTfilter -> IO (Ptr TCTfilter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TCTfilter
tfilter
    CInt
result <- Ptr SettingTCConfig -> Ptr TCTfilter -> IO CInt
nm_setting_tc_config_remove_tfilter_by_value Ptr SettingTCConfig
setting' Ptr TCTfilter
tfilter'
    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
    TCTfilter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TCTfilter
tfilter
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data SettingTCConfigRemoveTfilterByValueMethodInfo
instance (signature ~ (NM.TCTfilter.TCTfilter -> m Bool), MonadIO m, IsSettingTCConfig a) => O.OverloadedMethod SettingTCConfigRemoveTfilterByValueMethodInfo a signature where
    overloadedMethod = settingTCConfigRemoveTfilterByValue

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


#endif