Annotation of parser3/src/main/pa_pool.C, revision 1.46

1.13      paf         1: /** @file
1.14      paf         2:        Parser: pool class.
                      3: 
1.10      paf         4:        Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.39      paf         5:        Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
1.14      paf         6: 
1.46    ! paf         7:        $Id: pa_pool.C,v 1.45 2001/11/16 13:17:29 paf Exp $
1.2       paf         8: */
1.1       paf         9: 
                     10: #include "pa_pool.h"
1.7       paf        11: #include "pa_exception.h"
1.22      parser     12: #include "pa_common.h"
1.41      paf        13: #include "pa_sapi.h"
1.46    ! paf        14: #include "pa_charset.h"
1.22      parser     15: 
1.26      parser     16: #ifdef XML
1.22      parser     17: #include <util/PlatformUtils.hpp>
1.26      parser     18: #endif
1.22      parser     19: 
                     20: Pool::Pool(void *astorage) : 
1.43      paf        21:        fstorage(astorage), fcontext(0)1.46    ! paf        22:        ftotal_allocated(0), ftotal_times(0),
        !            23:        source_charset(0), client_charset(0)
1.26      parser     24:        {
1.22      parser     25: }
1.1       paf        26: 
1.21      parser     27: void Pool::fail_alloc(size_t size) const {
1.45      paf        28:        SAPI::die("out of pool memory: failed to allocate %u bytes; "
                     29:                "already allocated on pool: %u bytes in %u times", 
1.41      paf        30:                size, 
                     31:                ftotal_allocated, ftotal_times);
1.7       paf        32: }
1.21      parser     33: 
                     34: void Pool::fail_register_cleanup() const {
1.41      paf        35:        SAPI::die("failed to register cleanup");
1.22      parser     36: }
                     37: 
1.46    ! paf        38: void Pool::set_source_charset(Charset& acharset) { 
        !            39:        source_charset=&acharset; 
        !            40: }
        !            41: Charset& Pool::get_source_charset() { 
        !            42:        if(!source_charset)
        !            43:                throw Exception(0, 0,
        !            44:                        0,
        !            45:                        "no source charset defined yet");
        !            46:        return *source_charset; 
1.22      parser     47: }
                     48: 
1.46    ! paf        49: void Pool::set_client_charset(Charset& acharset) { 
        !            50:        client_charset=&acharset; 
        !            51: }
        !            52: Charset& Pool::get_client_charset() { 
        !            53:        if(!client_charset)
1.35      parser     54:                throw Exception(0, 0,
1.46    ! paf        55:                        0,
        !            56:                        "no client charset defined yet");
        !            57:        return *client_charset; 
1.22      parser     58: }
                     59: 
1.46    ! paf        60: #ifdef XML
        !            61: 
1.25      parser     62: const char *Pool::transcode_cstr(const XalanDOMString& s) { 
1.46    ! paf        63:        return get_source_charset().transcode_cstr(s); 
        !            64: }
1.22      parser     65: 
1.25      parser     66: String& Pool::transcode(const XalanDOMString& s) { 
1.46    ! paf        67:        return get_source_charset().transcode(s); 
1.32      parser     68: }
                     69: 
1.46    ! paf        70: std::auto_ptr<XalanDOMString> Pool::transcode(const String& s) {
        !            71:        return get_source_charset().transcode(s); 
1.32      parser     72: }
                     73: 
1.26      parser     74: 
                     75: #endif

E-mail: