1 #ifndef __JLANG__JALLOCATOR__ 
    2 #define __JLANG__JALLOCATOR__ 
   16 namespace JPP { 
using namespace JLANG; }
 
   40       buffer = 
new unsigned char[block_size * number_of_blocks];
 
   43         throw JException(
"JAllocatorBuffer::init(): not enough space in memory.");
 
   50       for (
JBlock_t i = 0; i != number_of_blocks; p += block_size) {
 
   65     inline void* 
allocate(
const std::size_t block_size)
 
   83     void free(
void* p, 
const std::size_t block_size)
 
   85       unsigned char* q = static_cast<unsigned char*>(p);
 
   88         throw JException(
"JAllocatorBuffer::free(): inconsistent pointer.");
 
   96         throw JException(
"JAllocatorBuffer::free(): failed truncation check.");
 
  137                const JBlock_t      number_of_blocks = std::numeric_limits<JBlock_t>::max()) :
 
  166       for (const_iterator i = this->begin(); i != this->end(); ++i) {
 
  167         n += i->numberOfFreeBlocks;
 
  183         for (iterator i = this->begin(); ; ++i) {
 
  185           if (i == this->end()) {
 
  194           if (i->numberOfFreeBlocks != 0) {
 
  202           throw JException(
"JAllocator::allocate() no buffer available.");
 
  206           throw JException(
"JAllocator::allocate() no buffer available.");
 
  221       if (this->size() != 1) {
 
  223         if (p <  pDealloc->buffer ||
 
  228             if (p >= i->buffer && 
 
  251           if (i != this->rend()) {
 
  253             delete [] this->rbegin()->buffer;