亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rangetokenmap.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
字號:
/* * 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: RangeTokenMap.cpp,v $ * Revision 1.11  2004/09/08 13:56:47  peiyongz * Apache License Version 2.0 * * Revision 1.10  2004/07/22 15:37:18  knoaman * Use file static instance instead of local static instance * * Revision 1.9  2004/01/13 16:17:10  knoaman * Fo sanity, use class name to qualify method * * Revision 1.8  2004/01/09 22:41:58  knoaman * Use a global static mutex for locking when creating local static mutexes instead of compareAndSwap * * Revision 1.7  2003/12/17 00:18:37  cargilld * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data. * * Revision 1.6  2003/10/17 16:44:34  knoaman * Fix multithreading problem. * * Revision 1.5  2003/05/18 14:02:06  knoaman * Memory manager implementation: pass per instance manager. * * Revision 1.4  2003/05/15 19:10:23  knoaman * Add missing include. * * Revision 1.3  2003/03/04 21:11:12  knoaman * [Bug 17516] Thread safety problems in ../util/ and ../util/regx. * * Revision 1.2  2002/11/04 15:17:00  tng * C++ Namespace Support. * * Revision 1.1.1.1  2002/02/01 22:22:30  peiyongz * sane_include * * Revision 1.5  2001/10/25 15:06:26  tng * Thread safe the static instance. * * Revision 1.4  2001/10/23 23:13:41  peiyongz * [Bug#880] patch to PlatformUtils:init()/term() and related. from Mark Weaver * * Revision 1.3  2001/07/16 21:28:25  knoaman * fix bug - no delete for the static instance in destructor. * * Revision 1.2  2001/05/11 13:26:45  tng * Copyright update. * * Revision 1.1  2001/05/03 18:17:40  knoaman * Some design changes: * o Changed the TokenFactory from a single static instance, to a *    normal class. Each RegularExpression object will have its own *    instance of TokenFactory, and that instance will be passed to *    other classes that need to use a TokenFactory to create Token *    objects (with the exception of RangeTokenMap). * o Added a new class RangeTokenMap to map a the different ranges *    in a given category to a specific RangeFactory object. In the old *    design RangeFactory had dual functionality (act as a Map, and as *    a factory for creating RangeToken(s)). The RangeTokenMap will *    have its own copy of the TokenFactory. There will be only one *    instance of the RangeTokenMap class, and that instance will be *    lazily deleted when XPlatformUtils::Terminate is called. * */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/util/regx/RangeTokenMap.hpp>#include <xercesc/util/regx/RangeToken.hpp>#include <xercesc/util/regx/RegxDefs.hpp>#include <xercesc/util/regx/TokenFactory.hpp>#include <xercesc/util/regx/RangeFactory.hpp>#include <xercesc/util/PlatformUtils.hpp>#include <xercesc/util/XMLExceptMsgs.hpp>#include <xercesc/util/XMLRegisterCleanup.hpp>#include <xercesc/util/StringPool.hpp>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------//  Local static data// ---------------------------------------------------------------------------static XMLMutex* sRangeTokMapMutex = 0;static XMLRegisterCleanup rangeTokMapRegistryCleanup;static XMLRegisterCleanup rangeTokMapInstanceCleanup;// ---------------------------------------------------------------------------//  Local, static functions// ---------------------------------------------------------------------------static void reinitRangeTokMapMutex(){    delete sRangeTokMapMutex;    sRangeTokMapMutex = 0;}static XMLMutex& getRangeTokMapMutex(){    if (!sRangeTokMapMutex)    {        XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex);        // If we got here first, then register it and set the registered flag        if (!sRangeTokMapMutex)        {            sRangeTokMapMutex = new XMLMutex;            rangeTokMapRegistryCleanup.registerCleanup(reinitRangeTokMapMutex);        }    }    return *sRangeTokMapMutex;}// ---------------------------------------------------------------------------//  Static member data initialization// ---------------------------------------------------------------------------RangeTokenMap* RangeTokenMap::fInstance = 0;// ---------------------------------------------------------------------------//  RangeTokenElemMap: Constructors and Destructor// ---------------------------------------------------------------------------RangeTokenElemMap::RangeTokenElemMap(unsigned int categoryId) :    fCategoryId(categoryId)    , fRange(0)    , fNRange(0){}RangeTokenElemMap::~RangeTokenElemMap(){}// ---------------------------------------------------------------------------//  RangeTokenMap: Constructors and Destructor// ---------------------------------------------------------------------------RangeTokenMap::RangeTokenMap() :    fRegistryInitialized(false)    , fTokenRegistry(0)    , fRangeMap(0)    , fCategories(0)    , fTokenFactory(0) {}RangeTokenMap::~RangeTokenMap() {    delete fTokenRegistry;    fTokenRegistry = 0;    delete fRangeMap;    fRangeMap = 0;    delete fCategories;    fCategories = 0;    delete fTokenFactory;    fTokenFactory = 0;}// ---------------------------------------------------------------------------//  RangeTokenMap: Getter methods// ---------------------------------------------------------------------------RangeToken* RangeTokenMap::getRange(const XMLCh* const keyword,								    const bool complement) {    if (fTokenRegistry == 0 || fRangeMap == 0 || fCategories == 0)        return 0;    if (!fTokenRegistry->containsKey(keyword))        return 0;    RangeTokenElemMap* elemMap = fTokenRegistry->get(keyword);    RangeToken* rangeTok = elemMap->getRangeToken(complement);    if (!rangeTok)    {        XMLMutexLock lockInit(&fMutex);        // make sure that it was not created while we were locked        rangeTok = elemMap->getRangeToken(complement);        if (!rangeTok)        {            rangeTok = elemMap->getRangeToken();            if (!rangeTok)            {                unsigned int categId = elemMap->getCategoryId();                const XMLCh* categName = fCategories->getValueForId(categId);                RangeFactory* rangeFactory = fRangeMap->get(categName);                if (rangeFactory == 0)                    return 0;                rangeFactory->buildRanges();                rangeTok = elemMap->getRangeToken();            }            if (complement)            {                rangeTok = (RangeToken*) RangeToken::complementRanges(rangeTok, fTokenFactory, fTokenRegistry->getMemoryManager());                elemMap->setRangeToken(rangeTok , complement);            }        }    }    return rangeTok;}// ---------------------------------------------------------------------------//  RangeTokenMap: Putter methods// ---------------------------------------------------------------------------void RangeTokenMap::addCategory(const XMLCh* const categoryName) {    if (fCategories)	    fCategories->addOrFind(categoryName);}void RangeTokenMap::addRangeMap(const XMLCh* const categoryName,                                RangeFactory* const rangeFactory) {    if (fRangeMap)	    fRangeMap->put((void*)categoryName, rangeFactory);}void RangeTokenMap::addKeywordMap(const XMLCh* const keyword,                                 const XMLCh* const categoryName) {    if (fCategories == 0 || fTokenRegistry == 0)        return;	unsigned int categId = fCategories->getId(categoryName);	if (categId == 0) {		ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Regex_InvalidCategoryName, categoryName, fTokenRegistry->getMemoryManager());	}    if (fTokenRegistry->containsKey(keyword)) {        RangeTokenElemMap* elemMap = fTokenRegistry->get(keyword);		if (elemMap->getCategoryId() != categId)			elemMap->setCategoryId(categId);		return;	}	fTokenRegistry->put((void*) keyword, new RangeTokenElemMap(categId));}// ---------------------------------------------------------------------------//  RangeTokenMap: Setter methods// ---------------------------------------------------------------------------void RangeTokenMap::setRangeToken(const XMLCh* const keyword,                                  RangeToken* const tok,const bool complement) {    if (fTokenRegistry == 0)		return;	if (fTokenRegistry->containsKey(keyword)) {        fTokenRegistry->get(keyword)->setRangeToken(tok, complement);    }    else {		ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Regex_KeywordNotFound, keyword, fTokenRegistry->getMemoryManager());	}}// ---------------------------------------------------------------------------//  RangeTokenMap: Initialization methods// ---------------------------------------------------------------------------void RangeTokenMap::initializeRegistry() {    if (!fRegistryInitialized)    {        XMLMutexLock lockInit(&fMutex);        if (!fRegistryInitialized)        {            fTokenFactory = new TokenFactory();            fTokenRegistry = new RefHashTableOf<RangeTokenElemMap>(109);            fRangeMap = new RefHashTableOf<RangeFactory>(29);            fCategories = new XMLStringPool(109);            fRegistryInitialized = true;        }    }}// ---------------------------------------------------------------------------//  RangeTokenMap: Instance methods// ---------------------------------------------------------------------------RangeTokenMap* RangeTokenMap::instance(){    if (!fInstance)    {        XMLMutexLock lock(&getRangeTokMapMutex());        if (!fInstance)        {            fInstance = new RangeTokenMap();            rangeTokMapInstanceCleanup.registerCleanup(RangeTokenMap::reinitInstance);        }    }    return (fInstance);}// -----------------------------------------------------------------------//  Notification that lazy data has been deleted// -----------------------------------------------------------------------void RangeTokenMap::reinitInstance() {    delete fInstance;    fInstance = 0;    TokenFactory::fRangeInitialized = false;}XERCES_CPP_NAMESPACE_END/**  * End of file RangeTokenMap.cpp  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人精品一区| 高清不卡一区二区| 在线成人午夜影院| 日本不卡中文字幕| 欧美va天堂va视频va在线| 国内不卡的二区三区中文字幕| 欧美成人精品3d动漫h| 国产欧美一区二区三区沐欲| 91丨九色丨黑人外教| 午夜国产精品影院在线观看| 欧美精品久久久久久久多人混战| 免费在线观看不卡| 久久久激情视频| 91麻豆自制传媒国产之光| 亚洲最大成人网4388xx| 91麻豆精品国产91久久久久| 亚洲福利一区二区三区| 国产亚洲一区二区在线观看| 日韩免费看的电影| 91麻豆精品国产自产在线| 欧美伊人精品成人久久综合97 | 欧美色视频一区| 成人黄色综合网站| 高清不卡在线观看av| 精品一区在线看| 奇米精品一区二区三区在线观看一| 亚洲在线观看免费视频| 136国产福利精品导航| 国产亚洲欧美一级| 国产三级欧美三级日产三级99| 精品少妇一区二区三区在线播放 | 欧美国产日韩在线观看| 久久夜色精品一区| www一区二区| 久久免费午夜影院| 欧美精品一区二区三区高清aⅴ| 日韩午夜精品视频| 欧美一区二区三区日韩| 欧美一级二级三级蜜桃| 91精品欧美一区二区三区综合在 | 首页综合国产亚洲丝袜| 亚洲一区在线观看免费观看电影高清| 亚洲乱码国产乱码精品精可以看| 中文字幕在线不卡国产视频| 国产精品每日更新| 亚洲欧美日韩国产成人精品影院| 国产精品久久久久久久久久久免费看| 国产精品午夜在线观看| 国产精品久久久久久久岛一牛影视| 国产亚洲制服色| 国产精品久久一卡二卡| 樱桃国产成人精品视频| 亚洲国产精品久久人人爱| 婷婷丁香久久五月婷婷| 欧美a级一区二区| 精油按摩中文字幕久久| 狠狠色综合播放一区二区| 粉嫩aⅴ一区二区三区四区五区| 国产白丝精品91爽爽久久| 99久久免费精品| 91久久精品一区二区| 欧美精品电影在线播放| 久久久久国产一区二区三区四区| 欧美高清在线视频| 亚洲黄色小视频| 美女任你摸久久| 成人动漫视频在线| 欧美日韩免费一区二区三区 | 国产经典欧美精品| 色综合久久久久| 欧美一区二区三区四区视频| 久久久亚洲综合| 一二三区精品福利视频| 久久激五月天综合精品| 大桥未久av一区二区三区中文| 色成人在线视频| 日韩免费高清视频| 亚洲乱码国产乱码精品精小说| 青青草国产精品97视觉盛宴 | 成人久久18免费网站麻豆 | 国产喂奶挤奶一区二区三区| 亚洲欧美日韩人成在线播放| 日本在线观看不卡视频| 成人亚洲一区二区一| 欧美高清hd18日本| 欧美国产综合一区二区| 午夜久久久影院| 丰满少妇在线播放bd日韩电影| 欧美伊人久久大香线蕉综合69| 精品国产一区二区三区四区四 | 欧美亚洲综合网| 久久午夜老司机| 日韩精品每日更新| eeuss鲁片一区二区三区| 欧美一卡二卡三卡| 亚洲美女免费视频| 黑人巨大精品欧美黑白配亚洲| 91福利国产成人精品照片| 26uuu国产一区二区三区| 亚洲成人一区二区在线观看| 成人动漫中文字幕| 欧美成人精品二区三区99精品| 亚洲综合图片区| 成人综合在线视频| 精品久久久久久久人人人人传媒| 亚洲欧美激情视频在线观看一区二区三区 | 日韩一区二区三区视频| 亚洲女同ⅹxx女同tv| 国产一区二区在线视频| 欧美日本免费一区二区三区| 最新热久久免费视频| 国产一区二区中文字幕| 欧美一区二区三区四区在线观看 | 国产精品一区二区黑丝| 日韩一区二区三区三四区视频在线观看 | 五月激情综合婷婷| 91成人网在线| 亚洲视频在线观看一区| 成人涩涩免费视频| 精品处破学生在线二十三| 日韩极品在线观看| 欧美三级在线视频| 亚洲欧美激情小说另类| 99这里只有精品| 久久人人超碰精品| 日韩综合一区二区| 欧美卡1卡2卡| 三级一区在线视频先锋| 欧美唯美清纯偷拍| 一区二区三区在线不卡| 国产在线日韩欧美| 久久精品日产第一区二区三区高清版| 精品一区二区三区在线播放视频| 91精品婷婷国产综合久久竹菊| 天堂在线一区二区| 欧美久久久影院| 五月婷婷久久综合| 91精品国产综合久久精品性色| 午夜不卡av在线| 欧美一区二区三区爱爱| 美女脱光内衣内裤视频久久网站 | 懂色av噜噜一区二区三区av| 久久综合九色综合97婷婷女人| 精品一二线国产| 国产欧美日韩亚州综合| 成人性视频免费网站| 自拍偷自拍亚洲精品播放| 色悠久久久久综合欧美99| 亚洲愉拍自拍另类高清精品| 欧美少妇xxx| 蜜桃精品视频在线观看| 久久久久久久久久电影| 99久久久久免费精品国产| 一区二区三区四区不卡在线| 欧美日韩一区二区三区四区五区 | aa级大片欧美| 亚洲精品国产无天堂网2021| 欧美日韩亚洲另类| 极品少妇一区二区三区精品视频| 久久美女高清视频| 99热精品国产| 亚洲成a人片在线观看中文| 日韩欧美色综合网站| 国产91精品一区二区麻豆网站 | 成人sese在线| 亚洲图片欧美视频| 精品伦理精品一区| 91亚洲精华国产精华精华液| 亚洲国产日产av| ww久久中文字幕| 91精品福利视频| 乱中年女人伦av一区二区| 欧美经典一区二区三区| 在线亚洲一区观看| 久久精品国产一区二区三| 国产精品久久久久久久久免费相片| 欧美日韩一区视频| 国产精品18久久久久久久久久久久| 亚洲视频你懂的| 欧美sm美女调教| 在线观看成人免费视频| 老司机午夜精品99久久| 亚洲女子a中天字幕| 精品久久久久久久久久久久包黑料| 99精品黄色片免费大全| 麻豆国产欧美日韩综合精品二区| 国产精品福利在线播放| 欧美一区二区三区色| 色综合天天性综合| 久久精品理论片| 亚洲国产日韩综合久久精品| 久久亚洲一级片| 777久久久精品| 91在线免费播放| 国产自产2019最新不卡| 亚洲成人7777| 亚洲色图视频免费播放| 久久久精品综合| 欧美一区二区三区系列电影| 色综合中文字幕国产 |