{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Core.TApplication.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.TApplication.RawType
import HROOT.Core.TApplication.FFI
import HROOT.Core.TApplication.Interface
import HROOT.Core.TApplication.Cast
import HROOT.Core.TApplication.RawType
import HROOT.Core.TApplication.Cast
import HROOT.Core.TApplication.Interface
import HROOT.Core.TClass.RawType
import HROOT.Core.TClass.Cast
import HROOT.Core.TClass.Interface
import HROOT.Core.TObject.RawType
import HROOT.Core.TObject.Cast
import HROOT.Core.TObject.Interface
import HROOT.Core.TQObject.RawType
import HROOT.Core.TQObject.Cast
import HROOT.Core.TQObject.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => ITApplication (TApplication) where
        run :: TApplication -> CBool -> IO ()
run = (Ptr RawTApplication -> CBool -> IO ())
-> TApplication -> CBool -> 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 RawTApplication -> CBool -> IO ()
c_tapplication_run

instance () => ITObject (TApplication) where
        clear :: forall c0. Castable c0 CString => TApplication -> c0 -> IO ()
clear = (Ptr RawTApplication -> CString -> IO ())
-> TApplication -> c0 -> 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 RawTApplication -> CString -> IO ()
c_tapplication_clear
        draw :: forall c0. Castable c0 CString => TApplication -> c0 -> IO ()
draw = (Ptr RawTApplication -> CString -> IO ())
-> TApplication -> c0 -> 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 RawTApplication -> CString -> IO ()
c_tapplication_draw
        findObject :: forall c0. Castable c0 CString => TApplication -> c0 -> IO TObject
findObject = (Ptr RawTApplication -> CString -> IO (Ptr RawTObject))
-> TApplication -> c0 -> IO TObject
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 RawTApplication -> CString -> IO (Ptr RawTObject)
c_tapplication_findobject
        getName :: TApplication -> IO CString
getName = (Ptr RawTApplication -> IO CString) -> TApplication -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTApplication -> IO CString
c_tapplication_getname
        isA :: TApplication -> IO TClass
isA = (Ptr RawTApplication -> IO (Ptr RawTClass))
-> TApplication -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTApplication -> IO (Ptr RawTClass)
c_tapplication_isa
        paint :: forall c0. Castable c0 CString => TApplication -> c0 -> IO ()
paint = (Ptr RawTApplication -> CString -> IO ())
-> TApplication -> c0 -> 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 RawTApplication -> CString -> IO ()
c_tapplication_paint
        printObj :: forall c0. Castable c0 CString => TApplication -> c0 -> IO ()
printObj = (Ptr RawTApplication -> CString -> IO ())
-> TApplication -> c0 -> 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 RawTApplication -> CString -> IO ()
c_tapplication_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TApplication -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTApplication -> CString -> CString -> IO ())
-> TApplication -> c0 -> c1 -> IO ()
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 Ptr RawTApplication -> CString -> CString -> IO ()
c_tapplication_saveas
        write :: forall c0.
Castable c0 CString =>
TApplication -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTApplication -> CString -> CInt -> CInt -> IO CInt)
-> TApplication -> c0 -> CInt -> CInt -> IO CInt
forall a ca x1 cx1 x2 cx2 x3 cx3 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> IO cy) -> a -> x1 -> x2 -> x3 -> IO y
xform3 Ptr RawTApplication -> CString -> CInt -> CInt -> IO CInt
c_tapplication_write
        write_ :: TApplication -> IO CInt
write_ = (Ptr RawTApplication -> IO CInt) -> TApplication -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTApplication -> IO CInt
c_tapplication_write_

instance () => ITQObject (TApplication) where

instance () => IDeletable (TApplication) where
        delete :: TApplication -> IO ()
delete = (Ptr RawTApplication -> IO ()) -> TApplication -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTApplication -> IO ()
c_tapplication_delete

newTApplication ::
                  (Castable c0 CString) =>
                  c0 -> Ptr CInt -> Ptr CString -> IO TApplication
newTApplication :: forall c0.
Castable c0 CString =>
c0 -> Ptr CInt -> Ptr CString -> IO TApplication
newTApplication = (CString -> Ptr CInt -> Ptr CString -> IO (Ptr RawTApplication))
-> c0 -> Ptr CInt -> Ptr CString -> IO TApplication
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 CString -> Ptr CInt -> Ptr CString -> IO (Ptr RawTApplication)
c_tapplication_newtapplication