|
|
| version 1.33.2.19.2.25, 2003/04/11 07:44:44 | version 1.36, 2003/08/18 08:27:40 |
|---|---|
| Line 647 GdomeDOMString_auto_ptr Charset::transco | Line 647 GdomeDOMString_auto_ptr Charset::transco |
| return transcode_buf2dom(cstr, s.length()); | return transcode_buf2dom(cstr, s.length()); |
| } | } |
| #endif | #endif |
| StringBody Charset::transcode(const StringBody src, | |
| const Charset& source_transcoder, | |
| const Charset& dest_transcoder) { | |
| const char *src_ptr=src.cstr(); | |
| size_t src_size=strlen(src_ptr); | |
| String::C dest=Charset::transcode(String::C(src_ptr, src_size), | |
| source_transcoder, | |
| dest_transcoder); | |
| return StringBody(dest.str, dest.length); | |
| } | |
| String& Charset::transcode(const String& src, | |
| const Charset& source_transcoder, | |
| const Charset& dest_transcoder) { | |
| if(!src.length()) | |
| return *new String("", 0, false); | |
| return *new String(transcode((StringBody)src, source_transcoder, dest_transcoder), String::L_CLEAN); | |
| } | |
| void Charset::transcode(ArrayString& src, | |
| const Charset& source_transcoder, | |
| const Charset& dest_transcoder) { | |
| for(size_t i=0; i<src.count(); i++) | |
| src.put(i, &transcode(*src[i], source_transcoder, dest_transcoder)); | |
| } | |
| #ifndef DOXYGEN | |
| struct Transcode_pair_info { | |
| const Charset* source_transcoder; | |
| const Charset* dest_transcoder; | |
| }; | |
| #endif | |
| static void transcode_pair(const StringBody akey, | |
| StringBody& avalue, | |
| Transcode_pair_info* info) { | |
| avalue=Charset::transcode(avalue, | |
| *info->source_transcoder, | |
| *info->dest_transcoder); | |
| } | |
| void Charset::transcode(HashStringString& src, | |
| const Charset& source_transcoder, | |
| const Charset& dest_transcoder) { | |
| Transcode_pair_info info={&source_transcoder, &dest_transcoder}; | |
| src.for_each_ref(transcode_pair, &info); | |
| } |