--- parser3/src/include/pa_charset.h 2003/04/10 09:15:23 1.20.2.18.2.9 +++ parser3/src/include/pa_charset.h 2003/07/24 11:31:21 1.23 @@ -8,11 +8,13 @@ #ifndef PA_CHARSET_H #define PA_CHARSET_H -static const char* IDENT_CHARSET_H="$Date: 2003/04/10 09:15:23 $"; +static const char* IDENT_CHARSET_H="$Date: 2003/07/24 11:31:21 $"; #include "pa_exception.h" #include "pa_common.h" +#include "pa_hash.h" +#include "pa_array.h" // hiding into namespace so to avoid stupid conflict namespace PCRE { @@ -48,6 +50,8 @@ struct Charset_TransRec { XMLByte extCh; }; +typedef Hash HashStringString; + /** charset holds name & transcode tables registers libxml transcoders */ @@ -65,6 +69,22 @@ public: const Charset& dest_transcoder ); + static String& transcode(const String& src, + const Charset& source_transcoder, + const Charset& dest_transcoder); + + static StringBody transcode(const StringBody src, + const Charset& source_transcoder, + const Charset& dest_transcoder); + + static void transcode(ArrayString& src, + const Charset& source_transcoder, + const Charset& dest_transcoder); + + static void transcode(HashStringString& src, + const Charset& source_transcoder, + const Charset& dest_transcoder); + #ifdef XML xmlCharEncodingHandler& transcoder(const StringBody NAME); #endif @@ -119,10 +139,6 @@ public: @returns xmlChar* WHICH CALLER SHOULD FREE */ xmlChar* transcode_buf2xchar(const char* buf, size_t buf_size); - /** converts sized char* to gchar* - @returns gchar* WHICH CALLER SHOULD FREE - */ - gchar* transcode_buf2gchar(const char* buf, size_t buf_size); /// converts char* to GdomeDOMString GdomeDOMString_auto_ptr transcode_buf2dom(const char* buf, size_t buf_size); /// converts parser String to GdomeDOMString @@ -132,12 +148,6 @@ public: private: - typedef void* (*transcode_buf_malloc_func)(size_t size); - void* transcode_buf2mchar(transcode_buf_malloc_func malloc_func, - const char* buf, size_t buf_size); - -private: - xmlCharEncodingHandler* ftranscoder; #endif @@ -150,7 +160,7 @@ class GdomeDOMString_auto_ptr { GdomeDOMString* fstring; public: /// frees astring afterwards!!! - explicit GdomeDOMString_auto_ptr(gchar* astring) : fstring(gdome_str_mkref_own(astring)) {} + explicit GdomeDOMString_auto_ptr(xmlChar* astring) : fstring(gdome_str_mkref_xml(astring)) {} explicit GdomeDOMString_auto_ptr(GdomeDOMString* astring=0) : fstring(astring) { // not ref-ing, owning } @@ -158,15 +168,20 @@ public: if(fstring) gdome_str_unref(fstring); } - GdomeDOMString* get() { +/* GdomeDOMString* get() { + return fstring; + }*/ + GdomeDOMString* use() { + if(fstring) + gdome_str_ref(fstring); return fstring; } GdomeDOMString* operator->() { return fstring; } - GdomeDOMString& operator*() { +/* GdomeDOMString& operator*() { return* fstring; - } + }*/ // copying GdomeDOMString_auto_ptr(const GdomeDOMString_auto_ptr& src) : fstring(src.fstring) {