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: