Diff for /parser3/src/main/pa_pool.C between versions 1.3 and 1.59.2.4

version 1.3, 2001/01/26 18:34:02 version 1.59.2.4, 2003/02/04 12:08:57
Line 1 Line 1
 /*  /** @file
   $Id$          Parser: pool class.
   
           Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
           Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
 */  */
   
 #include <stdlib.h>  static const char* IDENT_POOL_C="$Date$";
   
 #include "pa_pool.h"  #include "pa_pool.h"
   #include "pa_exception.h"
   #include "pa_common.h"
   #include "pa_sapi.h"
   
   static void *fail_alloc(char *what, size_t size) {
           SAPI::die("out of memory: failed to %s %u bytes",
                   what, size);
   
           // never reached
           return 0;
   }
   
   void *pa_malloc(size_t size) {
           if(void *result=malloc(size))
                   return result;
   
           return fail_alloc("allocate", size);
   }
   
   void *pa_calloc(size_t size) {
           if(void *result=calloc(1, size))
                   return result;
   
           return fail_alloc("allocate", size);
   }
   void pa_free(void *ptr) {
           free(ptr);
   }
   
   void *pa_realloc(void *ptr, size_t size) {
           if(void *result=realloc(ptr, size))
                   return result;
   
           return fail_alloc("reallocate to", size);
   }
   
   /*
   Pool::Pool(void *astorage) : 
           fstorage(astorage), fcontext(0)
           ftotal_allocated(0), ftotal_times(0),
           source_charset(0), client_charset(0)
           {
   }
   
 Pool::Pool() {  void *Pool::copy(const void *buf, const size_t size) {
           if(!buf || !size)
                   return 0;
   
           void *result=malloc(size);
           memcpy(result, buf, size);
           return result;
 }  }
   
 Pool::~Pool() {  char *Pool::copy(const char* cstr) {
           if(cstr) {
                   size_t size=strlen(cstr)+1;
                   return (char *)copy(cstr, size);
           }
           return 0;
   }
   
   
   void Pool::fail_alloc(size_t size) const {
           SAPI::die("out of pool memory: failed to allocate %u bytes; "
                   "already allocated on pool: %u bytes in %u times", 
                   size, 
                   ftotal_allocated, ftotal_times);
 }  }
   
 void *Pool::malloc(size_t size) {  void Pool::fail_register_cleanup() const {
         return ::malloc(size);          SAPI::die("failed to register cleanup");
 }  }
   
 void *Pool::calloc(size_t size) {  void Pool::set_source_charset(Charset& acharset) { 
         return ::calloc(size, 1);          source_charset=&acharset; 
 }  }
   Charset& Pool::get_source_charset() { 
           if(!source_charset)
                   throw Exception(0,
                           0,
                           "no source charset defined yet");
           return *source_charset; 
   }
   
   void Pool::set_client_charset(Charset& acharset) { 
           client_charset=&acharset; 
   }
   Charset& Pool::get_client_charset() { 
           if(!client_charset)
                   throw Exception(0,
                           0,
                           "no client charset defined yet");
           return *client_charset; 
   }
   
   #ifdef XML
   
   const char* Pool::transcode_cstr(xmlChar *s) {
           return get_source_charset().transcode_cstr(s); 
   }
   
   String& Pool::transcode(xmlChar *s
   #ifndef NO_STRING_ORIGIN
                   , const String *origin
   #endif
                                                   ) {
           return get_source_charset().transcode(s, origin); 
   }
   
   const char* Pool::transcode_cstr(GdomeDOMString *s) { 
           return get_source_charset().transcode_cstr(s); 
   }
   
   String& Pool::transcode(GdomeDOMString *s
   #ifndef NO_STRING_ORIGIN
                   , const String *origin
   #endif
           ) { 
           return get_source_charset().transcode(s, origin);
   }
   
   xmlChar *Pool::transcode_buf2xchar(const char* buf, size_t buf_size) {
           return get_source_charset().transcode_buf2xchar(buf, buf_size); 
   }
   
   GdomeDOMString_auto_ptr Pool::transcode(const String& s) {
           return get_source_charset().transcode(s); 
   }
   
   #endif
   */

Removed from v.1.3  
changed lines
  Added in v.1.59.2.4


E-mail: