Annotation of parser3/src/main/pa_charsets.C, revision 1.10

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.9       paf         6: */
1.1       paf         7: 
1.10    ! paf         8: static const char* IDENT_CHARSETS_C="$Date: pa_charsets.C,v 1.9 2002/08/01 11:26:49 paf Exp $";
1.1       paf         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
1.8       paf        34:                throw Exception("parser.runtime",
1.2       paf        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:        
1.7       paf        50:        put(global_name, NEW Charset(pool(), global_name, &request_file_spec));
1.4       paf        51: }

E-mail: