{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Core.TDatime.Implementation where
import Data.Monoid
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import System.IO.Unsafe
import FFICXX.Runtime.Cast
import FFICXX.Runtime.CodeGen.Cxx
import FFICXX.Runtime.TH
import HROOT.Core.TDatime.RawType
import HROOT.Core.TDatime.FFI
import HROOT.Core.TDatime.Interface
import HROOT.Core.TDatime.Cast
import HROOT.Core.TDatime.RawType
import HROOT.Core.TDatime.Cast
import HROOT.Core.TDatime.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => ITDatime (TDatime) where
        convert :: TDatime -> CBool -> IO CUInt
convert = (Ptr RawTDatime -> CBool -> IO CUInt)
-> TDatime -> CBool -> IO CUInt
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTDatime -> CBool -> IO CUInt
c_tdatime_convert
        setTDatime :: TDatime -> CUInt -> IO ()
setTDatime = (Ptr RawTDatime -> CUInt -> IO ()) -> TDatime -> CUInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTDatime -> CUInt -> IO ()
c_tdatime_settdatime

instance () => IDeletable (TDatime) where
        delete :: TDatime -> IO ()
delete = (Ptr RawTDatime -> IO ()) -> TDatime -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO ()
c_tdatime_delete

newTDatime ::
             () => CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO TDatime
newTDatime :: CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO TDatime
newTDatime = (CInt
 -> CInt -> CInt -> CInt -> CInt -> CInt -> IO (Ptr RawTDatime))
-> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO TDatime
forall a ca x1 cx1 x2 cx2 x3 cx3 x4 cx4 x5 cx5 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable x4 cx4, Castable x5 cx5, Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> IO cy)
-> a -> x1 -> x2 -> x3 -> x4 -> x5 -> IO y
xform5 CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO (Ptr RawTDatime)
c_tdatime_newtdatime

tDatime_GetDay :: () => TDatime -> IO CInt
tDatime_GetDay :: TDatime -> IO CInt
tDatime_GetDay = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_getday

tDatime_GetHour :: () => TDatime -> IO CInt
tDatime_GetHour :: TDatime -> IO CInt
tDatime_GetHour = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_gethour

tDatime_GetMinute :: () => TDatime -> IO CInt
tDatime_GetMinute :: TDatime -> IO CInt
tDatime_GetMinute = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_getminute

tDatime_GetSecond :: () => TDatime -> IO CInt
tDatime_GetSecond :: TDatime -> IO CInt
tDatime_GetSecond = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_getsecond

tDatime_GetYear :: () => TDatime -> IO CInt
tDatime_GetYear :: TDatime -> IO CInt
tDatime_GetYear = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_getyear

tDatime_GetMonth :: () => TDatime -> IO CInt
tDatime_GetMonth :: TDatime -> IO CInt
tDatime_GetMonth = (Ptr RawTDatime -> IO CInt) -> TDatime -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTDatime -> IO CInt
c_tdatime_tdatime_getmonth