module Data.Array.Accelerate.LLVM.Native.Link.Object
where
import Data.List
import Data.Word
import Foreign.ForeignPtr
import Foreign.Ptr
import Data.ByteString.Short.Char8 ( ShortByteString, unpack )
import Data.Array.Accelerate.Lifetime
data FunctionTable = FunctionTable { FunctionTable -> [Function]
functionTable :: [Function] }
type Function = (ShortByteString, FunPtr ())
instance Show FunctionTable where
showsPrec :: Int -> FunctionTable -> ShowS
showsPrec Int
_ FunctionTable
f
= String -> ShowS
showString String
"<<"
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString (String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate String
"," [ ShortByteString -> String
unpack ShortByteString
n | (ShortByteString
n,FunPtr ()
_) <- FunctionTable -> [Function]
functionTable FunctionTable
f ])
ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ShowS
showString String
">>"
type ObjectCode = Lifetime [Segment]
data Segment = Segment {-# UNPACK #-} !Int
{-# UNPACK #-} !(ForeignPtr Word8)