source: NonGTP/Xerces/xerces-c_2_8_0/include/xercesc/util/regx/RegxUtil.hpp @ 2674

Revision 2674, 3.2 KB checked in by mattausch, 16 years ago (diff)
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: RegxUtil.hpp 568078 2007-08-21 11:43:25Z amassari $
20 */
21
22#if !defined(REGXUTIL_HPP)
23#define REGXUTIL_HPP
24
25// ---------------------------------------------------------------------------
26//  Includes
27// ---------------------------------------------------------------------------
28#include <xercesc/util/XMLUniDefs.hpp>
29
30
31XERCES_CPP_NAMESPACE_BEGIN
32
33class MemoryManager;
34
35class XMLUTIL_EXPORT RegxUtil {
36public:
37
38        // -----------------------------------------------------------------------
39    //  Constructors and destructors
40    // -----------------------------------------------------------------------
41        ~RegxUtil() {}
42
43        static XMLInt32 composeFromSurrogate(const XMLCh high, const XMLCh low);
44        static bool isEOLChar(const XMLCh);
45        static bool isWordChar(const XMLCh);
46        static bool isLowSurrogate(const XMLCh ch);
47        static bool isHighSurrogate(const XMLCh ch);
48        static void decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low);
49
50        static XMLCh* decomposeToSurrogates(XMLInt32 ch,
51                                        MemoryManager* const manager);
52        static XMLCh* stripExtendedComment(const XMLCh* const expression,
53                                       MemoryManager* const manager = 0);
54
55private:
56        // -----------------------------------------------------------------------
57    //  Unimplemented constructors and operators
58    // -----------------------------------------------------------------------
59    RegxUtil();
60};
61
62
63inline bool RegxUtil::isEOLChar(const XMLCh ch) {
64
65        return (ch == chLF || ch == chCR || ch == chLineSeparator
66           || ch == chParagraphSeparator);
67}
68
69inline XMLInt32 RegxUtil::composeFromSurrogate(const XMLCh high, const XMLCh low) {
70
71        return 0x10000 + ((high - 0xD800) << 10) + (low - 0xDC00);
72}
73
74inline bool RegxUtil::isLowSurrogate(const XMLCh ch) {
75
76        return (ch & 0xFC00) == 0xDC00;
77}
78
79inline bool RegxUtil::isHighSurrogate(const XMLCh ch) {
80
81        return (ch & 0xFC00) == 0xD800;
82}
83
84inline void RegxUtil::decomposeToSurrogates(XMLInt32 ch, XMLCh& high, XMLCh& low) {
85
86    ch -= 0x10000;
87        high = XMLCh((ch >> 10) + 0xD800);
88        low = XMLCh((ch & 0x03FF) + 0xDC00);
89}
90
91inline bool RegxUtil::isWordChar(const XMLCh ch) {
92
93        if ((ch == chUnderscore)
94                || (ch >= chDigit_0 && ch <= chDigit_9)
95                || (ch >= chLatin_A && ch <= chLatin_Z)
96                || (ch >= chLatin_a && ch <= chLatin_z))
97                return true;
98
99        return false;
100}
101
102XERCES_CPP_NAMESPACE_END
103
104#endif
105
106/**
107  * End of file RegxUtil.hpp
108  */
Note: See TracBrowser for help on using the repository browser.