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