{-# LANGUAGE Safe #-} -- | -- -- Module : Foreign.Marshal.Pool -- Copyright : (c) Sven Panne 2002-2004 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : sven.panne@aedion.de -- Stability : provisional -- Portability : portable -- -- This module contains support for pooled memory management. Under this scheme, -- (re-)allocations belong to a given pool, and everything in a pool is -- deallocated when the pool itself is deallocated. This is useful when -- 'Foreign.Marshal.Alloc.alloca' with its implicit allocation and deallocation -- is not flexible enough, but explicit uses of 'Foreign.Marshal.Alloc.malloc' -- and 'free' are too awkward. -- module Foreign.Marshal.Pool (-- * Pool management Pool, newPool, freePool, withPool, -- * (Re-)Allocation within a pool pooledMalloc, pooledMallocBytes, pooledRealloc, pooledReallocBytes, pooledMallocArray, pooledMallocArray0, pooledReallocArray, pooledReallocArray0, -- * Combined allocation and marshalling pooledNew, pooledNewArray, pooledNewArray0 ) where import GHC.Internal.Foreign.Marshal.Pool