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

module HROOT.Class.TEfficiency.Implementation where


import HROOT.TypeCast

import HROOT.Class.TEfficiency.RawType
import HROOT.Class.TEfficiency.FFI
import HROOT.Class.TEfficiency.Interface
import HROOT.Class.TEfficiency.Cast
import HROOT.Class.TClass.RawType
import HROOT.Class.TClass.Cast
import HROOT.Class.TClass.Interface
import HROOT.Class.TNamed.RawType
import HROOT.Class.TNamed.Cast
import HROOT.Class.TNamed.Interface
import HROOT.Class.TAttLine.RawType
import HROOT.Class.TAttLine.Cast
import HROOT.Class.TAttLine.Interface
import HROOT.Class.TAttFill.RawType
import HROOT.Class.TAttFill.Cast
import HROOT.Class.TAttFill.Interface
import HROOT.Class.TAttMarker.RawType
import HROOT.Class.TAttMarker.Cast
import HROOT.Class.TAttMarker.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 ITEfficiency TEfficiency where
instance ITNamed TEfficiency where
  setName = xform1 c_tefficiency_setname
  setNameTitle = xform2 c_tefficiency_setnametitle
  setTitle = xform1 c_tefficiency_settitle
instance ITAttLine TEfficiency where
  getLineColor = xform0 c_tefficiency_getlinecolor
  getLineStyle = xform0 c_tefficiency_getlinestyle
  getLineWidth = xform0 c_tefficiency_getlinewidth
  resetAttLine = xform1 c_tefficiency_resetattline
  setLineAttributes = xform0 c_tefficiency_setlineattributes
  setLineColor = xform1 c_tefficiency_setlinecolor
  setLineStyle = xform1 c_tefficiency_setlinestyle
  setLineWidth = xform1 c_tefficiency_setlinewidth
instance ITAttFill TEfficiency where
  setFillColor = xform1 c_tefficiency_setfillcolor
  setFillStyle = xform1 c_tefficiency_setfillstyle
instance ITAttMarker TEfficiency where
  getMarkerColor = xform0 c_tefficiency_getmarkercolor
  getMarkerStyle = xform0 c_tefficiency_getmarkerstyle
  getMarkerSize = xform0 c_tefficiency_getmarkersize
  resetAttMarker = xform1 c_tefficiency_resetattmarker
  setMarkerAttributes = xform0 c_tefficiency_setmarkerattributes
  setMarkerColor = xform1 c_tefficiency_setmarkercolor
  setMarkerStyle = xform1 c_tefficiency_setmarkerstyle
  setMarkerSize = xform1 c_tefficiency_setmarkersize
instance ITObject TEfficiency where
  draw = xform1 c_tefficiency_draw
  findObject = xform1 c_tefficiency_findobject
  getName = xform0 c_tefficiency_getname
  isA = xform0 c_tefficiency_isa
  isFolder = xform0 c_tefficiency_isfolder
  isEqual = xform1 c_tefficiency_isequal
  isSortable = xform0 c_tefficiency_issortable
  paint = xform1 c_tefficiency_paint
  printObj = xform1 c_tefficiency_printobj
  recursiveRemove = xform1 c_tefficiency_recursiveremove
  saveAs = xform2 c_tefficiency_saveas
  useCurrentStyle = xform0 c_tefficiency_usecurrentstyle
  write = xform3 c_tefficiency_write
instance IDeletable TEfficiency where
  delete = xform0 c_tefficiency_delete

instance ITEfficiency (Exist TEfficiency) where

instance ITNamed (Exist TEfficiency) where
  setName (ETEfficiency x) = setName x
  setNameTitle (ETEfficiency x) = setNameTitle x
  setTitle (ETEfficiency x) = setTitle x
instance ITAttLine (Exist TEfficiency) where
  getLineColor (ETEfficiency x) = getLineColor x
  getLineStyle (ETEfficiency x) = getLineStyle x
  getLineWidth (ETEfficiency x) = getLineWidth x
  resetAttLine (ETEfficiency x) = resetAttLine x
  setLineAttributes (ETEfficiency x) = setLineAttributes x
  setLineColor (ETEfficiency x) = setLineColor x
  setLineStyle (ETEfficiency x) = setLineStyle x
  setLineWidth (ETEfficiency x) = setLineWidth x
instance ITAttFill (Exist TEfficiency) where
  setFillColor (ETEfficiency x) = setFillColor x
  setFillStyle (ETEfficiency x) = setFillStyle x
instance ITAttMarker (Exist TEfficiency) where
  getMarkerColor (ETEfficiency x) = getMarkerColor x
  getMarkerStyle (ETEfficiency x) = getMarkerStyle x
  getMarkerSize (ETEfficiency x) = getMarkerSize x
  resetAttMarker (ETEfficiency x) = resetAttMarker x
  setMarkerAttributes (ETEfficiency x) = setMarkerAttributes x
  setMarkerColor (ETEfficiency x) = setMarkerColor x
  setMarkerStyle (ETEfficiency x) = setMarkerStyle x
  setMarkerSize (ETEfficiency x) = setMarkerSize x
instance ITObject (Exist TEfficiency) where
  draw (ETEfficiency x) = draw x
  findObject (ETEfficiency x) = findObject x
  getName (ETEfficiency x) = getName x
  isA (ETEfficiency x) = isA x
  isFolder (ETEfficiency x) = isFolder x
  isEqual (ETEfficiency x) = isEqual x
  isSortable (ETEfficiency x) = isSortable x
  paint (ETEfficiency x) = paint x
  printObj (ETEfficiency x) = printObj x
  recursiveRemove (ETEfficiency x) = recursiveRemove x
  saveAs (ETEfficiency x) = saveAs x
  useCurrentStyle (ETEfficiency x) = useCurrentStyle x
  write (ETEfficiency x) = write x
instance IDeletable (Exist TEfficiency) where
  delete (ETEfficiency x) = delete x





instance FPtr (Exist TEfficiency) where
  type Raw (Exist TEfficiency) = RawTEfficiency
  get_fptr (ETEfficiency obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETEfficiency (cast_fptr_to_obj (fptr :: ForeignPtr RawTEfficiency) :: TEfficiency)