Portability | GHC |
---|---|
Stability | experimental |
Maintainer | bos@serpentine.com, rtharper@aftereternity.co.uk, duncan@haskell.org |
Data.Text.Foreign
Description
Support for using Text
data with native code via the Haskell
foreign function interface.
Interoperability with native code
The Text
type is implemented using arrays that are not guaranteed
to have a fixed address in the Haskell heap. All communication with
native code must thus occur by copying data back and forth.
The Text
type's internal representation is UTF-16, using the
platform's native endianness. This makes copied data suitable for
use with native libraries that use a similar representation, such
as ICU. To interoperate with native libraries that use different
internal representations, such as UTF-8 or UTF-32, consider using
the functions in the Data.Text.Encoding
module.
Safe conversion functions
useAsPtr :: Text -> (Ptr Word16 -> Int -> IO a) -> IO aSource
O(n) Perform an action on a temporary, mutable copy of a
Text
. The copy is freed as soon as the action returns.
Unsafe conversion code
lengthWord16 :: Text -> IntSource
O(1) Return the length of a Text
in units of Word16
. This
is useful for sizing a target array appropriately before using
unsafeCopyToPtr
.