Annotation of parser3/src/main/pa_charsets.C, revision 1.3
1.1 paf 1: /** @file
2: Parser: sql driver manager implementation.
3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
5: Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
6:
1.3 ! paf 7: $Id: pa_charsets.C,v 1.2 2001/12/17 18:44:51 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));
! 51: }
E-mail: