rangetoken.hpp

来自「IBM的解析xml的工具Xerces的源代码」· HPP 代码 · 共 116 行

HPP
116
字号
/* * Copyright 2001-2002,2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: RangeToken.hpp,v 1.8 2004/09/08 13:56:47 peiyongz Exp $ */#if !defined(RANGETOKEN_HPP)#define RANGETOKEN_HPP// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/util/PlatformUtils.hpp>#include <xercesc/util/regx/Token.hpp>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------//  Forward Declaration// ---------------------------------------------------------------------------class TokenFactory;class XMLUTIL_EXPORT RangeToken : public Token {public:    // -----------------------------------------------------------------------    //  Public Constructors and Destructor    // -----------------------------------------------------------------------    RangeToken(const unsigned short tokType,               MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);    ~RangeToken();    // -----------------------------------------------------------------------    //  Public Constants    // -----------------------------------------------------------------------    static const int MAPSIZE;    static const unsigned int INITIALSIZE;    // -----------------------------------------------------------------------    //  Getter methods    // -----------------------------------------------------------------------    RangeToken* getCaseInsensitiveToken(TokenFactory* const tokFactory);    // -----------------------------------------------------------------------    //  Setter methods    // -----------------------------------------------------------------------    void setRangeValues(XMLInt32* const rangeValues, const unsigned int count);    // -----------------------------------------------------------------------    //  Range manipulation methods    // -----------------------------------------------------------------------    void addRange(const XMLInt32 start, const XMLInt32 end);    void mergeRanges(const Token *const tok);    void sortRanges();    void compactRanges();    void subtractRanges(RangeToken* const tok);    void intersectRanges(RangeToken* const tok);    static Token* complementRanges(RangeToken* const tok,                                   TokenFactory* const tokFactory,                                   MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);    // -----------------------------------------------------------------------    //  Match methods    // -----------------------------------------------------------------------    bool match(const XMLInt32 ch);private:    // -----------------------------------------------------------------------    //  Unimplemented constructors and operators    // -----------------------------------------------------------------------    RangeToken(const RangeToken&);    RangeToken& operator=(const RangeToken&);    // -----------------------------------------------------------------------    // Private Helper methods    // -----------------------------------------------------------------------    void createMap();    void expand(const unsigned int length);    // -----------------------------------------------------------------------    //  Private data members    // -----------------------------------------------------------------------    bool         fSorted;    bool         fCompacted;    int          fNonMapIndex;    unsigned int fElemCount;    unsigned int fMaxCount;    int*         fMap;    XMLInt32*    fRanges;    RangeToken*  fCaseIToken;    MemoryManager* fMemoryManager;};XERCES_CPP_NAMESPACE_END#endif/**  * End of file RangeToken.hpp  */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?