{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, OverlappingInstances, IncoherentInstances #-} module HROOT.Core.TArray.Implementation where import FFICXX.Runtime.Cast import HROOT.Core.TArray.RawType import HROOT.Core.TArray.FFI import HROOT.Core.TArray.Interface import HROOT.Core.TArray.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 ITArray TArray where instance IDeletable TArray where delete = xform0 c_tarray_delete instance ITArray (Exist TArray) where instance IDeletable (Exist TArray) where delete (ETArray x) = delete x instance FPtr (Exist TArray) where type Raw (Exist TArray) = RawTArray get_fptr (ETArray obj) = castForeignPtr (get_fptr obj) cast_fptr_to_obj fptr = ETArray (cast_fptr_to_obj (fptr :: ForeignPtr RawTArray) :: TArray)