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

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: 
        !             7:        $Id: pa_charset.h,v 1.5 2001/12/14 12:53:47 paf Exp $
        !             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: 
        !            49:        Charset(Pool& apool, const String& request_name, const String *file_spec);
        !            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: 
        !            67:        void loadDefinition(const String& file_spec);
        !            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: 
        !            84:        String fname;
        !            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: