|
|
| version 1.11.2.10.2.1, 2003/03/18 15:14:18 | version 1.18, 2009/05/14 11:27:23 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: sql driver manager implementation. | Parser: sql driver manager implementation. |
| Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| */ | */ |
| static const char* IDENT_CHARSETS_C="$Date$"; | static const char * const IDENT_CHARSETS_C="$Date$"; |
| #include "pa_charsets.h" | #include "pa_charsets.h" |
| Line 15 static const char* IDENT_CHARSETS_C="$Da | Line 15 static const char* IDENT_CHARSETS_C="$Da |
| // globals | // globals |
| CharsetPtr UTF8_charset(new Charset(String* (new String(CHARSET_UTF8_NAME)), | Charset UTF8_charset(0, *new String(CHARSET_UTF8_NAME), 0/*no file=system*/); |
| 0/*no file=system*/)); | |
| Charsets charsets; | Charsets charsets; |
| // methods | // methods |
| Charsets::Charsets() { | Charsets::Charsets() { |
| put(UTF8_charset->name(), UTF8_charset); | put(UTF8_charset.NAME(), &UTF8_charset); |
| } | } |
| Charset& Charsets::get(const String& aname) { | Charset& Charsets::get(const String::Body ANAME) { |
| if(CharsetPtr result=Hash<key_type, value_type>::get(aname)) | if(Charset* result=HashString<value_type>::get(ANAME)) |
| return *result.get(); | return *result; |
| else | else |
| throw Exception("parser.runtime", | throw Exception(PARSER_RUNTIME, |
| aname, | new String(ANAME, String::L_TAINTED), |
| "unknown charset"); | "unknown charset"); |
| } | } |
| void Charsets::load_charset(const String& arequest_name, const String& arequest_file_spec) { | void Charsets::load_charset(Request_charsets& charsets, const String::Body ANAME, const String& afile_spec) { |
| //we know that charset? | //we know that charset? |
| if(Hash<key_type, value_type>::get(arequest_name)) | if(HashString<value_type>::get(ANAME)) |
| return; // don't load it then | return; // don't load it then |
| // make global_name string on cache_pool pool | put(ANAME, new Charset(&charsets, ANAME, &afile_spec)); |
| const String& global_name(new String(arequest_name->cstr(charsets_pool))); | |
| put(global_name, value_type(new Charset(global_name, arequest_file_spec))); | |
| } | } |