{-# LANGUAGE Safe #-} -- | -- Module : Foreign.C.String -- Copyright : (c) The FFI task force 2001 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : ffi@haskell.org -- Stability : provisional -- Portability : portable -- -- 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. -- module Foreign.C.String ( -- * C strings CString, CStringLen, -- ** Using a locale-dependent encoding -- | These functions are different from their @CAString@ counterparts -- in that they will use an encoding determined by the current locale, -- rather than always assuming ASCII. -- conversion of C strings into Haskell strings -- peekCString, peekCStringLen, -- conversion of Haskell strings into C strings -- newCString, newCStringLen, -- conversion of Haskell strings into C strings using temporary storage -- withCString, withCStringLen, charIsRepresentable, -- ** 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. castCharToCChar, castCCharToChar, castCharToCUChar, castCUCharToChar, castCharToCSChar, castCSCharToChar, peekCAString, peekCAStringLen, newCAString, newCAStringLen, withCAString, withCAStringLen, -- * 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). CWString, CWStringLen, peekCWString, peekCWStringLen, newCWString, newCWStringLen, withCWString, withCWStringLen, ) where import GHC.Internal.Foreign.C.String