{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gio.Objects.IPv6TclassMessage
(
IPv6TclassMessage(..) ,
IsIPv6TclassMessage ,
toIPv6TclassMessage ,
#if defined(ENABLE_OVERLOADING)
ResolveIPv6TclassMessageMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
IPv6TclassMessageGetDscpMethodInfo ,
#endif
iPv6TclassMessageGetDscp ,
#if defined(ENABLE_OVERLOADING)
IPv6TclassMessageGetEcnMethodInfo ,
#endif
iPv6TclassMessageGetEcn ,
iPv6TclassMessageNew ,
) 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
#if MIN_VERSION_base(4,18,0)
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Objects.SocketControlMessage as Gio.SocketControlMessage
#else
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Objects.SocketControlMessage as Gio.SocketControlMessage
#endif
newtype IPv6TclassMessage = IPv6TclassMessage (SP.ManagedPtr IPv6TclassMessage)
deriving (IPv6TclassMessage -> IPv6TclassMessage -> Bool
(IPv6TclassMessage -> IPv6TclassMessage -> Bool)
-> (IPv6TclassMessage -> IPv6TclassMessage -> Bool)
-> Eq IPv6TclassMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IPv6TclassMessage -> IPv6TclassMessage -> Bool
== :: IPv6TclassMessage -> IPv6TclassMessage -> Bool
$c/= :: IPv6TclassMessage -> IPv6TclassMessage -> Bool
/= :: IPv6TclassMessage -> IPv6TclassMessage -> Bool
Eq)
instance SP.ManagedPtrNewtype IPv6TclassMessage where
toManagedPtr :: IPv6TclassMessage -> ManagedPtr IPv6TclassMessage
toManagedPtr (IPv6TclassMessage ManagedPtr IPv6TclassMessage
p) = ManagedPtr IPv6TclassMessage
p
foreign import ccall "g_ipv6_tclass_message_get_type"
c_g_ipv6_tclass_message_get_type :: IO B.Types.GType
instance B.Types.TypedObject IPv6TclassMessage where
glibType :: IO GType
glibType = IO GType
c_g_ipv6_tclass_message_get_type
instance B.Types.GObject IPv6TclassMessage
class (SP.GObject o, O.IsDescendantOf IPv6TclassMessage o) => IsIPv6TclassMessage o
instance (SP.GObject o, O.IsDescendantOf IPv6TclassMessage o) => IsIPv6TclassMessage o
instance O.HasParentTypes IPv6TclassMessage
type instance O.ParentTypes IPv6TclassMessage = '[Gio.SocketControlMessage.SocketControlMessage, GObject.Object.Object]
toIPv6TclassMessage :: (MIO.MonadIO m, IsIPv6TclassMessage o) => o -> m IPv6TclassMessage
toIPv6TclassMessage :: forall (m :: * -> *) o.
(MonadIO m, IsIPv6TclassMessage o) =>
o -> m IPv6TclassMessage
toIPv6TclassMessage = IO IPv6TclassMessage -> m IPv6TclassMessage
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO IPv6TclassMessage -> m IPv6TclassMessage)
-> (o -> IO IPv6TclassMessage) -> o -> m IPv6TclassMessage
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr IPv6TclassMessage -> IPv6TclassMessage)
-> o -> IO IPv6TclassMessage
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr IPv6TclassMessage -> IPv6TclassMessage
IPv6TclassMessage
instance B.GValue.IsGValue (Maybe IPv6TclassMessage) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_g_ipv6_tclass_message_get_type
gvalueSet_ :: Ptr GValue -> Maybe IPv6TclassMessage -> IO ()
gvalueSet_ Ptr GValue
gv Maybe IPv6TclassMessage
P.Nothing = Ptr GValue -> Ptr IPv6TclassMessage -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr IPv6TclassMessage
forall a. Ptr a
FP.nullPtr :: FP.Ptr IPv6TclassMessage)
gvalueSet_ Ptr GValue
gv (P.Just IPv6TclassMessage
obj) = IPv6TclassMessage -> (Ptr IPv6TclassMessage -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr IPv6TclassMessage
obj (Ptr GValue -> Ptr IPv6TclassMessage -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe IPv6TclassMessage)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr IPv6TclassMessage)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr IPv6TclassMessage)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newObject IPv6TclassMessage ptr
else return P.Nothing
#if defined(ENABLE_OVERLOADING)
type family ResolveIPv6TclassMessageMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveIPv6TclassMessageMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveIPv6TclassMessageMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveIPv6TclassMessageMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveIPv6TclassMessageMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveIPv6TclassMessageMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveIPv6TclassMessageMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveIPv6TclassMessageMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveIPv6TclassMessageMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveIPv6TclassMessageMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveIPv6TclassMessageMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveIPv6TclassMessageMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveIPv6TclassMessageMethod "serialize" o = Gio.SocketControlMessage.SocketControlMessageSerializeMethodInfo
ResolveIPv6TclassMessageMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveIPv6TclassMessageMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveIPv6TclassMessageMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveIPv6TclassMessageMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveIPv6TclassMessageMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveIPv6TclassMessageMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveIPv6TclassMessageMethod "getDscp" o = IPv6TclassMessageGetDscpMethodInfo
ResolveIPv6TclassMessageMethod "getEcn" o = IPv6TclassMessageGetEcnMethodInfo
ResolveIPv6TclassMessageMethod "getLevel" o = Gio.SocketControlMessage.SocketControlMessageGetLevelMethodInfo
ResolveIPv6TclassMessageMethod "getMsgType" o = Gio.SocketControlMessage.SocketControlMessageGetMsgTypeMethodInfo
ResolveIPv6TclassMessageMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveIPv6TclassMessageMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveIPv6TclassMessageMethod "getSize" o = Gio.SocketControlMessage.SocketControlMessageGetSizeMethodInfo
ResolveIPv6TclassMessageMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveIPv6TclassMessageMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
ResolveIPv6TclassMessageMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveIPv6TclassMessageMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveIPv6TclassMessageMethod t IPv6TclassMessage, O.OverloadedMethod info IPv6TclassMessage p) => OL.IsLabel t (IPv6TclassMessage -> 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 ~ ResolveIPv6TclassMessageMethod t IPv6TclassMessage, O.OverloadedMethod info IPv6TclassMessage p, R.HasField t IPv6TclassMessage p) => R.HasField t IPv6TclassMessage p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveIPv6TclassMessageMethod t IPv6TclassMessage, O.OverloadedMethodInfo info IPv6TclassMessage) => OL.IsLabel t (O.MethodProxy info IPv6TclassMessage) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList IPv6TclassMessage
type instance O.AttributeList IPv6TclassMessage = IPv6TclassMessageAttributeList
type IPv6TclassMessageAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type instance O.SignalList IPv6TclassMessage = IPv6TclassMessageSignalList
type IPv6TclassMessageSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_ipv6_tclass_message_new" g_ipv6_tclass_message_new ::
Word8 ->
CUInt ->
IO (Ptr IPv6TclassMessage)
iPv6TclassMessageNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Word8
-> Gio.Enums.EcnCodePoint
-> m IPv6TclassMessage
iPv6TclassMessageNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Word8 -> EcnCodePoint -> m IPv6TclassMessage
iPv6TclassMessageNew Word8
dscp EcnCodePoint
ecn = IO IPv6TclassMessage -> m IPv6TclassMessage
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO IPv6TclassMessage -> m IPv6TclassMessage)
-> IO IPv6TclassMessage -> m IPv6TclassMessage
forall a b. (a -> b) -> a -> b
$ do
let ecn' :: CUInt
ecn' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (EcnCodePoint -> Int) -> EcnCodePoint -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. EcnCodePoint -> Int
forall a. Enum a => a -> Int
fromEnum) EcnCodePoint
ecn
result <- Word8 -> CUInt -> IO (Ptr IPv6TclassMessage)
g_ipv6_tclass_message_new Word8
dscp CUInt
ecn'
checkUnexpectedReturnNULL "iPv6TclassMessageNew" result
result' <- (wrapObject IPv6TclassMessage) result
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_ipv6_tclass_message_get_dscp" g_ipv6_tclass_message_get_dscp ::
Ptr IPv6TclassMessage ->
IO Word8
iPv6TclassMessageGetDscp ::
(B.CallStack.HasCallStack, MonadIO m, IsIPv6TclassMessage a) =>
a
-> m Word8
iPv6TclassMessageGetDscp :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsIPv6TclassMessage a) =>
a -> m Word8
iPv6TclassMessageGetDscp a
message = IO Word8 -> m Word8
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word8 -> m Word8) -> IO Word8 -> m Word8
forall a b. (a -> b) -> a -> b
$ do
message' <- a -> IO (Ptr IPv6TclassMessage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
message
result <- g_ipv6_tclass_message_get_dscp message'
touchManagedPtr message
return result
#if defined(ENABLE_OVERLOADING)
data IPv6TclassMessageGetDscpMethodInfo
instance (signature ~ (m Word8), MonadIO m, IsIPv6TclassMessage a) => O.OverloadedMethod IPv6TclassMessageGetDscpMethodInfo a signature where
overloadedMethod = iPv6TclassMessageGetDscp
instance O.OverloadedMethodInfo IPv6TclassMessageGetDscpMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.IPv6TclassMessage.iPv6TclassMessageGetDscp",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-IPv6TclassMessage.html#v:iPv6TclassMessageGetDscp"
})
#endif
foreign import ccall "g_ipv6_tclass_message_get_ecn" g_ipv6_tclass_message_get_ecn ::
Ptr IPv6TclassMessage ->
IO CUInt
iPv6TclassMessageGetEcn ::
(B.CallStack.HasCallStack, MonadIO m, IsIPv6TclassMessage a) =>
a
-> m Gio.Enums.EcnCodePoint
iPv6TclassMessageGetEcn :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsIPv6TclassMessage a) =>
a -> m EcnCodePoint
iPv6TclassMessageGetEcn a
message = IO EcnCodePoint -> m EcnCodePoint
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO EcnCodePoint -> m EcnCodePoint)
-> IO EcnCodePoint -> m EcnCodePoint
forall a b. (a -> b) -> a -> b
$ do
message' <- a -> IO (Ptr IPv6TclassMessage)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
message
result <- g_ipv6_tclass_message_get_ecn message'
let result' = (Int -> EcnCodePoint
forall a. Enum a => Int -> a
toEnum (Int -> EcnCodePoint) -> (CUInt -> Int) -> CUInt -> EcnCodePoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
touchManagedPtr message
return result'
#if defined(ENABLE_OVERLOADING)
data IPv6TclassMessageGetEcnMethodInfo
instance (signature ~ (m Gio.Enums.EcnCodePoint), MonadIO m, IsIPv6TclassMessage a) => O.OverloadedMethod IPv6TclassMessageGetEcnMethodInfo a signature where
overloadedMethod = iPv6TclassMessageGetEcn
instance O.OverloadedMethodInfo IPv6TclassMessageGetEcnMethodInfo a where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Gio.Objects.IPv6TclassMessage.iPv6TclassMessageGetEcn",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gio-2.0.38/docs/GI-Gio-Objects-IPv6TclassMessage.html#v:iPv6TclassMessageGetEcn"
})
#endif