{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, OverlappingInstances, IncoherentInstances #-} module HROOT.Core.TQObject.Implementation where import FFICXX.Runtime.Cast import HROOT.Core.TQObject.RawType import HROOT.Core.TQObject.FFI import HROOT.Core.TQObject.Interface import HROOT.Core.TQObject.Cast import HROOT.Core.Deletable.RawType import HROOT.Core.Deletable.Cast import HROOT.Core.Deletable.Interface import Data.Word import Foreign.C import Foreign.Ptr import Foreign.ForeignPtr import System.IO.Unsafe instance ITQObject TQObject where instance IDeletable TQObject where delete = xform0 c_tqobject_delete instance ITQObject (Exist TQObject) where instance IDeletable (Exist TQObject) where delete (ETQObject x) = delete x instance FPtr (Exist TQObject) where type Raw (Exist TQObject) = RawTQObject get_fptr (ETQObject obj) = castForeignPtr (get_fptr obj) cast_fptr_to_obj fptr = ETQObject (cast_fptr_to_obj (fptr :: ForeignPtr RawTQObject) :: TQObject)