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: