{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GLib.Structs.TimeZone
    ( 
    TimeZone(..)                            ,
 
#if defined(ENABLE_OVERLOADING)
    ResolveTimeZoneMethod                   ,
#endif
#if defined(ENABLE_OVERLOADING)
    TimeZoneAdjustTimeMethodInfo            ,
#endif
    timeZoneAdjustTime                      ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneFindIntervalMethodInfo          ,
#endif
    timeZoneFindInterval                    ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneGetAbbreviationMethodInfo       ,
#endif
    timeZoneGetAbbreviation                 ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneGetIdentifierMethodInfo         ,
#endif
    timeZoneGetIdentifier                   ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneGetOffsetMethodInfo             ,
#endif
    timeZoneGetOffset                       ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneIsDstMethodInfo                 ,
#endif
    timeZoneIsDst                           ,
    timeZoneNew                             ,
    timeZoneNewIdentifier                   ,
    timeZoneNewLocal                        ,
    timeZoneNewOffset                       ,
    timeZoneNewUtc                          ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneRefMethodInfo                   ,
#endif
    timeZoneRef                             ,
#if defined(ENABLE_OVERLOADING)
    TimeZoneUnrefMethodInfo                 ,
#endif
    timeZoneUnref                           ,
    ) 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 {-# SOURCE #-} qualified GI.GLib.Enums as GLib.Enums
#else
import {-# SOURCE #-} qualified GI.GLib.Enums as GLib.Enums
#endif
newtype TimeZone = TimeZone (SP.ManagedPtr TimeZone)
    deriving (TimeZone -> TimeZone -> Bool
(TimeZone -> TimeZone -> Bool)
-> (TimeZone -> TimeZone -> Bool) -> Eq TimeZone
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TimeZone -> TimeZone -> Bool
== :: TimeZone -> TimeZone -> Bool
$c/= :: TimeZone -> TimeZone -> Bool
/= :: TimeZone -> TimeZone -> Bool
Eq)
instance SP.ManagedPtrNewtype TimeZone where
    toManagedPtr :: TimeZone -> ManagedPtr TimeZone
toManagedPtr (TimeZone ManagedPtr TimeZone
p) = ManagedPtr TimeZone
p
foreign import ccall "g_time_zone_get_type" c_g_time_zone_get_type :: 
    IO GType
type instance O.ParentTypes TimeZone = '[]
instance O.HasParentTypes TimeZone
instance B.Types.TypedObject TimeZone where
    glibType :: IO GType
glibType = IO GType
c_g_time_zone_get_type
instance B.Types.GBoxed TimeZone
instance B.GValue.IsGValue (Maybe TimeZone) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_g_time_zone_get_type
    gvalueSet_ :: Ptr GValue -> Maybe TimeZone -> IO ()
gvalueSet_ Ptr GValue
gv Maybe TimeZone
P.Nothing = Ptr GValue -> Ptr TimeZone -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr TimeZone
forall a. Ptr a
FP.nullPtr :: FP.Ptr TimeZone)
    gvalueSet_ Ptr GValue
gv (P.Just TimeZone
obj) = TimeZone -> (Ptr TimeZone -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr TimeZone
obj (Ptr GValue -> Ptr TimeZone -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe TimeZone)
gvalueGet_ Ptr GValue
gv = do
        Ptr TimeZone
ptr <- Ptr GValue -> IO (Ptr TimeZone)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr TimeZone)
        if Ptr TimeZone
ptr Ptr TimeZone -> Ptr TimeZone -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr TimeZone
forall a. Ptr a
FP.nullPtr
        then TimeZone -> Maybe TimeZone
forall a. a -> Maybe a
P.Just (TimeZone -> Maybe TimeZone) -> IO TimeZone -> IO (Maybe TimeZone)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr TimeZone -> TimeZone
TimeZone Ptr TimeZone
ptr
        else Maybe TimeZone -> IO (Maybe TimeZone)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe TimeZone
forall a. Maybe a
P.Nothing
        
    
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList TimeZone
type instance O.AttributeList TimeZone = TimeZoneAttributeList
type TimeZoneAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "g_time_zone_new" g_time_zone_new :: 
    CString ->                              
    IO (Ptr TimeZone)
{-# DEPRECATED timeZoneNew ["(Since version 2.68)","Use 'GI.GLib.Structs.TimeZone.timeZoneNewIdentifier' instead, as it provides","    error reporting. Change your code to handle a potentially 'P.Nothing' return","    value."] #-}
timeZoneNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Maybe (T.Text)
    
    -> m TimeZone
    
timeZoneNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Text -> m TimeZone
timeZoneNew Maybe Text
identifier = IO TimeZone -> m TimeZone
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TimeZone -> m TimeZone) -> IO TimeZone -> m TimeZone
forall a b. (a -> b) -> a -> b
$ do
    Ptr CChar
maybeIdentifier <- case Maybe Text
identifier of
        Maybe Text
Nothing -> Ptr CChar -> IO (Ptr CChar)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just Text
jIdentifier -> do
            Ptr CChar
jIdentifier' <- Text -> IO (Ptr CChar)
textToCString Text
jIdentifier
            Ptr CChar -> IO (Ptr CChar)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jIdentifier'
    Ptr TimeZone
result <- Ptr CChar -> IO (Ptr TimeZone)
g_time_zone_new Ptr CChar
maybeIdentifier
    Text -> Ptr TimeZone -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneNew" Ptr TimeZone
result
    TimeZone
result' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeIdentifier
    TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_time_zone_new_identifier" g_time_zone_new_identifier :: 
    CString ->                              
    IO (Ptr TimeZone)
timeZoneNewIdentifier ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Maybe (T.Text)
    
    -> m (Maybe TimeZone)
    
    
timeZoneNewIdentifier :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Text -> m (Maybe TimeZone)
timeZoneNewIdentifier Maybe Text
identifier = IO (Maybe TimeZone) -> m (Maybe TimeZone)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe TimeZone) -> m (Maybe TimeZone))
-> IO (Maybe TimeZone) -> m (Maybe TimeZone)
forall a b. (a -> b) -> a -> b
$ do
    Ptr CChar
maybeIdentifier <- case Maybe Text
identifier of
        Maybe Text
Nothing -> Ptr CChar -> IO (Ptr CChar)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
forall a. Ptr a
nullPtr
        Just Text
jIdentifier -> do
            Ptr CChar
jIdentifier' <- Text -> IO (Ptr CChar)
textToCString Text
jIdentifier
            Ptr CChar -> IO (Ptr CChar)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CChar
jIdentifier'
    Ptr TimeZone
result <- Ptr CChar -> IO (Ptr TimeZone)
g_time_zone_new_identifier Ptr CChar
maybeIdentifier
    Maybe TimeZone
maybeResult <- Ptr TimeZone
-> (Ptr TimeZone -> IO TimeZone) -> IO (Maybe TimeZone)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr TimeZone
result ((Ptr TimeZone -> IO TimeZone) -> IO (Maybe TimeZone))
-> (Ptr TimeZone -> IO TimeZone) -> IO (Maybe TimeZone)
forall a b. (a -> b) -> a -> b
$ \Ptr TimeZone
result' -> do
        TimeZone
result'' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result'
        TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result''
    Ptr CChar -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CChar
maybeIdentifier
    Maybe TimeZone -> IO (Maybe TimeZone)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe TimeZone
maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_time_zone_new_local" g_time_zone_new_local :: 
    IO (Ptr TimeZone)
timeZoneNewLocal ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m TimeZone
    
timeZoneNewLocal :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m TimeZone
timeZoneNewLocal  = IO TimeZone -> m TimeZone
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TimeZone -> m TimeZone) -> IO TimeZone -> m TimeZone
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
result <- IO (Ptr TimeZone)
g_time_zone_new_local
    Text -> Ptr TimeZone -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneNewLocal" Ptr TimeZone
result
    TimeZone
result' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result
    TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_time_zone_new_offset" g_time_zone_new_offset :: 
    Int32 ->                                
    IO (Ptr TimeZone)
timeZoneNewOffset ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    Int32
    
    -> m TimeZone
    
    
timeZoneNewOffset :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Int32 -> m TimeZone
timeZoneNewOffset Int32
seconds = IO TimeZone -> m TimeZone
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TimeZone -> m TimeZone) -> IO TimeZone -> m TimeZone
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
result <- Int32 -> IO (Ptr TimeZone)
g_time_zone_new_offset Int32
seconds
    Text -> Ptr TimeZone -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneNewOffset" Ptr TimeZone
result
    TimeZone
result' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result
    TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_time_zone_new_utc" g_time_zone_new_utc :: 
    IO (Ptr TimeZone)
timeZoneNewUtc ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m TimeZone
    
timeZoneNewUtc :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m TimeZone
timeZoneNewUtc  = IO TimeZone -> m TimeZone
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TimeZone -> m TimeZone) -> IO TimeZone -> m TimeZone
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
result <- IO (Ptr TimeZone)
g_time_zone_new_utc
    Text -> Ptr TimeZone -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneNewUtc" Ptr TimeZone
result
    TimeZone
result' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result
    TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "g_time_zone_adjust_time" g_time_zone_adjust_time :: 
    Ptr TimeZone ->                         
    CUInt ->                                
    Ptr Int64 ->                            
    IO Int32
timeZoneAdjustTime ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> GLib.Enums.TimeType
    
    -> Int64
    
    -> m ((Int32, Int64))
    
timeZoneAdjustTime :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> TimeType -> Int64 -> m (Int32, Int64)
timeZoneAdjustTime TimeZone
tz TimeType
type_ Int64
time_ = IO (Int32, Int64) -> m (Int32, Int64)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Int32, Int64) -> m (Int32, Int64))
-> IO (Int32, Int64) -> m (Int32, Int64)
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    let type_' :: CUInt
type_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (TimeType -> Int) -> TimeType -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TimeType -> Int
forall a. Enum a => a -> Int
fromEnum) TimeType
type_
    Ptr Int64
time_' <- IO (Ptr Int64)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Int64)
    Ptr Int64 -> Int64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr Int64
time_' Int64
time_
    Int32
result <- Ptr TimeZone -> CUInt -> Ptr Int64 -> IO Int32
g_time_zone_adjust_time Ptr TimeZone
tz' CUInt
type_' Ptr Int64
time_'
    Int64
time_'' <- Ptr Int64 -> IO Int64
forall a. Storable a => Ptr a -> IO a
peek Ptr Int64
time_'
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Ptr Int64 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Int64
time_'
    (Int32, Int64) -> IO (Int32, Int64)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int32
result, Int64
time_'')
#if defined(ENABLE_OVERLOADING)
data TimeZoneAdjustTimeMethodInfo
instance (signature ~ (GLib.Enums.TimeType -> Int64 -> m ((Int32, Int64))), MonadIO m) => O.OverloadedMethod TimeZoneAdjustTimeMethodInfo TimeZone signature where
    overloadedMethod = timeZoneAdjustTime
instance O.OverloadedMethodInfo TimeZoneAdjustTimeMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneAdjustTime",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneAdjustTime"
        })
#endif
foreign import ccall "g_time_zone_find_interval" g_time_zone_find_interval :: 
    Ptr TimeZone ->                         
    CUInt ->                                
    Int64 ->                                
    IO Int32
timeZoneFindInterval ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> GLib.Enums.TimeType
    
    -> Int64
    
    -> m Int32
    
timeZoneFindInterval :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> TimeType -> Int64 -> m Int32
timeZoneFindInterval TimeZone
tz TimeType
type_ Int64
time_ = IO Int32 -> m Int32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    let type_' :: CUInt
type_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (TimeType -> Int) -> TimeType -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TimeType -> Int
forall a. Enum a => a -> Int
fromEnum) TimeType
type_
    Int32
result <- Ptr TimeZone -> CUInt -> Int64 -> IO Int32
g_time_zone_find_interval Ptr TimeZone
tz' CUInt
type_' Int64
time_
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Int32 -> IO Int32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Int32
result
#if defined(ENABLE_OVERLOADING)
data TimeZoneFindIntervalMethodInfo
instance (signature ~ (GLib.Enums.TimeType -> Int64 -> m Int32), MonadIO m) => O.OverloadedMethod TimeZoneFindIntervalMethodInfo TimeZone signature where
    overloadedMethod = timeZoneFindInterval
instance O.OverloadedMethodInfo TimeZoneFindIntervalMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneFindInterval",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneFindInterval"
        })
#endif
foreign import ccall "g_time_zone_get_abbreviation" g_time_zone_get_abbreviation :: 
    Ptr TimeZone ->                         
    Int32 ->                                
    IO CString
timeZoneGetAbbreviation ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> Int32
    
    -> m T.Text
    
timeZoneGetAbbreviation :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> Int32 -> m Text
timeZoneGetAbbreviation TimeZone
tz Int32
interval = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    Ptr CChar
result <- Ptr TimeZone -> Int32 -> IO (Ptr CChar)
g_time_zone_get_abbreviation Ptr TimeZone
tz' Int32
interval
    Text -> Ptr CChar -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneGetAbbreviation" Ptr CChar
result
    Text
result' <- HasCallStack => Ptr CChar -> IO Text
Ptr CChar -> IO Text
cstringToText Ptr CChar
result
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
data TimeZoneGetAbbreviationMethodInfo
instance (signature ~ (Int32 -> m T.Text), MonadIO m) => O.OverloadedMethod TimeZoneGetAbbreviationMethodInfo TimeZone signature where
    overloadedMethod = timeZoneGetAbbreviation
instance O.OverloadedMethodInfo TimeZoneGetAbbreviationMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneGetAbbreviation",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneGetAbbreviation"
        })
#endif
foreign import ccall "g_time_zone_get_identifier" g_time_zone_get_identifier :: 
    Ptr TimeZone ->                         
    IO CString
timeZoneGetIdentifier ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> m T.Text
    
timeZoneGetIdentifier :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> m Text
timeZoneGetIdentifier TimeZone
tz = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    Ptr CChar
result <- Ptr TimeZone -> IO (Ptr CChar)
g_time_zone_get_identifier Ptr TimeZone
tz'
    Text -> Ptr CChar -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneGetIdentifier" Ptr CChar
result
    Text
result' <- HasCallStack => Ptr CChar -> IO Text
Ptr CChar -> IO Text
cstringToText Ptr CChar
result
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
#if defined(ENABLE_OVERLOADING)
data TimeZoneGetIdentifierMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.OverloadedMethod TimeZoneGetIdentifierMethodInfo TimeZone signature where
    overloadedMethod = timeZoneGetIdentifier
instance O.OverloadedMethodInfo TimeZoneGetIdentifierMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneGetIdentifier",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneGetIdentifier"
        })
#endif
foreign import ccall "g_time_zone_get_offset" g_time_zone_get_offset :: 
    Ptr TimeZone ->                         
    Int32 ->                                
    IO Int32
timeZoneGetOffset ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> Int32
    
    -> m Int32
    
    
timeZoneGetOffset :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> Int32 -> m Int32
timeZoneGetOffset TimeZone
tz Int32
interval = IO Int32 -> m Int32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    Int32
result <- Ptr TimeZone -> Int32 -> IO Int32
g_time_zone_get_offset Ptr TimeZone
tz' Int32
interval
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Int32 -> IO Int32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Int32
result
#if defined(ENABLE_OVERLOADING)
data TimeZoneGetOffsetMethodInfo
instance (signature ~ (Int32 -> m Int32), MonadIO m) => O.OverloadedMethod TimeZoneGetOffsetMethodInfo TimeZone signature where
    overloadedMethod = timeZoneGetOffset
instance O.OverloadedMethodInfo TimeZoneGetOffsetMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneGetOffset",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneGetOffset"
        })
#endif
foreign import ccall "g_time_zone_is_dst" g_time_zone_is_dst :: 
    Ptr TimeZone ->                         
    Int32 ->                                
    IO CInt
timeZoneIsDst ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> Int32
    
    -> m Bool
    
timeZoneIsDst :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> Int32 -> m Bool
timeZoneIsDst TimeZone
tz Int32
interval = 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 TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    CInt
result <- Ptr TimeZone -> Int32 -> IO CInt
g_time_zone_is_dst Ptr TimeZone
tz' Int32
interval
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data TimeZoneIsDstMethodInfo
instance (signature ~ (Int32 -> m Bool), MonadIO m) => O.OverloadedMethod TimeZoneIsDstMethodInfo TimeZone signature where
    overloadedMethod = timeZoneIsDst
instance O.OverloadedMethodInfo TimeZoneIsDstMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneIsDst",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneIsDst"
        })
#endif
foreign import ccall "g_time_zone_ref" g_time_zone_ref :: 
    Ptr TimeZone ->                         
    IO (Ptr TimeZone)
timeZoneRef ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> m TimeZone
    
timeZoneRef :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
TimeZone -> m TimeZone
timeZoneRef TimeZone
tz = IO TimeZone -> m TimeZone
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO TimeZone -> m TimeZone) -> IO TimeZone -> m TimeZone
forall a b. (a -> b) -> a -> b
$ do
    Ptr TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    Ptr TimeZone
result <- Ptr TimeZone -> IO (Ptr TimeZone)
g_time_zone_ref Ptr TimeZone
tz'
    Text -> Ptr TimeZone -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"timeZoneRef" Ptr TimeZone
result
    TimeZone
result' <- ((ManagedPtr TimeZone -> TimeZone) -> Ptr TimeZone -> IO TimeZone
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr TimeZone -> TimeZone
TimeZone) Ptr TimeZone
result
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    TimeZone -> IO TimeZone
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return TimeZone
result'
#if defined(ENABLE_OVERLOADING)
data TimeZoneRefMethodInfo
instance (signature ~ (m TimeZone), MonadIO m) => O.OverloadedMethod TimeZoneRefMethodInfo TimeZone signature where
    overloadedMethod = timeZoneRef
instance O.OverloadedMethodInfo TimeZoneRefMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneRef",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneRef"
        })
#endif
foreign import ccall "g_time_zone_unref" g_time_zone_unref :: 
    Ptr TimeZone ->                         
    IO ()
timeZoneUnref ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    TimeZone
    
    -> m ()
timeZoneUnref :: forall (m :: * -> *). (HasCallStack, MonadIO m) => TimeZone -> m ()
timeZoneUnref TimeZone
tz = 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 TimeZone
tz' <- TimeZone -> IO (Ptr TimeZone)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TimeZone
tz
    Ptr TimeZone -> IO ()
g_time_zone_unref Ptr TimeZone
tz'
    TimeZone -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TimeZone
tz
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data TimeZoneUnrefMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod TimeZoneUnrefMethodInfo TimeZone signature where
    overloadedMethod = timeZoneUnref
instance O.OverloadedMethodInfo TimeZoneUnrefMethodInfo TimeZone where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GLib.Structs.TimeZone.timeZoneUnref",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-glib-2.0.30/docs/GI-GLib-Structs-TimeZone.html#v:timeZoneUnref"
        })
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveTimeZoneMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveTimeZoneMethod "adjustTime" o = TimeZoneAdjustTimeMethodInfo
    ResolveTimeZoneMethod "findInterval" o = TimeZoneFindIntervalMethodInfo
    ResolveTimeZoneMethod "isDst" o = TimeZoneIsDstMethodInfo
    ResolveTimeZoneMethod "ref" o = TimeZoneRefMethodInfo
    ResolveTimeZoneMethod "unref" o = TimeZoneUnrefMethodInfo
    ResolveTimeZoneMethod "getAbbreviation" o = TimeZoneGetAbbreviationMethodInfo
    ResolveTimeZoneMethod "getIdentifier" o = TimeZoneGetIdentifierMethodInfo
    ResolveTimeZoneMethod "getOffset" o = TimeZoneGetOffsetMethodInfo
    ResolveTimeZoneMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveTimeZoneMethod t TimeZone, O.OverloadedMethod info TimeZone p) => OL.IsLabel t (TimeZone -> 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 ~ ResolveTimeZoneMethod t TimeZone, O.OverloadedMethod info TimeZone p, R.HasField t TimeZone p) => R.HasField t TimeZone p where
    getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveTimeZoneMethod t TimeZone, O.OverloadedMethodInfo info TimeZone) => OL.IsLabel t (O.MethodProxy info TimeZone) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif
#endif