match.cpp
来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 140 行
CPP
140 行
/* * Copyright 2001,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. *//* * $Log: Match.cpp,v $ * Revision 1.5 2004/09/08 13:56:47 peiyongz * Apache License Version 2.0 * * Revision 1.4 2003/05/16 00:03:10 knoaman * Partial implementation of the configurable memory manager. * * Revision 1.3 2002/12/18 13:01:02 gareth * New functionality - tokenize and replace. Fixed REVISIT for case insensitive match. Patch by Jennifer Schachter. * * Revision 1.2 2002/11/04 15:17:00 tng * C++ Namespace Support. * * Revision 1.1.1.1 2002/02/01 22:22:29 peiyongz * sane_include * * Revision 1.2 2001/05/11 13:26:42 tng * Copyright update. * * Revision 1.1 2001/03/02 19:22:40 knoaman * Schema: Regular expression handling part I * */// ---------------------------------------------------------------------------// Includes// ---------------------------------------------------------------------------#include <xercesc/util/regx/Match.hpp>#include <xercesc/framework/MemoryManager.hpp>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------// Match: Constructors and Destructors// ---------------------------------------------------------------------------Match::Match(MemoryManager* const manager) : fNoGroups(0) , fPositionsSize(0) , fStartPositions(0) , fEndPositions(0) , fMemoryManager(manager){}Match::Match(const Match& toCopy) : fNoGroups(0) , fPositionsSize(0) , fStartPositions(0) , fEndPositions(0) , fMemoryManager(0){ initialize(toCopy);}Match& Match::operator=(const Match& toAssign){ initialize(toAssign); return *this;}Match::~Match() { cleanUp();}// ---------------------------------------------------------------------------// Match: Setter Methods// ---------------------------------------------------------------------------void Match::setNoGroups(const int n) { if (fNoGroups <= 0 || fPositionsSize < n) { cleanUp(); fPositionsSize = n; fStartPositions = (int*) fMemoryManager->allocate(n * sizeof(int));//new int[n]; fEndPositions = (int*) fMemoryManager->allocate(n * sizeof(int));//new int[n]; } fNoGroups = n; for (int i=0; i< fPositionsSize; i++) { fStartPositions[i] = -1; fEndPositions[i] = -1; }}// ---------------------------------------------------------------------------// Match: private helpers methods// ---------------------------------------------------------------------------void Match::initialize(const Match &toCopy){ //do not copy over value of fPositionSize as it is irrelevant to the //state of the Match fMemoryManager = toCopy.fMemoryManager; int toCopySize = toCopy.getNoGroups(); setNoGroups(toCopySize); for (int i=0; i<toCopySize; i++){ setStartPos(i, toCopy.getStartPos(i)); setEndPos(i, toCopy.getEndPos(i)); } }void Match::cleanUp() { fMemoryManager->deallocate(fStartPositions);//delete [] fStartPositions; fMemoryManager->deallocate(fEndPositions);//delete [] fEndPositions; fStartPositions = 0; fEndPositions = 0;}XERCES_CPP_NAMESPACE_END/** * End of file Match.cpp */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?