source: icXML/icXML-devel/src/icxercesc/util/XMLUCS4Transcoder.hpp @ 2720

Last change on this file since 2720 was 2720, checked in by cameron, 6 years ago

Initial check-in of icXML 0.8 source files

File size: 3.8 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: XMLUCS4Transcoder.hpp 932887 2010-04-11 13:04:59Z borisk $
20 */
21
22#if !defined(XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP)
23#define XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP
24
25#include <xercesc/util/XercesDefs.hpp>
26#include <xercesc/util/TransService.hpp>
27
28XERCES_CPP_NAMESPACE_BEGIN
29
30//
31//  This class provides an implementation of the XMLTranscoder interface
32//  for a simple UCS4 transcoder. The parser does some encodings
33//  intrinsically without depending upon external transcoding services.
34//  To make everything more orthogonal, we implement these internal
35//  transcoders using the same transcoder abstraction as the pluggable
36//  transcoding services do.
37//
38class XMLUTIL_EXPORT XMLUCS4Transcoder : public XMLTranscoder
39{
40public :
41    // -----------------------------------------------------------------------
42    //  Public constructors and destructor
43    // -----------------------------------------------------------------------
44    XMLUCS4Transcoder
45    (
46        const   XMLCh* const    encodingName
47        , const XMLSize_t       blockSize
48        , const bool            swapped
49        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
50    );
51
52    virtual ~XMLUCS4Transcoder();
53
54
55    // -----------------------------------------------------------------------
56    //  Implementation of the XMLTranscoder interface
57    // -----------------------------------------------------------------------
58    virtual XMLSize_t transcodeFrom
59    (
60        const   XMLByte* const          srcData
61        , const XMLSize_t               srcCount
62        ,       XMLCh* const            toFill
63        , const XMLSize_t               maxChars
64        ,       XMLSize_t&              bytesEaten
65        ,       unsigned char* const    charSizes
66    );
67
68    virtual XMLSize_t transcodeFrom
69    (
70          const XMLByte* const          srcData
71        , const XMLSize_t               srcCount
72        ,       XMLBuffer &             toFill
73    );
74
75    virtual XMLSize_t transcodeTo
76    (
77        const   XMLCh* const    srcData
78        , const XMLSize_t       srcCount
79        ,       XMLByte* const  toFill
80        , const XMLSize_t       maxBytes
81        ,       XMLSize_t&      charsEaten
82        , const UnRepOpts       options
83    );
84
85    virtual bool canTranscodeTo
86    (
87        const   unsigned int    toCheck
88    );
89
90
91private :
92    // -----------------------------------------------------------------------
93    //  Unimplemented constructors and operators
94    // -----------------------------------------------------------------------
95    XMLUCS4Transcoder(const XMLUCS4Transcoder&);
96    XMLUCS4Transcoder& operator=(const XMLUCS4Transcoder&);
97
98
99    // -----------------------------------------------------------------------
100    //  Private data members
101    //
102    //  fSwapped
103    //      This tells us if our input is going to be in the same endianness
104    //      as the local host or swapped.
105    // -----------------------------------------------------------------------
106    bool    fSwapped;
107};
108
109XERCES_CPP_NAMESPACE_END
110
111#endif
Note: See TracBrowser for help on using the repository browser.