| 
| Foreign.C.String | | Portability | portable |  | Stability | provisional |  | Maintainer | ffi@haskell.org |  
  |  
  | 
 | 
 | 
 | 
| Description | 
Utilities for primitive marshalling of C strings.
 The marshalling converts each Haskell character, representing a Unicode
 code point, to one or more bytes in a manner that, by default, is
 determined by the current locale.  As a consequence, no guarantees
 can be made about the relative length of a Haskell string and its
 corresponding C string, and therefore all the marshalling routines
 include memory allocation.  The translation between Unicode and the
 encoding of the current locale may be lossy.
  | 
 | 
| Synopsis | 
 | 
 | 
 | 
 | 
| C strings
 | 
 | 
 | 
| A C string is a reference to an array of C characters terminated by NUL.
 | 
 | 
 | 
| A string with explicit length information in bytes instead of a
 terminating NUL (allowing NUL characters in the middle of the string).
 | 
 | 
| Using a locale-dependent encoding
 | 
 | 
| Currently these functions are identical to their CAString counterparts;
 eventually they will use an encoding determined by the current locale.
 | 
 | 
 | 
| Marshal a NUL terminated C string into a Haskell string.
 | 
 | 
 | 
| Marshal a C string with explicit length into a Haskell string.
 | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C string.
 -  the Haskell string may not contain any NUL characters
 -  new storage is allocated for the C string and must be
   explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a C string (ie, character array) with
 explicit length information.
 -  new storage is allocated for the C string and must be
   explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C string using temporary
 storage.
 -  the Haskell string may not contain any NUL characters
 -  the memory 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.
 
  | 
 | 
 | 
Marshal a Haskell string into a C string (ie, character array)
 in temporary storage, with explicit length information.
 -  the memory 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.
 
  | 
 | 
 | 
Determines whether a character can be accurately encoded in a CString.
 Unrepresentable characters are converted to '?'.
 Currently only Latin-1 characters are representable.
  | 
 | 
| Using 8-bit characters
 | 
 | 
| These variants of the above functions are for use with C libraries
 that are ignorant of Unicode.  These functions should be used with
 care, as a loss of information can occur.
 | 
 | 
 | 
| Convert a Haskell character to a C character.
 This function is only safe on the first 256 characters.
 | 
 | 
 | 
| Convert a C byte, representing a Latin-1 character, to the corresponding
 Haskell character.
 | 
 | 
 | 
| Marshal a NUL terminated C string into a Haskell string.
 | 
 | 
 | 
| Marshal a C string with explicit length into a Haskell string.
 | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C string.
 -  the Haskell string may not contain any NUL characters
 -  new storage is allocated for the C string and must be
   explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a C string (ie, character array) with
 explicit length information.
 -  new storage is allocated for the C string and must be
   explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C string using temporary
 storage.
 -  the Haskell string may not contain any NUL characters
 -  the memory 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.
 
  | 
 | 
 | 
Marshal a Haskell string into a C string (ie, character array)
 in temporary storage, with explicit length information.
 -  the memory 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.
 
  | 
 | 
| C wide strings
 | 
 | 
These variants of the above functions are for use with C libraries
 that encode Unicode using the C wchar_t type in a system-dependent
 way.  The only encodings supported are
 -  UTF-32 (the C compiler defines __STDC_ISO_10646__), or
 -  UTF-16 (as used on Windows systems).
 
  | 
 | 
 | 
| A C wide string is a reference to an array of C wide characters
 terminated by NUL.
 | 
 | 
 | 
| A wide character string with explicit length information in CWchars
 instead of a terminating NUL (allowing NUL characters in the middle
 of the string).
 | 
 | 
 | 
| Marshal a NUL terminated C wide string into a Haskell string.
 | 
 | 
 | 
| Marshal a C wide string with explicit length into a Haskell string.
 | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C wide string.
 -  the Haskell string may not contain any NUL characters
 -  new storage is allocated for the C wide string and must
   be explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a C wide string (ie, wide character array)
 with explicit length information.
 -  new storage is allocated for the C wide string and must
   be explicitly freed using Foreign.Marshal.Alloc.free or
   Foreign.Marshal.Alloc.finalizerFree.
 
  | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C wide string using
 temporary storage.
 -  the Haskell string may not contain any NUL characters
 -  the memory 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.
 
  | 
 | 
 | 
Marshal a Haskell string into a NUL terminated C wide string using
 temporary storage.
 -  the Haskell string may not contain any NUL characters
 -  the memory 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.
 
  | 
 | 
| Produced by Haddock version 2.6.0 |