libffi-0.2.1: A binding to libffi

Safe Haskell | Safe-Inferred
Language | Haskell2010

Foreign.LibFFI.Types

Contents

- Arguments
  - Integral types
  - Floating point types
  - Various other C types
  - Strings
- Return types
  - Integral types
  - Floating point types
  - Various other C types
  - Strings

Description

Arguments and return types

Synopsis

- argCInt :: CInt -> Arg
- argCUInt :: CUInt -> Arg
- argCLong :: CLong -> Arg
- argCULong :: CULong -> Arg
- argInt8 :: Int8 -> Arg
- argInt16 :: Int16 -> Arg
- argInt32 :: Int32 -> Arg
- argInt64 :: Int64 -> Arg
- argWord8 :: Word8 -> Arg
- argWord16 :: Word16 -> Arg
- argWord32 :: Word32 -> Arg
- argWord64 :: Word64 -> Arg
- argCFloat :: CFloat -> Arg
- argCDouble :: CDouble -> Arg
- argCSize :: CSize -> Arg
- argCTime :: CTime -> Arg
- argCChar :: CChar -> Arg
- argCUChar :: CUChar -> Arg
- argCWchar :: CWchar -> Arg
- argPtr :: Ptr a -> Arg
- argFunPtr :: FunPtr a -> Arg
- argString :: String -> Arg
- argByteString :: ByteString -> Arg
- argConstByteString :: ByteString -> Arg
- retVoid :: RetType ()
- retCInt :: RetType CInt
- retCUInt :: RetType CUInt
- retCLong :: RetType CLong
- retCULong :: RetType CULong
- retInt8 :: RetType Int8
- retInt16 :: RetType Int16
- retInt32 :: RetType Int32
- retInt64 :: RetType Int64
- retWord8 :: RetType Word8
- retWord16 :: RetType Word16
- retWord32 :: RetType Word32
- retWord64 :: RetType Word64
- retCFloat :: RetType CFloat
- retCDouble :: RetType CDouble
- retCSize :: RetType CSize
- retCTime :: RetType CTime
- retCChar :: RetType CChar
- retCUChar :: RetType CUChar
- retCWchar :: RetType CWchar
- retPtr :: RetType a -> RetType (Ptr a)
- retFunPtr :: RetType a -> RetType (FunPtr a)
- retCString :: RetType CString
- retString :: RetType String
- retByteString :: RetType ByteString
- retMallocByteString :: RetType ByteString

# Arguments

## Integral types

argCInt :: CInt -> Arg Source #

argCUInt :: CUInt -> Arg Source #

argCLong :: CLong -> Arg Source #

argCULong :: CULong -> Arg Source #

argInt8 :: Int8 -> Arg Source #

Note that on e.g. x86_64, Int /= CInt

argInt16 :: Int16 -> Arg Source #

argInt32 :: Int32 -> Arg Source #

argInt64 :: Int64 -> Arg Source #

argWord8 :: Word8 -> Arg Source #

argWord16 :: Word16 -> Arg Source #

argWord32 :: Word32 -> Arg Source #

argWord64 :: Word64 -> Arg Source #

## Floating point types

argCFloat :: CFloat -> Arg Source #

argCDouble :: CDouble -> Arg Source #

## Various other C types

argCSize :: CSize -> Arg Source #

argCTime :: CTime -> Arg Source #

argCChar :: CChar -> Arg Source #

argCUChar :: CUChar -> Arg Source #

argCWchar :: CWchar -> Arg Source #

argPtr :: Ptr a -> Arg Source #

argFunPtr :: FunPtr a -> Arg Source #

## Strings

argString :: String -> Arg Source #

The string argument is passed to C as a char * pointer, which is freed afterwards. The argument should not contain zero-bytes.

argByteString :: ByteString -> Arg Source #

Like argString, but for ByteString's.

argConstByteString :: ByteString -> Arg Source #

Like argByteString, but changing the string from C breaks referential transparency.

# Return types

## Integral types

retVoid :: RetType () Source #

retCInt :: RetType CInt Source #

retCUInt :: RetType CUInt Source #

retCLong :: RetType CLong Source #

retCULong :: RetType CULong Source #

retInt8 :: RetType Int8 Source #

retInt16 :: RetType Int16 Source #

retInt32 :: RetType Int32 Source #

retInt64 :: RetType Int64 Source #

retWord8 :: RetType Word8 Source #

retWord16 :: RetType Word16 Source #

retWord32 :: RetType Word32 Source #

retWord64 :: RetType Word64 Source #

## Floating point types

retCFloat :: RetType CFloat Source #

retCDouble :: RetType CDouble Source #

## Various other C types

retCSize :: RetType CSize Source #

retCTime :: RetType CTime Source #

retCChar :: RetType CChar Source #

retCUChar :: RetType CUChar Source #

retCWchar :: RetType CWchar Source #

retPtr :: RetType a -> RetType (Ptr a) Source #

retFunPtr :: RetType a -> RetType (FunPtr a) Source #

## Strings

retCString :: RetType CString Source #

retString :: RetType String Source #

Peek a String out of the returned char *. The char * is not freed.

retByteString :: RetType ByteString Source #

Like retString, but for ByteString's

retMallocByteString :: RetType ByteString Source #

Make a ByteString out of the returned char *. The char * will be free(3)ed when the ByteString is garbage collected.