{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, 
             FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, 
             OverlappingInstances, IncoherentInstances #-}

module HROOT.Class.TTreePlayer.Implementation where


import HROOT.TypeCast

import HROOT.Class.TTreePlayer.RawType
import HROOT.Class.TTreePlayer.FFI
import HROOT.Class.TTreePlayer.Interface
import HROOT.Class.TTreePlayer.Cast
import HROOT.Class.TClass.RawType
import HROOT.Class.TClass.Cast
import HROOT.Class.TClass.Interface
import HROOT.Class.TVirtualTreePlayer.RawType
import HROOT.Class.TVirtualTreePlayer.Cast
import HROOT.Class.TVirtualTreePlayer.Interface
import HROOT.Class.TObject.RawType
import HROOT.Class.TObject.Cast
import HROOT.Class.TObject.Interface
import HROOT.Class.Deletable.RawType
import HROOT.Class.Deletable.Cast
import HROOT.Class.Deletable.Interface

import Data.Word
-- import Foreign.C            
-- import Foreign.Ptr
import Foreign.ForeignPtr

import System.IO.Unsafe


instance ITTreePlayer TTreePlayer where
instance ITVirtualTreePlayer TTreePlayer where
instance ITObject TTreePlayer where
  draw = xform1 c_ttreeplayer_draw
  findObject = xform1 c_ttreeplayer_findobject
  getName = xform0 c_ttreeplayer_getname
  isA = xform0 c_ttreeplayer_isa
  isFolder = xform0 c_ttreeplayer_isfolder
  isEqual = xform1 c_ttreeplayer_isequal
  isSortable = xform0 c_ttreeplayer_issortable
  paint = xform1 c_ttreeplayer_paint
  printObj = xform1 c_ttreeplayer_printobj
  recursiveRemove = xform1 c_ttreeplayer_recursiveremove
  saveAs = xform2 c_ttreeplayer_saveas
  useCurrentStyle = xform0 c_ttreeplayer_usecurrentstyle
  write = xform3 c_ttreeplayer_write
instance IDeletable TTreePlayer where
  delete = xform0 c_ttreeplayer_delete

instance ITTreePlayer (Exist TTreePlayer) where

instance ITVirtualTreePlayer (Exist TTreePlayer) where

instance ITObject (Exist TTreePlayer) where
  draw (ETTreePlayer x) = draw x
  findObject (ETTreePlayer x) = findObject x
  getName (ETTreePlayer x) = getName x
  isA (ETTreePlayer x) = isA x
  isFolder (ETTreePlayer x) = isFolder x
  isEqual (ETTreePlayer x) = isEqual x
  isSortable (ETTreePlayer x) = isSortable x
  paint (ETTreePlayer x) = paint x
  printObj (ETTreePlayer x) = printObj x
  recursiveRemove (ETTreePlayer x) = recursiveRemove x
  saveAs (ETTreePlayer x) = saveAs x
  useCurrentStyle (ETTreePlayer x) = useCurrentStyle x
  write (ETTreePlayer x) = write x
instance IDeletable (Exist TTreePlayer) where
  delete (ETTreePlayer x) = delete x





instance FPtr (Exist TTreePlayer) where
  type Raw (Exist TTreePlayer) = RawTTreePlayer
  get_fptr (ETTreePlayer obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETTreePlayer (cast_fptr_to_obj (fptr :: ForeignPtr RawTTreePlayer) :: TTreePlayer)