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

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

Initial imports for icXML v0.9

File size: 4.1 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 <icxercesc/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        ,       XMLCh* const            toFill
73        , const XMLSize_t               maxChars
74        ,       XMLSize_t&              bytesEaten
75    );
76
77    virtual XMLSize_t transcodeFrom
78    (
79          const XMLByte* const          srcData
80        , const XMLSize_t               srcCount
81        ,       XMLBuffer &             toFill
82    );
83
84    virtual XMLSize_t transcodeTo
85    (
86        const   XMLCh* const    srcData
87        , const XMLSize_t       srcCount
88        ,       XMLByte* const  toFill
89        , const XMLSize_t       maxBytes
90        ,       XMLSize_t&      charsEaten
91        , const UnRepOpts       options
92    );
93
94    virtual bool canTranscodeTo
95    (
96        const   unsigned int    toCheck
97    );
98
99    virtual bool isSwapped() const;
100
101private :
102    // -----------------------------------------------------------------------
103    //  Unimplemented constructors and operators
104    // -----------------------------------------------------------------------
105    XMLUCS4Transcoder(const XMLUCS4Transcoder&);
106    XMLUCS4Transcoder& operator=(const XMLUCS4Transcoder&);
107
108
109    // -----------------------------------------------------------------------
110    //  Private data members
111    //
112    //  fSwapped
113    //      This tells us if our input is going to be in the same endianness
114    //      as the local host or swapped.
115    // -----------------------------------------------------------------------
116    bool    fSwapped;
117};
118
119XERCES_CPP_NAMESPACE_END
120
121#endif
Note: See TracBrowser for help on using the repository browser.