Annotation of parser3/src/main/pa_charsets.C, revision 1.6
1.1 paf 1: /** @file
2: Parser: sql driver manager implementation.
3:
1.5 paf 4: Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
1.6 ! paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 paf 6:
1.6 ! paf 7: $Id: pa_charsets.C,v 1.5 2002/02/08 07:27:47 paf Exp $
1.1 paf 8: */
9:
10: #include "pa_charsets.h"
11: #include "pa_charset.h"
12:
13: // globals
14:
15: Charsets *charsets;
16:
17: //
18:
19: Charsets::Charsets(Pool& apool) : Hash(apool) {
20: }
21:
1.3 paf 22: static void destroy_charset(const Hash::Key& , Hash::Val *& value, void *) {
1.1 paf 23: static_cast<Charset *>(value)->~Charset();
24: }
25:
26: Charsets::~Charsets() {
27: for_each(destroy_charset);
28: }
29:
1.2 paf 30: Charset& Charsets::get_charset(const String& name) {
31: if(Charset *result=(Charset *)get(name))
32: return *result;
33: else
34: throw Exception(0, 0,
35: &name,
36: "unknown charset");
37: }
1.3 paf 38:
39: void Charsets::load_charset(const String& request_name, const String& request_file_spec) {
40: //we know that charset?
41: if(get(request_name))
42: return; // don't load it then
43:
44: const char *name_cstr=request_name.cstr();
45: char *global_name_cstr=(char *)malloc(strlen(name_cstr)+1);
46: strcpy(global_name_cstr, name_cstr);
47: // make global_name string on global pool
48: String& global_name=*NEW String(pool(), global_name_cstr);
49:
50: put(request_name, NEW Charset(pool(), global_name, &request_file_spec));
1.4 paf 51: }
E-mail: