content: {-# 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