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