basement-0.0.15: Foundation scrap box of array & string
License BSD-style
Maintainer Vincent Hanquez <vincent@snarc.org>
Stability experimental
Portability portable
Safe Haskell None
Language Haskell2010

Basement.FinalPtr

Description

A smaller ForeignPtr reimplementation that work in any prim monad.

Here be dragon.

Synopsis

Documentation

finalPtrSameMemory :: FinalPtr a -> FinalPtr b -> Bool Source #

Check if 2 final ptr points on the same memory bits

it stand to reason that provided a final ptr that is still being referenced and thus have the memory still valid, if 2 final ptrs have the same address, they should be the same final ptr

castFinalPtr :: FinalPtr a -> FinalPtr b Source #

Cast a finalized pointer from type a to type b

toFinalPtr :: PrimMonad prim => Ptr a -> ( Ptr a -> IO ()) -> prim ( FinalPtr a) Source #

create a new FinalPtr from a Pointer

toFinalPtrForeign :: ForeignPtr a -> FinalPtr a Source #

Create a new FinalPtr from a ForeignPtr

withFinalPtr :: PrimMonad prim => FinalPtr p -> ( Ptr p -> prim a) -> prim a Source #

Looks at the raw pointer inside a FinalPtr, making sure the data pointed by the pointer is not finalized during the call to f

withUnsafeFinalPtr :: PrimMonad prim => FinalPtr p -> ( Ptr p -> prim a) -> a Source #

Unsafe version of withFinalPtr