{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Gdk.Structs.FrameTimings
    ( 
    FrameTimings(..)                        ,
    noFrameTimings                          ,
 
#if defined(ENABLE_OVERLOADING)
    ResolveFrameTimingsMethod               ,
#endif
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetCompleteMethodInfo       ,
#endif
    frameTimingsGetComplete                 ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetFrameCounterMethodInfo   ,
#endif
    frameTimingsGetFrameCounter             ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetFrameTimeMethodInfo      ,
#endif
    frameTimingsGetFrameTime                ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetPredictedPresentationTimeMethodInfo,
#endif
    frameTimingsGetPredictedPresentationTime,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetPresentationTimeMethodInfo,
#endif
    frameTimingsGetPresentationTime         ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsGetRefreshIntervalMethodInfo,
#endif
    frameTimingsGetRefreshInterval          ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsRefMethodInfo               ,
#endif
    frameTimingsRef                         ,
#if defined(ENABLE_OVERLOADING)
    FrameTimingsUnrefMethodInfo             ,
#endif
    frameTimingsUnref                       ,
    ) 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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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 Data.Text as T
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
newtype FrameTimings = FrameTimings (ManagedPtr FrameTimings)
    deriving (FrameTimings -> FrameTimings -> Bool
(FrameTimings -> FrameTimings -> Bool)
-> (FrameTimings -> FrameTimings -> Bool) -> Eq FrameTimings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FrameTimings -> FrameTimings -> Bool
$c/= :: FrameTimings -> FrameTimings -> Bool
== :: FrameTimings -> FrameTimings -> Bool
$c== :: FrameTimings -> FrameTimings -> Bool
Eq)
foreign import ccall "gdk_frame_timings_get_type" c_gdk_frame_timings_get_type :: 
    IO GType
instance BoxedObject FrameTimings where
    boxedType :: FrameTimings -> IO GType
boxedType _ = IO GType
c_gdk_frame_timings_get_type
instance B.GValue.IsGValue FrameTimings where
    toGValue :: FrameTimings -> IO GValue
toGValue o :: FrameTimings
o = do
        GType
gtype <- IO GType
c_gdk_frame_timings_get_type
        FrameTimings -> (Ptr FrameTimings -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr FrameTimings
o (GType
-> (GValue -> Ptr FrameTimings -> IO ())
-> Ptr FrameTimings
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr FrameTimings -> IO ()
forall a. GValue -> Ptr a -> IO ()
B.GValue.set_boxed)
        
    fromGValue :: GValue -> IO FrameTimings
fromGValue gv :: GValue
gv = do
        Ptr FrameTimings
ptr <- GValue -> IO (Ptr FrameTimings)
forall b. GValue -> IO (Ptr b)
B.GValue.get_boxed GValue
gv :: IO (Ptr FrameTimings)
        (ManagedPtr FrameTimings -> FrameTimings)
-> Ptr FrameTimings -> IO FrameTimings
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr FrameTimings -> FrameTimings
FrameTimings Ptr FrameTimings
ptr
        
    
noFrameTimings :: Maybe FrameTimings
noFrameTimings :: Maybe FrameTimings
noFrameTimings = Maybe FrameTimings
forall a. Maybe a
Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList FrameTimings
type instance O.AttributeList FrameTimings = FrameTimingsAttributeList
type FrameTimingsAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "gdk_frame_timings_get_complete" gdk_frame_timings_get_complete :: 
    Ptr FrameTimings ->                     
    IO CInt
frameTimingsGetComplete ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Bool
    
    
frameTimingsGetComplete :: FrameTimings -> m Bool
frameTimingsGetComplete timings :: FrameTimings
timings = IO Bool -> m Bool
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 FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    CInt
result <- Ptr FrameTimings -> IO CInt
gdk_frame_timings_get_complete Ptr FrameTimings
timings'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= 0) CInt
result
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetCompleteMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo FrameTimingsGetCompleteMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetComplete
#endif
foreign import ccall "gdk_frame_timings_get_frame_counter" gdk_frame_timings_get_frame_counter :: 
    Ptr FrameTimings ->                     
    IO Int64
frameTimingsGetFrameCounter ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Int64
    
frameTimingsGetFrameCounter :: FrameTimings -> m Int64
frameTimingsGetFrameCounter timings :: FrameTimings
timings = IO Int64 -> m Int64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Int64
result <- Ptr FrameTimings -> IO Int64
gdk_frame_timings_get_frame_counter Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Int64 -> IO Int64
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetFrameCounterMethodInfo
instance (signature ~ (m Int64), MonadIO m) => O.MethodInfo FrameTimingsGetFrameCounterMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetFrameCounter
#endif
foreign import ccall "gdk_frame_timings_get_frame_time" gdk_frame_timings_get_frame_time :: 
    Ptr FrameTimings ->                     
    IO Int64
frameTimingsGetFrameTime ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Int64
    
    
frameTimingsGetFrameTime :: FrameTimings -> m Int64
frameTimingsGetFrameTime timings :: FrameTimings
timings = IO Int64 -> m Int64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Int64
result <- Ptr FrameTimings -> IO Int64
gdk_frame_timings_get_frame_time Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Int64 -> IO Int64
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetFrameTimeMethodInfo
instance (signature ~ (m Int64), MonadIO m) => O.MethodInfo FrameTimingsGetFrameTimeMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetFrameTime
#endif
foreign import ccall "gdk_frame_timings_get_predicted_presentation_time" gdk_frame_timings_get_predicted_presentation_time :: 
    Ptr FrameTimings ->                     
    IO Int64
frameTimingsGetPredictedPresentationTime ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Int64
    
    
    
frameTimingsGetPredictedPresentationTime :: FrameTimings -> m Int64
frameTimingsGetPredictedPresentationTime timings :: FrameTimings
timings = IO Int64 -> m Int64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Int64
result <- Ptr FrameTimings -> IO Int64
gdk_frame_timings_get_predicted_presentation_time Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Int64 -> IO Int64
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetPredictedPresentationTimeMethodInfo
instance (signature ~ (m Int64), MonadIO m) => O.MethodInfo FrameTimingsGetPredictedPresentationTimeMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetPredictedPresentationTime
#endif
foreign import ccall "gdk_frame_timings_get_presentation_time" gdk_frame_timings_get_presentation_time :: 
    Ptr FrameTimings ->                     
    IO Int64
frameTimingsGetPresentationTime ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Int64
    
    
    
frameTimingsGetPresentationTime :: FrameTimings -> m Int64
frameTimingsGetPresentationTime timings :: FrameTimings
timings = IO Int64 -> m Int64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Int64
result <- Ptr FrameTimings -> IO Int64
gdk_frame_timings_get_presentation_time Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Int64 -> IO Int64
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetPresentationTimeMethodInfo
instance (signature ~ (m Int64), MonadIO m) => O.MethodInfo FrameTimingsGetPresentationTimeMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetPresentationTime
#endif
foreign import ccall "gdk_frame_timings_get_refresh_interval" gdk_frame_timings_get_refresh_interval :: 
    Ptr FrameTimings ->                     
    IO Int64
frameTimingsGetRefreshInterval ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m Int64
    
    
    
frameTimingsGetRefreshInterval :: FrameTimings -> m Int64
frameTimingsGetRefreshInterval timings :: FrameTimings
timings = IO Int64 -> m Int64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Int64
result <- Ptr FrameTimings -> IO Int64
gdk_frame_timings_get_refresh_interval Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    Int64 -> IO Int64
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result
#if defined(ENABLE_OVERLOADING)
data FrameTimingsGetRefreshIntervalMethodInfo
instance (signature ~ (m Int64), MonadIO m) => O.MethodInfo FrameTimingsGetRefreshIntervalMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsGetRefreshInterval
#endif
foreign import ccall "gdk_frame_timings_ref" gdk_frame_timings_ref :: 
    Ptr FrameTimings ->                     
    IO (Ptr FrameTimings)
frameTimingsRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m FrameTimings
    
frameTimingsRef :: FrameTimings -> m FrameTimings
frameTimingsRef timings :: FrameTimings
timings = IO FrameTimings -> m FrameTimings
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO FrameTimings -> m FrameTimings)
-> IO FrameTimings -> m FrameTimings
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Ptr FrameTimings
result <- Ptr FrameTimings -> IO (Ptr FrameTimings)
gdk_frame_timings_ref Ptr FrameTimings
timings'
    Text -> Ptr FrameTimings -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "frameTimingsRef" Ptr FrameTimings
result
    FrameTimings
result' <- ((ManagedPtr FrameTimings -> FrameTimings)
-> Ptr FrameTimings -> IO FrameTimings
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr FrameTimings -> FrameTimings
FrameTimings) Ptr FrameTimings
result
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    FrameTimings -> IO FrameTimings
forall (m :: * -> *) a. Monad m => a -> m a
return FrameTimings
result'
#if defined(ENABLE_OVERLOADING)
data FrameTimingsRefMethodInfo
instance (signature ~ (m FrameTimings), MonadIO m) => O.MethodInfo FrameTimingsRefMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsRef
#endif
foreign import ccall "gdk_frame_timings_unref" gdk_frame_timings_unref :: 
    Ptr FrameTimings ->                     
    IO ()
frameTimingsUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    FrameTimings
    
    -> m ()
frameTimingsUnref :: FrameTimings -> m ()
frameTimingsUnref timings :: FrameTimings
timings = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr FrameTimings
timings' <- FrameTimings -> IO (Ptr FrameTimings)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr FrameTimings
timings
    Ptr FrameTimings -> IO ()
gdk_frame_timings_unref Ptr FrameTimings
timings'
    FrameTimings -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr FrameTimings
timings
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data FrameTimingsUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo FrameTimingsUnrefMethodInfo FrameTimings signature where
    overloadedMethod = frameTimingsUnref
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveFrameTimingsMethod (t :: Symbol) (o :: *) :: * where
    ResolveFrameTimingsMethod "ref" o = FrameTimingsRefMethodInfo
    ResolveFrameTimingsMethod "unref" o = FrameTimingsUnrefMethodInfo
    ResolveFrameTimingsMethod "getComplete" o = FrameTimingsGetCompleteMethodInfo
    ResolveFrameTimingsMethod "getFrameCounter" o = FrameTimingsGetFrameCounterMethodInfo
    ResolveFrameTimingsMethod "getFrameTime" o = FrameTimingsGetFrameTimeMethodInfo
    ResolveFrameTimingsMethod "getPredictedPresentationTime" o = FrameTimingsGetPredictedPresentationTimeMethodInfo
    ResolveFrameTimingsMethod "getPresentationTime" o = FrameTimingsGetPresentationTimeMethodInfo
    ResolveFrameTimingsMethod "getRefreshInterval" o = FrameTimingsGetRefreshIntervalMethodInfo
    ResolveFrameTimingsMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveFrameTimingsMethod t FrameTimings, O.MethodInfo info FrameTimings p) => OL.IsLabel t (FrameTimings -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif
#endif