{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, OverlappingInstances, IncoherentInstances #-} module HROOT.Class.TArrayC.Implementation where import HROOT.TypeCast import HROOT.Class.TArrayC.RawType import HROOT.Class.TArrayC.FFI import HROOT.Class.TArrayC.Interface import HROOT.Class.TArrayC.Cast import HROOT.Class.TArray.RawType import HROOT.Class.TArray.Cast import HROOT.Class.TArray.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 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)