9 #ifndef _fei_Pool_alloc_hpp_ 
   10 #define _fei_Pool_alloc_hpp_ 
   12 #include "fei_macros.hpp" 
   13 #include "fei_Pool.hpp" 
   21 fei_Pool* get_fei_mem_pool(
size_t n);
 
   41   typedef std::size_t size_type;
 
   43   typedef const T* const_pointer;
 
   45   typedef const T& const_reference;
 
   46   typedef std::ptrdiff_t difference_type;
 
   55   pointer address (reference value)
 const 
   59   const_pointer address (const_reference value)
 const 
   71   pointer allocate(size_type n, 
const void* hint = NULL);
 
   72   void deallocate(pointer p, size_type n);
 
   74   template<
typename U> 
void construct(U* p, 
const U& val)
 
   77   void construct(pointer p, 
const T& val)
 
   80   template<
typename U> 
void destroy(U* p)
 
   83   void destroy(pointer p)
 
   86   size_type max_size() 
const throw() { 
return std::numeric_limits<size_type>::max(); }
 
   98   if (n==0) 
return NULL;
 
  102     mem = get_fei_mem_pool(n_*
sizeof(T));
 
  106     std::cerr << 
"fei_Pool_alloc ERROR, allocate given bad length ("<<n
 
  107        <<
"), must be " <<n_<<
". throwing exception."<<std::endl;
 
  108     throw std::bad_alloc();
 
  110   return static_cast<T*
>(mem->alloc());
 
  116   if (p == NULL || n == 0) 
return;
 
  123   std::cerr << 
"fei_Pool_alloc ERROR, deallocate given bad length ("<<n
 
  124     <<
"), must be " <<n_<<
". aborting."<<std::endl;