{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

`GDateTime` is an opaque structure whose members
cannot be accessed directly.
-}

module GI.GLib.Structs.DateTime
    ( 

-- * Exported types
    DateTime(..)                            ,
    noDateTime                              ,


 -- * Methods
-- ** dateTimeAdd
    dateTimeAdd                             ,


-- ** dateTimeAddDays
    dateTimeAddDays                         ,


-- ** dateTimeAddFull
    dateTimeAddFull                         ,


-- ** dateTimeAddHours
    dateTimeAddHours                        ,


-- ** dateTimeAddMinutes
    dateTimeAddMinutes                      ,


-- ** dateTimeAddMonths
    dateTimeAddMonths                       ,


-- ** dateTimeAddSeconds
    dateTimeAddSeconds                      ,


-- ** dateTimeAddWeeks
    dateTimeAddWeeks                        ,


-- ** dateTimeAddYears
    dateTimeAddYears                        ,


-- ** dateTimeDifference
    dateTimeDifference                      ,


-- ** dateTimeFormat
    dateTimeFormat                          ,


-- ** dateTimeGetDayOfMonth
    dateTimeGetDayOfMonth                   ,


-- ** dateTimeGetDayOfWeek
    dateTimeGetDayOfWeek                    ,


-- ** dateTimeGetDayOfYear
    dateTimeGetDayOfYear                    ,


-- ** dateTimeGetHour
    dateTimeGetHour                         ,


-- ** dateTimeGetMicrosecond
    dateTimeGetMicrosecond                  ,


-- ** dateTimeGetMinute
    dateTimeGetMinute                       ,


-- ** dateTimeGetMonth
    dateTimeGetMonth                        ,


-- ** dateTimeGetSecond
    dateTimeGetSecond                       ,


-- ** dateTimeGetSeconds
    dateTimeGetSeconds                      ,


-- ** dateTimeGetTimezoneAbbreviation
    dateTimeGetTimezoneAbbreviation         ,


-- ** dateTimeGetUtcOffset
    dateTimeGetUtcOffset                    ,


-- ** dateTimeGetWeekNumberingYear
    dateTimeGetWeekNumberingYear            ,


-- ** dateTimeGetWeekOfYear
    dateTimeGetWeekOfYear                   ,


-- ** dateTimeGetYear
    dateTimeGetYear                         ,


-- ** dateTimeGetYmd
    dateTimeGetYmd                          ,


-- ** dateTimeIsDaylightSavings
    dateTimeIsDaylightSavings               ,


-- ** dateTimeNew
    dateTimeNew                             ,


-- ** dateTimeNewFromTimevalLocal
    dateTimeNewFromTimevalLocal             ,


-- ** dateTimeNewFromTimevalUtc
    dateTimeNewFromTimevalUtc               ,


-- ** dateTimeNewFromUnixLocal
    dateTimeNewFromUnixLocal                ,


-- ** dateTimeNewFromUnixUtc
    dateTimeNewFromUnixUtc                  ,


-- ** dateTimeNewLocal
    dateTimeNewLocal                        ,


-- ** dateTimeNewNow
    dateTimeNewNow                          ,


-- ** dateTimeNewNowLocal
    dateTimeNewNowLocal                     ,


-- ** dateTimeNewNowUtc
    dateTimeNewNowUtc                       ,


-- ** dateTimeNewUtc
    dateTimeNewUtc                          ,


-- ** dateTimeRef
    dateTimeRef                             ,


-- ** dateTimeToLocal
    dateTimeToLocal                         ,


-- ** dateTimeToTimeval
    dateTimeToTimeval                       ,


-- ** dateTimeToTimezone
    dateTimeToTimezone                      ,


-- ** dateTimeToUnix
    dateTimeToUnix                          ,


-- ** dateTimeToUtc
    dateTimeToUtc                           ,


-- ** dateTimeUnref
    dateTimeUnref                           ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GLib.Types
import GI.GLib.Callbacks

newtype DateTime = DateTime (ForeignPtr DateTime)
foreign import ccall "g_date_time_get_type" c_g_date_time_get_type :: 
    IO GType

instance BoxedObject DateTime where
    boxedType _ = c_g_date_time_get_type

noDateTime :: Maybe DateTime
noDateTime = Nothing

-- method DateTime::new
-- method type : Constructor
-- Args : [Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new" g_date_time_new :: 
    Ptr TimeZone ->                         -- tz : TInterface "GLib" "TimeZone"
    Int32 ->                                -- year : TBasicType TInt32
    Int32 ->                                -- month : TBasicType TInt32
    Int32 ->                                -- day : TBasicType TInt32
    Int32 ->                                -- hour : TBasicType TInt32
    Int32 ->                                -- minute : TBasicType TInt32
    CDouble ->                              -- seconds : TBasicType TDouble
    IO (Ptr DateTime)


dateTimeNew ::
    (MonadIO m) =>
    TimeZone ->                             -- tz
    Int32 ->                                -- year
    Int32 ->                                -- month
    Int32 ->                                -- day
    Int32 ->                                -- hour
    Int32 ->                                -- minute
    Double ->                               -- seconds
    m DateTime
dateTimeNew tz year month day hour minute seconds = liftIO $ do
    let tz' = unsafeManagedPtrGetPtr tz
    let seconds' = realToFrac seconds
    result <- g_date_time_new tz' year month day hour minute seconds'
    checkUnexpectedReturnNULL "g_date_time_new" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr tz
    return result'

-- method DateTime::new_from_timeval_local
-- method type : Constructor
-- Args : [Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_from_timeval_local" g_date_time_new_from_timeval_local :: 
    Ptr TimeVal ->                          -- tv : TInterface "GLib" "TimeVal"
    IO (Ptr DateTime)


dateTimeNewFromTimevalLocal ::
    (MonadIO m) =>
    TimeVal ->                              -- tv
    m DateTime
dateTimeNewFromTimevalLocal tv = liftIO $ do
    let tv' = unsafeManagedPtrGetPtr tv
    result <- g_date_time_new_from_timeval_local tv'
    checkUnexpectedReturnNULL "g_date_time_new_from_timeval_local" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr tv
    return result'

-- method DateTime::new_from_timeval_utc
-- method type : Constructor
-- Args : [Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_from_timeval_utc" g_date_time_new_from_timeval_utc :: 
    Ptr TimeVal ->                          -- tv : TInterface "GLib" "TimeVal"
    IO (Ptr DateTime)


dateTimeNewFromTimevalUtc ::
    (MonadIO m) =>
    TimeVal ->                              -- tv
    m DateTime
dateTimeNewFromTimevalUtc tv = liftIO $ do
    let tv' = unsafeManagedPtrGetPtr tv
    result <- g_date_time_new_from_timeval_utc tv'
    checkUnexpectedReturnNULL "g_date_time_new_from_timeval_utc" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr tv
    return result'

-- method DateTime::new_from_unix_local
-- method type : Constructor
-- Args : [Arg {argName = "t", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "t", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_from_unix_local" g_date_time_new_from_unix_local :: 
    Int64 ->                                -- t : TBasicType TInt64
    IO (Ptr DateTime)


dateTimeNewFromUnixLocal ::
    (MonadIO m) =>
    Int64 ->                                -- t
    m DateTime
dateTimeNewFromUnixLocal t = liftIO $ do
    result <- g_date_time_new_from_unix_local t
    checkUnexpectedReturnNULL "g_date_time_new_from_unix_local" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::new_from_unix_utc
-- method type : Constructor
-- Args : [Arg {argName = "t", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "t", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_from_unix_utc" g_date_time_new_from_unix_utc :: 
    Int64 ->                                -- t : TBasicType TInt64
    IO (Ptr DateTime)


dateTimeNewFromUnixUtc ::
    (MonadIO m) =>
    Int64 ->                                -- t
    m DateTime
dateTimeNewFromUnixUtc t = liftIO $ do
    result <- g_date_time_new_from_unix_utc t
    checkUnexpectedReturnNULL "g_date_time_new_from_unix_utc" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::new_local
-- method type : Constructor
-- Args : [Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_local" g_date_time_new_local :: 
    Int32 ->                                -- year : TBasicType TInt32
    Int32 ->                                -- month : TBasicType TInt32
    Int32 ->                                -- day : TBasicType TInt32
    Int32 ->                                -- hour : TBasicType TInt32
    Int32 ->                                -- minute : TBasicType TInt32
    CDouble ->                              -- seconds : TBasicType TDouble
    IO (Ptr DateTime)


dateTimeNewLocal ::
    (MonadIO m) =>
    Int32 ->                                -- year
    Int32 ->                                -- month
    Int32 ->                                -- day
    Int32 ->                                -- hour
    Int32 ->                                -- minute
    Double ->                               -- seconds
    m DateTime
dateTimeNewLocal year month day hour minute seconds = liftIO $ do
    let seconds' = realToFrac seconds
    result <- g_date_time_new_local year month day hour minute seconds'
    checkUnexpectedReturnNULL "g_date_time_new_local" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::new_now
-- method type : Constructor
-- Args : [Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_now" g_date_time_new_now :: 
    Ptr TimeZone ->                         -- tz : TInterface "GLib" "TimeZone"
    IO (Ptr DateTime)


dateTimeNewNow ::
    (MonadIO m) =>
    TimeZone ->                             -- tz
    m DateTime
dateTimeNewNow tz = liftIO $ do
    let tz' = unsafeManagedPtrGetPtr tz
    result <- g_date_time_new_now tz'
    checkUnexpectedReturnNULL "g_date_time_new_now" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr tz
    return result'

-- method DateTime::new_now_local
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_now_local" g_date_time_new_now_local :: 
    IO (Ptr DateTime)


dateTimeNewNowLocal ::
    (MonadIO m) =>
    m DateTime
dateTimeNewNowLocal  = liftIO $ do
    result <- g_date_time_new_now_local
    checkUnexpectedReturnNULL "g_date_time_new_now_local" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::new_now_utc
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_now_utc" g_date_time_new_now_utc :: 
    IO (Ptr DateTime)


dateTimeNewNowUtc ::
    (MonadIO m) =>
    m DateTime
dateTimeNewNowUtc  = liftIO $ do
    result <- g_date_time_new_now_utc
    checkUnexpectedReturnNULL "g_date_time_new_now_utc" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::new_utc
-- method type : Constructor
-- Args : [Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hour", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minute", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_new_utc" g_date_time_new_utc :: 
    Int32 ->                                -- year : TBasicType TInt32
    Int32 ->                                -- month : TBasicType TInt32
    Int32 ->                                -- day : TBasicType TInt32
    Int32 ->                                -- hour : TBasicType TInt32
    Int32 ->                                -- minute : TBasicType TInt32
    CDouble ->                              -- seconds : TBasicType TDouble
    IO (Ptr DateTime)


dateTimeNewUtc ::
    (MonadIO m) =>
    Int32 ->                                -- year
    Int32 ->                                -- month
    Int32 ->                                -- day
    Int32 ->                                -- hour
    Int32 ->                                -- minute
    Double ->                               -- seconds
    m DateTime
dateTimeNewUtc year month day hour minute seconds = liftIO $ do
    let seconds' = realToFrac seconds
    result <- g_date_time_new_utc year month day hour minute seconds'
    checkUnexpectedReturnNULL "g_date_time_new_utc" result
    result' <- (wrapBoxed DateTime) result
    return result'

-- method DateTime::add
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timespan", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "timespan", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add" g_date_time_add :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int64 ->                                -- timespan : TBasicType TInt64
    IO (Ptr DateTime)


dateTimeAdd ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int64 ->                                -- timespan
    m DateTime
dateTimeAdd _obj timespan = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add _obj' timespan
    checkUnexpectedReturnNULL "g_date_time_add" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_days
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "days", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "days", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_days" g_date_time_add_days :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- days : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddDays ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- days
    m DateTime
dateTimeAddDays _obj days = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_days _obj' days
    checkUnexpectedReturnNULL "g_date_time_add_days" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_full
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "years", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "months", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "days", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hours", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minutes", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "years", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "months", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "days", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hours", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minutes", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_full" g_date_time_add_full :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- years : TBasicType TInt32
    Int32 ->                                -- months : TBasicType TInt32
    Int32 ->                                -- days : TBasicType TInt32
    Int32 ->                                -- hours : TBasicType TInt32
    Int32 ->                                -- minutes : TBasicType TInt32
    CDouble ->                              -- seconds : TBasicType TDouble
    IO (Ptr DateTime)


dateTimeAddFull ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- years
    Int32 ->                                -- months
    Int32 ->                                -- days
    Int32 ->                                -- hours
    Int32 ->                                -- minutes
    Double ->                               -- seconds
    m DateTime
dateTimeAddFull _obj years months days hours minutes seconds = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let seconds' = realToFrac seconds
    result <- g_date_time_add_full _obj' years months days hours minutes seconds'
    checkUnexpectedReturnNULL "g_date_time_add_full" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_hours
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hours", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hours", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_hours" g_date_time_add_hours :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- hours : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddHours ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- hours
    m DateTime
dateTimeAddHours _obj hours = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_hours _obj' hours
    checkUnexpectedReturnNULL "g_date_time_add_hours" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_minutes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minutes", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minutes", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_minutes" g_date_time_add_minutes :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- minutes : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddMinutes ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- minutes
    m DateTime
dateTimeAddMinutes _obj minutes = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_minutes _obj' minutes
    checkUnexpectedReturnNULL "g_date_time_add_minutes" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_months
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "months", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "months", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_months" g_date_time_add_months :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- months : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddMonths ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- months
    m DateTime
dateTimeAddMonths _obj months = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_months _obj' months
    checkUnexpectedReturnNULL "g_date_time_add_months" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_seconds
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "seconds", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_seconds" g_date_time_add_seconds :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    CDouble ->                              -- seconds : TBasicType TDouble
    IO (Ptr DateTime)


dateTimeAddSeconds ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Double ->                               -- seconds
    m DateTime
dateTimeAddSeconds _obj seconds = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let seconds' = realToFrac seconds
    result <- g_date_time_add_seconds _obj' seconds'
    checkUnexpectedReturnNULL "g_date_time_add_seconds" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_weeks
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weeks", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "weeks", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_weeks" g_date_time_add_weeks :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- weeks : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddWeeks ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- weeks
    m DateTime
dateTimeAddWeeks _obj weeks = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_weeks _obj' weeks
    checkUnexpectedReturnNULL "g_date_time_add_weeks" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::add_years
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "years", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "years", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_add_years" g_date_time_add_years :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Int32 ->                                -- years : TBasicType TInt32
    IO (Ptr DateTime)


dateTimeAddYears ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    Int32 ->                                -- years
    m DateTime
dateTimeAddYears _obj years = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_add_years _obj' years
    checkUnexpectedReturnNULL "g_date_time_add_years" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::difference
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "begin", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "begin", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_difference" g_date_time_difference :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Ptr DateTime ->                         -- begin : TInterface "GLib" "DateTime"
    IO Int64


dateTimeDifference ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    DateTime ->                             -- begin
    m Int64
dateTimeDifference _obj begin = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let begin' = unsafeManagedPtrGetPtr begin
    result <- g_date_time_difference _obj' begin'
    touchManagedPtr _obj
    touchManagedPtr begin
    return result

-- method DateTime::format
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "format", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_format" g_date_time_format :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    CString ->                              -- format : TBasicType TUTF8
    IO CString


dateTimeFormat ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    T.Text ->                               -- format
    m T.Text
dateTimeFormat _obj format = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    format' <- textToCString format
    result <- g_date_time_format _obj' format'
    checkUnexpectedReturnNULL "g_date_time_format" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    freeMem format'
    return result'

-- method DateTime::get_day_of_month
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_day_of_month" g_date_time_get_day_of_month :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetDayOfMonth ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetDayOfMonth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_day_of_month _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_day_of_week
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_day_of_week" g_date_time_get_day_of_week :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetDayOfWeek ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetDayOfWeek _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_day_of_week _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_day_of_year
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_day_of_year" g_date_time_get_day_of_year :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetDayOfYear ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetDayOfYear _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_day_of_year _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_hour
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_hour" g_date_time_get_hour :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetHour ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetHour _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_hour _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_microsecond
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_microsecond" g_date_time_get_microsecond :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetMicrosecond ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetMicrosecond _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_microsecond _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_minute
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_minute" g_date_time_get_minute :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetMinute ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetMinute _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_minute _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_month
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_month" g_date_time_get_month :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetMonth ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetMonth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_month _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_second
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_second" g_date_time_get_second :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetSecond ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetSecond _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_second _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_seconds
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_seconds" g_date_time_get_seconds :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO CDouble


dateTimeGetSeconds ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Double
dateTimeGetSeconds _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_seconds _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method DateTime::get_timezone_abbreviation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_timezone_abbreviation" g_date_time_get_timezone_abbreviation :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO CString


dateTimeGetTimezoneAbbreviation ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m T.Text
dateTimeGetTimezoneAbbreviation _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_timezone_abbreviation _obj'
    checkUnexpectedReturnNULL "g_date_time_get_timezone_abbreviation" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method DateTime::get_utc_offset
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_utc_offset" g_date_time_get_utc_offset :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int64


dateTimeGetUtcOffset ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int64
dateTimeGetUtcOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_utc_offset _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_week_numbering_year
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_week_numbering_year" g_date_time_get_week_numbering_year :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetWeekNumberingYear ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetWeekNumberingYear _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_week_numbering_year _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_week_of_year
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_week_of_year" g_date_time_get_week_of_year :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetWeekOfYear ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetWeekOfYear _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_week_of_year _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_year
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_year" g_date_time_get_year :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int32


dateTimeGetYear ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int32
dateTimeGetYear _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_get_year _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::get_ymd
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "year", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "month", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "day", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_get_ymd" g_date_time_get_ymd :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Ptr Int32 ->                            -- year : TBasicType TInt32
    Ptr Int32 ->                            -- month : TBasicType TInt32
    Ptr Int32 ->                            -- day : TBasicType TInt32
    IO ()


dateTimeGetYmd ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m (Int32,Int32,Int32)
dateTimeGetYmd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    year <- allocMem :: IO (Ptr Int32)
    month <- allocMem :: IO (Ptr Int32)
    day <- allocMem :: IO (Ptr Int32)
    g_date_time_get_ymd _obj' year month day
    year' <- peek year
    month' <- peek month
    day' <- peek day
    touchManagedPtr _obj
    freeMem year
    freeMem month
    freeMem day
    return (year', month', day')

-- method DateTime::is_daylight_savings
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_is_daylight_savings" g_date_time_is_daylight_savings :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO CInt


dateTimeIsDaylightSavings ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Bool
dateTimeIsDaylightSavings _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_is_daylight_savings _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method DateTime::ref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_ref" g_date_time_ref :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO (Ptr DateTime)


dateTimeRef ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m DateTime
dateTimeRef _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_ref _obj'
    checkUnexpectedReturnNULL "g_date_time_ref" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::to_local
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_to_local" g_date_time_to_local :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO (Ptr DateTime)


dateTimeToLocal ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m DateTime
dateTimeToLocal _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_to_local _obj'
    checkUnexpectedReturnNULL "g_date_time_to_local" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::to_timeval
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tv", argType = TInterface "GLib" "TimeVal", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_to_timeval" g_date_time_to_timeval :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Ptr TimeVal ->                          -- tv : TInterface "GLib" "TimeVal"
    IO CInt


dateTimeToTimeval ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    TimeVal ->                              -- tv
    m Bool
dateTimeToTimeval _obj tv = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let tv' = unsafeManagedPtrGetPtr tv
    result <- g_date_time_to_timeval _obj' tv'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr tv
    return result'

-- method DateTime::to_timezone
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "tz", argType = TInterface "GLib" "TimeZone", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_to_timezone" g_date_time_to_timezone :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    Ptr TimeZone ->                         -- tz : TInterface "GLib" "TimeZone"
    IO (Ptr DateTime)


dateTimeToTimezone ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    TimeZone ->                             -- tz
    m DateTime
dateTimeToTimezone _obj tz = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let tz' = unsafeManagedPtrGetPtr tz
    result <- g_date_time_to_timezone _obj' tz'
    checkUnexpectedReturnNULL "g_date_time_to_timezone" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    touchManagedPtr tz
    return result'

-- method DateTime::to_unix
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_to_unix" g_date_time_to_unix :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO Int64


dateTimeToUnix ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m Int64
dateTimeToUnix _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_to_unix _obj'
    touchManagedPtr _obj
    return result

-- method DateTime::to_utc
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GLib" "DateTime"
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_to_utc" g_date_time_to_utc :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO (Ptr DateTime)


dateTimeToUtc ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m DateTime
dateTimeToUtc _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- g_date_time_to_utc _obj'
    checkUnexpectedReturnNULL "g_date_time_to_utc" result
    result' <- (wrapBoxed DateTime) result
    touchManagedPtr _obj
    return result'

-- method DateTime::unref
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "GLib" "DateTime", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "g_date_time_unref" g_date_time_unref :: 
    Ptr DateTime ->                         -- _obj : TInterface "GLib" "DateTime"
    IO ()


dateTimeUnref ::
    (MonadIO m) =>
    DateTime ->                             -- _obj
    m ()
dateTimeUnref _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    g_date_time_unref _obj'
    touchManagedPtr _obj
    return ()