Annotation of parser3/src/include/pa_charset.h, revision 1.2

1.1       paf         1: /** @file
                      2:        Parser: Charset connection decl.
                      3: 
                      4:        Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
                      5:        Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
                      6: 
1.2     ! paf         7:        $Id: pa_charset.h,v 1.1 2001/12/15 21:51:43 paf Exp $
1.1       paf         8: */
                      9: 
                     10: #ifndef PA_CHARSET_H
                     11: #define PA_CHARSET_H
                     12: 
                     13: #include "pa_pool.h"
                     14: #include "pa_exception.h"
                     15: #include "pa_common.h"
                     16: 
                     17: // hiding into namespace so to avoid stupid conflict
                     18: namespace PCRE {
                     19: #include "pcre.h"
                     20: #      include "internal.h"
                     21: };
                     22: 
                     23: // defines
                     24: 
                     25: #ifdef XML
                     26: #      include <util/XercesDefs.hpp>
                     27: #      include <util/TransService.hpp>
                     28: #      define Charset_TransRec XMLTransService::TransRec
                     29: #else
                     30: #      ifndef XMLCh 
                     31: #              define XMLCh unsigned int
                     32: #      endif
                     33: #      ifndef XMLByte
                     34: #              define XMLByte unsigned char
                     35: #      endif
                     36: 
                     37:        struct Charset_TransRec {
                     38:                XMLCh intCh;
                     39:                XMLByte extCh;
                     40:        };
                     41: #endif
                     42: 
                     43: /**    charset holds name & transcode tables 
                     44:        registers Xerces transcoders
                     45: */
                     46: class Charset : public Pooled {
                     47: public:
                     48: 
1.2     ! paf        49:        Charset(Pool& apool, const String& aname, const String *request_file_spec);
1.1       paf        50:        Charset::~Charset();
                     51:        
                     52:        const String& name() const { return fname; }
                     53: 
                     54:        bool isUTF8() const { return fisUTF8; }
                     55: 
                     56:        static void transcode(Pool& pool,
                     57:                const Charset& source_transcoder, const void *source_body, size_t source_content_length,
                     58:                const Charset& dest_transcoder, const void *& dest_body, size_t& dest_content_length
                     59:        );
                     60: 
                     61: public:
                     62: 
                     63:        unsigned char pcre_tables[tables_length];
                     64: 
                     65: private:
                     66: 
1.2     ! paf        67:        void loadDefinition(const String& request_file_spec);
1.1       paf        68:        void sort_ToTable();
                     69: 
                     70:        XMLByte xlatOneTo(const XMLCh toXlat) const;
                     71:        void transcodeToUTF8(Pool& pool,
                     72:                                                                         const void *source_body, size_t source_content_length,
                     73:                                                                         const void *& dest_body, size_t& dest_content_length) const;
                     74:        void transcodeFromUTF8(Pool& pool,
                     75:                                                                           const void *source_body, size_t source_content_length,
                     76:                                                                           const void *& dest_body, size_t& dest_content_length) const;
                     77:        void transcodeToCharset(Pool& pool,
                     78:                                                                                   const Charset& dest_transcoder,
                     79:                                                                                   const void *source_body, size_t source_content_length,
                     80:                                                                                   const void *& dest_body, size_t& dest_content_length) const;
                     81: 
                     82: private:
                     83: 
1.2     ! paf        84:        const String& fname;
1.1       paf        85:        bool fisUTF8;
                     86:        XMLCh fromTable[0x100];
                     87:        Charset_TransRec *toTable;
                     88:        uint toTableSize;
                     89: 
                     90: #ifdef XML
                     91: 
                     92: private:
                     93:        void addEncoding(const char *name_cstr);
                     94:        void initTranscoder(const String *source, const char *name_cstr);
                     95: 
                     96: public:
                     97:        /// converts Xalan string to char *
                     98:        const char *transcode_cstr(const XalanDOMString& s);
                     99:        /// converts Xalan string to parser String
                    100:        String& transcode(const XalanDOMString& s);
                    101:        /// converts char * to Xalan string
                    102:        std::auto_ptr<XalanDOMString> transcode_buf(const char *buf, size_t buf_size);
                    103:        /// converts parser String to Xalan string
                    104:        std::auto_ptr<XalanDOMString> transcode(const String& s);
                    105: 
                    106: private:
                    107: 
                    108:        XMLTranscoder *transcoder;
                    109: 
                    110: #endif
                    111: 
                    112: };
                    113: 
                    114: #endif

E-mail: