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: