Copyright | (c) 2009 2010 Bryan O'Sullivan |
---|---|
License | BSD-style |
Maintainer | [email protected] |
Portability | GHC |
Safe Haskell | None |
Language | Haskell2010 |
Support for using Text
data with native code via the Haskell foreign function interface.
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 Encoding
module.
A type representing a number of UTF-16 code units.
O(n) Create a new Text
from a Ptr
Word16
by copying the contents of the array.
useAsPtr :: Text -> (Ptr Word16 -> I16 -> IO a) -> IO a Source
O(n) Perform an action on a temporary, mutable copy of a Text
. The copy is freed as soon as the action returns.
asForeignPtr :: Text -> IO (ForeignPtr Word16, I16) Source
O(n) Make a mutable copy of a Text
.
peekCStringLen :: CStringLen -> IO Text Source
O(n) Decode a C string with explicit length, which is assumed to have been encoded as UTF-8. If decoding fails, a UnicodeException
is thrown.
Since: text-1.0.0.0
withCStringLen :: Text -> (CStringLen -> IO a) -> IO a Source
Marshal a Text
into a C string encoded as UTF-8 in temporary storage, with explicit length information. The encoded string may contain NUL bytes, and is not followed by a trailing NUL byte.
The temporary storage is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this function returns.
Since: text-1.0.0.0
lengthWord16 :: Text -> Int Source
O(1) Return the length of a Text
in units of Word16
. This is useful for sizing a target array appropriately before using unsafeCopyToPtr
.
unsafeCopyToPtr :: Text -> Ptr Word16 -> IO () Source
O(n) Copy a Text
to an array. The array is assumed to be big enough to hold the contents of the entire Text
.
Foreign functions that use UTF-16 internally may return indices in units of Word16
instead of characters. These functions may safely be used with such indices, as they will adjust offsets if necessary to preserve the validity of a Unicode string.
dropWord16 :: I16 -> Text -> Text Source
O(1) Return the suffix of the Text
, with n
Word16
units dropped from its beginning.
If n
would cause the Text
to begin inside a surrogate pair, the beginning of the suffix will be advanced by one additional Word16
unit to maintain its validity.
takeWord16 :: I16 -> Text -> Text Source
O(1) Return the prefix of the Text
of n
Word16
units in length.
If n
would cause the Text
to end inside a surrogate pair, the end of the prefix will be advanced by one additional Word16
unit to maintain its validity.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.8.3/docs/html/libraries/text-1.2.4.0/Data-Text-Foreign.html