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

module HROOT.Class.TAtt3D.Implementation where


import HROOT.TypeCast

import HROOT.Class.TAtt3D.RawType
import HROOT.Class.TAtt3D.FFI
import HROOT.Class.TAtt3D.Interface
import HROOT.Class.TAtt3D.Cast

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 ITAtt3D TAtt3D where
instance IDeletable TAtt3D where
  delete = xform0 c_tatt3d_delete

instance ITAtt3D (Exist TAtt3D) where

instance IDeletable (Exist TAtt3D) where
  delete (ETAtt3D x) = delete x







instance FPtr (Exist TAtt3D) where
  type Raw (Exist TAtt3D) = RawTAtt3D
  get_fptr (ETAtt3D obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETAtt3D (cast_fptr_to_obj (fptr :: ForeignPtr RawTAtt3D) :: TAtt3D)