Annotation of parser3/src/main/pa_pool.C, revision 1.54
1.13 paf 1: /** @file
1.14 paf 2: Parser: pool class.
3:
1.50 paf 4: Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
1.51 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.54 ! paf 6: */
1.14 paf 7:
1.54 ! paf 8: static const char* IDENT_POOL_C="$Id: zzz $";
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:
16: Pool::Pool(void *astorage) :
1.43 paf 17: fstorage(astorage), fcontext(0),
1.46 paf 18: ftotal_allocated(0), ftotal_times(0),
19: source_charset(0), client_charset(0)
1.26 parser 20: {
1.22 parser 21: }
1.1 paf 22:
1.21 parser 23: void Pool::fail_alloc(size_t size) const {
1.45 paf 24: SAPI::die("out of pool memory: failed to allocate %u bytes; "
25: "already allocated on pool: %u bytes in %u times",
1.41 paf 26: size,
27: ftotal_allocated, ftotal_times);
1.7 paf 28: }
1.21 parser 29:
30: void Pool::fail_register_cleanup() const {
1.41 paf 31: SAPI::die("failed to register cleanup");
1.22 parser 32: }
33:
1.46 paf 34: void Pool::set_source_charset(Charset& acharset) {
35: source_charset=&acharset;
36: }
37: Charset& Pool::get_source_charset() {
38: if(!source_charset)
1.52 paf 39: throw Exception(0,
1.46 paf 40: 0,
41: "no source charset defined yet");
42: return *source_charset;
1.22 parser 43: }
44:
1.46 paf 45: void Pool::set_client_charset(Charset& acharset) {
46: client_charset=&acharset;
47: }
48: Charset& Pool::get_client_charset() {
49: if(!client_charset)
1.52 paf 50: throw Exception(0,
1.46 paf 51: 0,
52: "no client charset defined yet");
53: return *client_charset;
1.22 parser 54: }
55:
1.46 paf 56: #ifdef XML
1.49 paf 57:
58: const char *Pool::transcode_cstr(xmlChar *s) {
59: return get_source_charset().transcode_cstr(s);
60: }
61:
62: String& Pool::transcode(xmlChar *s) {
63: return get_source_charset().transcode(s);
64: }
1.46 paf 65:
1.47 paf 66: const char *Pool::transcode_cstr(GdomeDOMString *s) {
1.46 paf 67: return get_source_charset().transcode_cstr(s);
68: }
1.22 parser 69:
1.47 paf 70: String& Pool::transcode(GdomeDOMString *s) {
1.46 paf 71: return get_source_charset().transcode(s);
1.53 paf 72: }
73:
74: xmlChar *Pool::transcode_buf2xchar(const char *buf, size_t buf_size) {
75: return get_source_charset().transcode_buf2xchar(buf, buf_size);
1.32 parser 76: }
77:
1.48 paf 78: GdomeDOMString_auto_ptr Pool::transcode(const String& s) {
1.46 paf 79: return get_source_charset().transcode(s);
1.32 parser 80: }
81:
1.26 parser 82:
83: #endif
E-mail: