|Copyright||(c) The FFI task force 2003|
|License||BSD-style (see the file libraries/base/LICENSE)|
Marshalling support. Unsafe API.
unsafeLocalState :: IO a -> a Source
Sometimes an external entity is a pure function, except that it passes arguments and/or results via pointers. The function
unsafeLocalState permits the packaging of such entities as pure functions.
The only IO operations allowed in the IO action passed to
unsafeLocalState are (a) local allocation (
allocaBytes and derived operations such as
withCString), and (b) pointer operations (
Foreign.Ptr) on the pointers to local storage, and (c) foreign functions whose only observable effect is to read and/or write the locally allocated memory. Passing an IO operation that does not obey these rules results in undefined behaviour.
It is expected that this operation will be replaced in a future revision of Haskell.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).