{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.IO.TMemFile.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.IO.TMemFile.RawType
import HROOT.IO.TMemFile.FFI
import HROOT.IO.TMemFile.Interface
import HROOT.IO.TMemFile.Cast
import HROOT.IO.TMemFile.RawType
import HROOT.IO.TMemFile.Cast
import HROOT.IO.TMemFile.Interface
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.IO.TFile.RawType
import HROOT.IO.TFile.Cast
import HROOT.IO.TFile.Interface
import HROOT.IO.TDirectoryFile.RawType
import HROOT.IO.TDirectoryFile.Cast
import HROOT.IO.TDirectoryFile.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 () => ITMemFile (TMemFile) where

instance () => ITFile (TMemFile) where

instance () => ITDirectoryFile (TMemFile) where

instance () => ITDirectory (TMemFile) where
        append :: forall c0.
(ITObject c0, FPtr c0) =>
TMemFile -> c0 -> CBool -> IO ()
append = (Ptr RawTMemFile -> Ptr RawTObject -> CBool -> IO ())
-> TMemFile -> c0 -> CBool -> 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 RawTMemFile -> Ptr RawTObject -> CBool -> IO ()
c_tmemfile_append
        addD :: forall c0.
(ITObject c0, FPtr c0) =>
TMemFile -> c0 -> CBool -> IO ()
addD = (Ptr RawTMemFile -> Ptr RawTObject -> CBool -> IO ())
-> TMemFile -> c0 -> CBool -> 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 RawTMemFile -> Ptr RawTObject -> CBool -> IO ()
c_tmemfile_addd
        appendKey :: forall c0. (ITKey c0, FPtr c0) => TMemFile -> c0 -> IO CInt
appendKey = (Ptr RawTMemFile -> Ptr RawTKey -> IO CInt)
-> TMemFile -> c0 -> IO CInt
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 RawTMemFile -> Ptr RawTKey -> IO CInt
c_tmemfile_appendkey
        close :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
close = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_close
        get :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO TObject
get = (Ptr RawTMemFile -> CString -> IO (Ptr RawTObject))
-> TMemFile -> 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 RawTMemFile -> CString -> IO (Ptr RawTObject)
c_tmemfile_get
        cd_TDirectory :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO CBool
cd_TDirectory = (Ptr RawTMemFile -> CString -> IO CBool)
-> TMemFile -> c0 -> IO CBool
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 RawTMemFile -> CString -> IO CBool
c_tmemfile_cd_tdirectory

instance () => ITNamed (TMemFile) where
        setName :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
setName = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_setname
        setNameTitle :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TMemFile -> c0 -> c1 -> IO ()
setNameTitle = (Ptr RawTMemFile -> CString -> CString -> IO ())
-> TMemFile -> 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 RawTMemFile -> CString -> CString -> IO ()
c_tmemfile_setnametitle
        setTitle :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
setTitle = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_settitle

instance () => ITObject (TMemFile) where
        clear :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
clear = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_clear
        draw :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
draw = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_draw
        findObject :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO TObject
findObject = (Ptr RawTMemFile -> CString -> IO (Ptr RawTObject))
-> TMemFile -> 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 RawTMemFile -> CString -> IO (Ptr RawTObject)
c_tmemfile_findobject
        getName :: TMemFile -> IO CString
getName = (Ptr RawTMemFile -> IO CString) -> TMemFile -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTMemFile -> IO CString
c_tmemfile_getname
        isA :: TMemFile -> IO TClass
isA = (Ptr RawTMemFile -> IO (Ptr RawTClass)) -> TMemFile -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTMemFile -> IO (Ptr RawTClass)
c_tmemfile_isa
        paint :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
paint = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_paint
        printObj :: forall c0. Castable c0 CString => TMemFile -> c0 -> IO ()
printObj = (Ptr RawTMemFile -> CString -> IO ()) -> TMemFile -> 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 RawTMemFile -> CString -> IO ()
c_tmemfile_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TMemFile -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTMemFile -> CString -> CString -> IO ())
-> TMemFile -> 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 RawTMemFile -> CString -> CString -> IO ()
c_tmemfile_saveas
        write :: forall c0.
Castable c0 CString =>
TMemFile -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTMemFile -> CString -> CInt -> CInt -> IO CInt)
-> TMemFile -> 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 RawTMemFile -> CString -> CInt -> CInt -> IO CInt
c_tmemfile_write
        write_ :: TMemFile -> IO CInt
write_ = (Ptr RawTMemFile -> IO CInt) -> TMemFile -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTMemFile -> IO CInt
c_tmemfile_write_

instance () => IDeletable (TMemFile) where
        delete :: TMemFile -> IO ()
delete = (Ptr RawTMemFile -> IO ()) -> TMemFile -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTMemFile -> IO ()
c_tmemfile_delete

newTMemFile ::
              (Castable c2 CString, Castable c1 CString, Castable c0 CString) =>
              c0 -> c1 -> c2 -> CInt -> IO TMemFile
newTMemFile :: forall c2 c1 c0.
(Castable c2 CString, Castable c1 CString, Castable c0 CString) =>
c0 -> c1 -> c2 -> CInt -> IO TMemFile
newTMemFile = (CString -> CString -> CString -> CInt -> IO (Ptr RawTMemFile))
-> c0 -> c1 -> c2 -> CInt -> IO TMemFile
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 CString -> CString -> CString -> CInt -> IO (Ptr RawTMemFile)
c_tmemfile_newtmemfile