{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Tree.TTree.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.Tree.TTree.RawType
import HROOT.Tree.TTree.FFI
import HROOT.Tree.TTree.Interface
import HROOT.Tree.TTree.Cast
import HROOT.Tree.TTree.RawType
import HROOT.Tree.TTree.Cast
import HROOT.Tree.TTree.Interface
import HROOT.Core.TClass.RawType
import HROOT.Core.TClass.Cast
import HROOT.Core.TClass.Interface
import HROOT.Tree.TBranch.RawType
import HROOT.Tree.TBranch.Cast
import HROOT.Tree.TBranch.Interface
import HROOT.Core.TNamed.RawType
import HROOT.Core.TNamed.Cast
import HROOT.Core.TNamed.Interface
import HROOT.Core.TAttLine.RawType
import HROOT.Core.TAttLine.Cast
import HROOT.Core.TAttLine.Interface
import HROOT.Core.TAttFill.RawType
import HROOT.Core.TAttFill.Cast
import HROOT.Core.TAttFill.Interface
import HROOT.Core.TAttMarker.RawType
import HROOT.Core.TAttMarker.Cast
import HROOT.Core.TAttMarker.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 () => ITTree (TTree) where
        branch :: forall c0.
Castable c0 CString =>
TTree -> c0 -> CInt -> CInt -> IO CInt
branch = (Ptr RawTTree -> CString -> CInt -> CInt -> IO CInt)
-> TTree -> 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 RawTTree -> CString -> CInt -> CInt -> IO CInt
c_ttree_branch
        branch1 :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TTree -> c0 -> Ptr () -> c1 -> CInt -> IO TBranch
branch1 = (Ptr RawTTree
 -> CString -> Ptr () -> CString -> CInt -> IO (Ptr RawTBranch))
-> TTree -> c0 -> Ptr () -> c1 -> CInt -> IO TBranch
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 Ptr RawTTree
-> CString -> Ptr () -> CString -> CInt -> IO (Ptr RawTBranch)
c_ttree_branch1
        fillTree :: TTree -> IO CInt
fillTree = (Ptr RawTTree -> IO CInt) -> TTree -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CInt
c_ttree_filltree

instance () => ITNamed (TTree) where
        setName :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
setName = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_setname
        setNameTitle :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TTree -> c0 -> c1 -> IO ()
setNameTitle = (Ptr RawTTree -> CString -> CString -> IO ())
-> TTree -> 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 RawTTree -> CString -> CString -> IO ()
c_ttree_setnametitle
        setTitle :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
setTitle = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_settitle

instance () => ITAttLine (TTree) where
        getLineColor :: TTree -> IO CShort
getLineColor = (Ptr RawTTree -> IO CShort) -> TTree -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CShort
c_ttree_getlinecolor
        getLineStyle :: TTree -> IO CShort
getLineStyle = (Ptr RawTTree -> IO CShort) -> TTree -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CShort
c_ttree_getlinestyle
        getLineWidth :: TTree -> IO CShort
getLineWidth = (Ptr RawTTree -> IO CShort) -> TTree -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CShort
c_ttree_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
resetAttLine = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_resetattline
        setLineAttributes :: TTree -> IO ()
setLineAttributes = (Ptr RawTTree -> IO ()) -> TTree -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO ()
c_ttree_setlineattributes
        setLineColor :: TTree -> CShort -> IO ()
setLineColor = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setlinecolor
        setLineStyle :: TTree -> CShort -> IO ()
setLineStyle = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setlinestyle
        setLineWidth :: TTree -> CShort -> IO ()
setLineWidth = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setlinewidth

instance () => ITAttFill (TTree) where
        setFillColor :: TTree -> CInt -> IO ()
setFillColor = (Ptr RawTTree -> CInt -> IO ()) -> TTree -> CInt -> 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 RawTTree -> CInt -> IO ()
c_ttree_setfillcolor
        setFillStyle :: TTree -> CInt -> IO ()
setFillStyle = (Ptr RawTTree -> CInt -> IO ()) -> TTree -> CInt -> 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 RawTTree -> CInt -> IO ()
c_ttree_setfillstyle

instance () => ITAttMarker (TTree) where
        getMarkerColor :: TTree -> IO CShort
getMarkerColor = (Ptr RawTTree -> IO CShort) -> TTree -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CShort
c_ttree_getmarkercolor
        getMarkerStyle :: TTree -> IO CShort
getMarkerStyle = (Ptr RawTTree -> IO CShort) -> TTree -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CShort
c_ttree_getmarkerstyle
        getMarkerSize :: TTree -> IO CFloat
getMarkerSize = (Ptr RawTTree -> IO CFloat) -> TTree -> IO CFloat
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CFloat
c_ttree_getmarkersize
        resetAttMarker :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
resetAttMarker = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_resetattmarker
        setMarkerAttributes :: TTree -> IO ()
setMarkerAttributes = (Ptr RawTTree -> IO ()) -> TTree -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO ()
c_ttree_setmarkerattributes
        setMarkerColor :: TTree -> CShort -> IO ()
setMarkerColor = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setmarkercolor
        setMarkerStyle :: TTree -> CShort -> IO ()
setMarkerStyle = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setmarkerstyle
        setMarkerSize :: TTree -> CShort -> IO ()
setMarkerSize = (Ptr RawTTree -> CShort -> IO ()) -> TTree -> CShort -> 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 RawTTree -> CShort -> IO ()
c_ttree_setmarkersize

instance () => ITObject (TTree) where
        clear :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
clear = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_clear
        draw :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
draw = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_draw
        findObject :: forall c0. Castable c0 CString => TTree -> c0 -> IO TObject
findObject = (Ptr RawTTree -> CString -> IO (Ptr RawTObject))
-> TTree -> 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 RawTTree -> CString -> IO (Ptr RawTObject)
c_ttree_findobject
        getName :: TTree -> IO CString
getName = (Ptr RawTTree -> IO CString) -> TTree -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CString
c_ttree_getname
        isA :: TTree -> IO TClass
isA = (Ptr RawTTree -> IO (Ptr RawTClass)) -> TTree -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO (Ptr RawTClass)
c_ttree_isa
        paint :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
paint = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_paint
        printObj :: forall c0. Castable c0 CString => TTree -> c0 -> IO ()
printObj = (Ptr RawTTree -> CString -> IO ()) -> TTree -> 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 RawTTree -> CString -> IO ()
c_ttree_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TTree -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTTree -> CString -> CString -> IO ())
-> TTree -> 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 RawTTree -> CString -> CString -> IO ()
c_ttree_saveas
        write :: forall c0.
Castable c0 CString =>
TTree -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTTree -> CString -> CInt -> CInt -> IO CInt)
-> TTree -> 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 RawTTree -> CString -> CInt -> CInt -> IO CInt
c_ttree_write
        write_ :: TTree -> IO CInt
write_ = (Ptr RawTTree -> IO CInt) -> TTree -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO CInt
c_ttree_write_

instance () => IDeletable (TTree) where
        delete :: TTree -> IO ()
delete = (Ptr RawTTree -> IO ()) -> TTree -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTTree -> IO ()
c_ttree_delete

newTTree ::
           (Castable c1 CString, Castable c0 CString) =>
           c0 -> c1 -> CInt -> IO TTree
newTTree :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
c0 -> c1 -> CInt -> IO TTree
newTTree = (CString -> CString -> CInt -> IO (Ptr RawTTree))
-> c0 -> c1 -> CInt -> IO TTree
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 -> CString -> CInt -> IO (Ptr RawTTree)
c_ttree_newttree