base-4.22.0.0: src/Foreign/Marshal/Pool.hs
{-# 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