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

instance () => ITKey (TKey) where

instance () => ITNamed (TKey) where
        setName :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
setName = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_setname
        setNameTitle :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TKey -> c0 -> c1 -> IO ()
setNameTitle = (Ptr RawTKey -> CString -> CString -> IO ())
-> TKey -> 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 RawTKey -> CString -> CString -> IO ()
c_tkey_setnametitle
        setTitle :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
setTitle = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_settitle

instance () => ITObject (TKey) where
        clear :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
clear = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_clear
        draw :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
draw = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_draw
        findObject :: forall c0. Castable c0 CString => TKey -> c0 -> IO TObject
findObject = (Ptr RawTKey -> CString -> IO (Ptr RawTObject))
-> TKey -> 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 RawTKey -> CString -> IO (Ptr RawTObject)
c_tkey_findobject
        getName :: TKey -> IO CString
getName = (Ptr RawTKey -> IO CString) -> TKey -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTKey -> IO CString
c_tkey_getname
        isA :: TKey -> IO TClass
isA = (Ptr RawTKey -> IO (Ptr RawTClass)) -> TKey -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTKey -> IO (Ptr RawTClass)
c_tkey_isa
        paint :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
paint = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_paint
        printObj :: forall c0. Castable c0 CString => TKey -> c0 -> IO ()
printObj = (Ptr RawTKey -> CString -> IO ()) -> TKey -> 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 RawTKey -> CString -> IO ()
c_tkey_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TKey -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTKey -> CString -> CString -> IO ())
-> TKey -> 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 RawTKey -> CString -> CString -> IO ()
c_tkey_saveas
        write :: forall c0.
Castable c0 CString =>
TKey -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTKey -> CString -> CInt -> CInt -> IO CInt)
-> TKey -> 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 RawTKey -> CString -> CInt -> CInt -> IO CInt
c_tkey_write
        write_ :: TKey -> IO CInt
write_ = (Ptr RawTKey -> IO CInt) -> TKey -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTKey -> IO CInt
c_tkey_write_

instance () => IDeletable (TKey) where
        delete :: TKey -> IO ()
delete = (Ptr RawTKey -> IO ()) -> TKey -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTKey -> IO ()
c_tkey_delete

newTKey ::
          (ITDirectory c3, FPtr c3, ITClass c2, FPtr c2, Castable c1 CString,
           Castable c0 CString) =>
          c0 -> c1 -> c2 -> CInt -> c3 -> IO TKey
newTKey :: forall c3 c2 c1 c0.
(ITDirectory c3, FPtr c3, ITClass c2, FPtr c2, Castable c1 CString,
 Castable c0 CString) =>
c0 -> c1 -> c2 -> CInt -> c3 -> IO TKey
newTKey = (CString
 -> CString
 -> Ptr RawTClass
 -> CInt
 -> Ptr RawTDirectory
 -> IO (Ptr RawTKey))
-> c0 -> c1 -> c2 -> CInt -> c3 -> IO TKey
forall a ca x1 cx1 x2 cx2 x3 cx3 x4 cx4 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable x4 cx4, Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> cx4 -> IO cy)
-> a -> x1 -> x2 -> x3 -> x4 -> IO y
xform4 CString
-> CString
-> Ptr RawTClass
-> CInt
-> Ptr RawTDirectory
-> IO (Ptr RawTKey)
c_tkey_newtkey