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

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

?? icumsgloader.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
字號:
/* * Copyright 1999-2000,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: ICUMsgLoader.cpp,v $ * Revision 1.23  2004/09/30 18:52:59  peiyongz * XercesC2_6_0 updates * * Revision 1.22  2004/09/08 13:56:33  peiyongz * Apache License Version 2.0 * * Revision 1.21  2004/02/12 20:44:34  peiyongz * XercesC2_5_0 * * Revision 1.20  2003/12/24 15:24:13  cargilld * More updates to memory management so that the static memory manager. * * Revision 1.19  2003/12/17 03:56:15  neilg * add default memory manager parameter to loadMsg method that uses char * parameters * * Revision 1.18  2003/11/19 23:08:02  peiyongz * build xercesc2_4_0 * * Revision 1.17  2003/05/15 18:29:48  knoaman * Partial implementation of the configurable memory manager. * * Revision 1.16  2003/03/17 19:28:05  peiyongz * Build versioned XercesMessages on Windows * * Revision 1.15  2003/03/09 16:41:20  peiyongz * PanicHandler * * Revision 1.14  2003/02/20 18:07:46  peiyongz * Bug#7077: build error message shared library for ICUMsgLoader * * Revision 1.12  2003/02/17 19:56:03  peiyongz * Re-prioritize search order for error message files. * * Revision 1.11  2002/12/12 16:53:25  peiyongz * Message file name changed. * * Revision 1.10  2002/12/06 16:29:17  peiyongz * $XERCESCROOT/msg created as home directory for message files, and * set default locale. * * Revision 1.9  2002/12/04 18:11:23  peiyongz * use $XERCESCROOT to search for icu resource bundle if XERCESC_NLS_HOME * undefined * * Revision 1.8  2002/11/20 20:28:17  peiyongz * fix to warning C4018: '>' : signed/unsigned mismatch * * Revision 1.7  2002/11/12 17:27:49  tng * DOM Message: add new domain for DOM Messages. * * Revision 1.6  2002/11/04 22:24:43  peiyongz * Locale setting for message loader * * Revision 1.5  2002/11/04 15:10:40  tng * C++ Namespace Support. * * Revision 1.4  2002/10/10 21:07:55  peiyongz * load resource files using environement vars and base name * * Revision 1.3  2002/10/02 17:08:50  peiyongz * XMLString::equals() to replace XMLString::compareString() * * Revision 1.2  2002/09/30 22:20:40  peiyongz * Build with ICU MsgLoader * * Revision 1.1.1.1  2002/02/01 22:22:19  peiyongz * sane_include * * Revision 1.7  2002/01/21 14:52:25  tng * [Bug 5847] ICUMsgLoader can't be compiled with gcc 3.0.3 and ICU2.  And also fix the memory leak introduced by Bug 2730 fix. * * Revision 1.6  2001/11/01 23:39:18  jasons * 2001-11-01  Jason E. Stewart  <jason@openinformatics.com> * * 	* src/util/MsgLoaders/ICU/ICUMsgLoader.hpp (Repository): * 	* src/util/MsgLoaders/ICU/ICUMsgLoader.cpp (Repository): * 	Updated to compile with ICU-1.8.1 * * Revision 1.5  2000/03/02 19:55:14  roddey * This checkin includes many changes done while waiting for the * 1.1.0 code to be finished. I can't list them all here, but a list is * available elsewhere. * * Revision 1.4  2000/02/06 07:48:21  rahulj * Year 2K copyright swat. * * Revision 1.3  2000/01/19 00:58:38  roddey * Update to support new ICU 1.4 release. * * Revision 1.2  1999/11/19 21:24:03  aruna1 * incorporated ICU 1.3.1 related changes int he file * * Revision 1.1.1.1  1999/11/09 01:07:23  twl * Initial checkin * * Revision 1.4  1999/11/08 20:45:26  rahul * Swat for adding in Product name and CVS comment log variable. * */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/util/XercesDefs.hpp>#include <xercesc/util/PlatformUtils.hpp>#include <xercesc/util/XMLMsgLoader.hpp>#include <xercesc/util/XMLString.hpp>#include <xercesc/util/XMLUniDefs.hpp>#include <xercesc/util/Janitor.hpp>#include "ICUMsgLoader.hpp"#include "unicode/uloc.h"#include "unicode/udata.h" #include "string.h"#include <stdio.h>#include <stdlib.h>XERCES_CPP_NAMESPACE_BEGIN// ---------------------------------------------------------------------------//  Local static methods// ---------------------------------------------------------------------------/* *  Resource Data Reference.   *  *  The data is packaged as a dll (or .so or whatever, depending on the platform) that exports a data symbol. *  The application (thic *.cpp) references that symbol here, and will pass the data address to ICU, which  *  will then  be able to fetch resources from the data. */#if defined(_WIN32) || defined(WIN32)extern "C" void U_IMPORT *XercesMessages2_6_0_dat;#elseextern "C" void U_IMPORT *XercesMessages_dat;#endif/*  *  Tell ICU where our resource data is located in memory. The data lives in the XercesMessages dll, and we just *  pass the address of an exported symbol from that library to ICU. */static bool setAppDataOK = false;static void setAppData(){    static bool setAppDataDone = false;    if (setAppDataDone)    {        return;    }    else    {        setAppDataDone = true;        UErrorCode err = U_ZERO_ERROR;#if defined(_WIN32) || defined(WIN32)        udata_setAppData("XercesMessages", &XercesMessages2_6_0_dat, &err);#else        udata_setAppData("XercesMessages", &XercesMessages_dat, &err);#endif                if (U_SUCCESS(err))        {    	    setAppDataOK = true;        }    }}// ---------------------------------------------------------------------------//  Public Constructors and Destructor// ---------------------------------------------------------------------------ICUMsgLoader::ICUMsgLoader(const XMLCh* const  msgDomain):fLocaleBundle(0),fDomainBundle(0){    /***	    Validate msgDomain    ***/    if (!XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain)    &&        !XMLString::equals(msgDomain, XMLUni::fgExceptDomain)    &&        !XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain) &&        !XMLString::equals(msgDomain, XMLUni::fgValidityDomain)   )    {        XMLPlatformUtils::panic(PanicHandler::Panic_UnknownMsgDomain);    }    /***	Resolve domainName    ***/    int     index = XMLString::lastIndexOf(msgDomain, chForwardSlash);    char*   domainName = XMLString::transcode(&(msgDomain[index + 1]), XMLPlatformUtils::fgMemoryManager);    ArrayJanitor<char> jan1(domainName, XMLPlatformUtils::fgMemoryManager);    /***        Location resolution priority                  1. XMLMsgLoader::getNLSHome(), set by user through            XMLPlatformUtils::Initialize(), which provides user-specified            location where the message loader shall retrieve error messages.         2. envrionment var: XERCESC_NLS_HOME         3. path $XERCESCROOT/msg    ***/    char locationBuf[1024];    memset(locationBuf, 0, sizeof locationBuf);    const char *nlsHome = XMLMsgLoader::getNLSHome();    if (nlsHome)    {    	strcpy(locationBuf, nlsHome);        strcat(locationBuf, U_FILE_SEP_STRING);    }    else    {        nlsHome = getenv("XERCESC_NLS_HOME");        if (nlsHome)        {            strcpy(locationBuf, nlsHome);            strcat(locationBuf, U_FILE_SEP_STRING);        }        else        {            nlsHome = getenv("XERCESCROOT");            if (nlsHome)            {                strcpy(locationBuf, nlsHome);                strcat(locationBuf, U_FILE_SEP_STRING);                strcat(locationBuf, "msg");                strcat(locationBuf, U_FILE_SEP_STRING);                                }            else            {                /***                 leave it to ICU to decide where to search                 for the error message.                 ***/                 setAppData();            }        }        }    /***	Open the locale-specific resource bundle    ***/    strcat(locationBuf, "XercesMessages");    UErrorCode err = U_ZERO_ERROR;    uloc_setDefault("en_US", &err);   // in case user-specified locale unavailable    err = U_ZERO_ERROR;    fLocaleBundle = ures_open(locationBuf, XMLMsgLoader::getLocale(), &err);    if (!U_SUCCESS(err) || fLocaleBundle == NULL)    {    	/***    	   in case user specified location does not work    	   try the dll        ***/        if (strcmp(locationBuf, "XercesMessages") !=0 )        {    	     	               setAppData();        	            err = U_ZERO_ERROR;            fLocaleBundle = ures_open("XercesMessages", XMLMsgLoader::getLocale(), &err);            if (!U_SUCCESS(err) || fLocaleBundle == NULL)            {                 XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);            }        }        else        {    	     	               XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);        }            }    /***	Open the domain specific resource bundle within	the locale-specific resource bundle    ***/    err = U_ZERO_ERROR;    fDomainBundle = ures_getByKey(fLocaleBundle, domainName, NULL, &err);    if (!U_SUCCESS(err) || fDomainBundle == NULL)    {        XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);    }}ICUMsgLoader::~ICUMsgLoader(){    ures_close(fDomainBundle);    ures_close(fLocaleBundle);}// ---------------------------------------------------------------------------//  Implementation of the virtual message loader API// ---------------------------------------------------------------------------bool ICUMsgLoader::loadMsg( const   XMLMsgLoader::XMLMsgId  msgToLoad                          ,         XMLCh* const            toFill                          , const   unsigned int            maxChars){    UErrorCode   err = U_ZERO_ERROR;    int32_t      strLen = 0;    // Assuming array format    const UChar *name = ures_getStringByIndex(fDomainBundle, (int32_t)msgToLoad-1, &strLen, &err);    if (!U_SUCCESS(err) || (name == NULL))    {        return false;    }    int retStrLen = strLen > (int32_t)maxChars ? maxChars : strLen;    if (sizeof(UChar)==sizeof(XMLCh))    {        XMLString::moveChars(toFill, (XMLCh*)name, retStrLen);        toFill[retStrLen] = (XMLCh) 0;    }    else    {        XMLCh* retStr = toFill;        const UChar *srcPtr = name;        while (retStrLen--)           *retStr++ = *srcPtr++;        *retStr = 0;    }    return true;}bool ICUMsgLoader::loadMsg( const   XMLMsgLoader::XMLMsgId  msgToLoad                            ,       XMLCh* const            toFill                            , const unsigned int            maxChars                            , const XMLCh* const            repText1                            , const XMLCh* const            repText2                            , const XMLCh* const            repText3                            , const XMLCh* const            repText4                            , MemoryManager* const          manager   ){    // Call the other version to load up the message    if (!loadMsg(msgToLoad, toFill, maxChars))        return false;    // And do the token replacement    XMLString::replaceTokens(toFill, maxChars, repText1, repText2, repText3, repText4, manager);    return true;}bool ICUMsgLoader::loadMsg( const   XMLMsgLoader::XMLMsgId  msgToLoad                            ,       XMLCh* const            toFill                            , const unsigned int            maxChars                            , const char* const             repText1                            , const char* const             repText2                            , const char* const             repText3                            , const char* const             repText4                            , MemoryManager * const         manager){    //    //  Transcode the provided parameters and call the other version,    //  which will do the replacement work.    //    XMLCh* tmp1 = 0;    XMLCh* tmp2 = 0;    XMLCh* tmp3 = 0;    XMLCh* tmp4 = 0;        bool bRet = false;    if (repText1)        tmp1 = XMLString::transcode(repText1, manager);    if (repText2)        tmp2 = XMLString::transcode(repText2, manager);    if (repText3)        tmp3 = XMLString::transcode(repText3, manager);    if (repText4)        tmp4 = XMLString::transcode(repText4, manager);    bRet = loadMsg(msgToLoad, toFill, maxChars, tmp1, tmp2, tmp3, tmp4, manager);    if (tmp1)        manager->deallocate(tmp1);//delete [] tmp1;    if (tmp2)        manager->deallocate(tmp2);//delete [] tmp2;    if (tmp3)        manager->deallocate(tmp3);//delete [] tmp3;    if (tmp4)        manager->deallocate(tmp4);//delete [] tmp4;    return bRet;}XERCES_CPP_NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产日韩欧美精品| 久久99热狠狠色一区二区| 久久久精品免费免费| 日韩视频中午一区| 韩国女主播成人在线| 国产精品羞羞答答xxdd| 久久久久久久综合色一本| 国产不卡视频一区二区三区| 国产欧美日韩一区二区三区在线观看| 日韩美女视频在线| 久色婷婷小香蕉久久| 欧美国产综合一区二区| 亚洲男人天堂一区| 日韩精品免费视频人成| 精品国产伦一区二区三区观看方式 | 中文字幕字幕中文在线中不卡视频| 国产一区二区中文字幕| a亚洲天堂av| 欧美日韩久久不卡| 国产精品麻豆网站| 国产黄色精品网站| 欧美高清你懂得| 精品国产乱码久久久久久蜜臀 | 国产精品久久网站| 婷婷成人激情在线网| av中文字幕亚洲| 久久综合狠狠综合久久激情| 波多野结衣的一区二区三区| 狠狠色丁香久久婷婷综合_中 | 欧美一区二区不卡视频| 成人免费一区二区三区视频 | 精品国产一二三| 在线播放91灌醉迷j高跟美女| 一本到三区不卡视频| 国产精品国产三级国产普通话三级 | 亚洲一区免费在线观看| 色婷婷久久一区二区三区麻豆| 亚洲免费观看高清完整| 欧美一级理论片| 日韩精品一区二区三区在线播放| 欧美日韩国产综合久久| 亚洲欧美日韩国产综合在线| 岛国精品在线播放| 9i看片成人免费高清| 亚洲三级免费观看| 日韩一区中文字幕| 欧美日韩一区二区三区高清| 欧美日韩在线电影| 国产福利精品一区| 乱一区二区av| 免费成人你懂的| 美女视频黄 久久| 成人黄动漫网站免费app| av在线播放一区二区三区| 欧美日韩国产一区| 精品一区二区三区av| 国产精品久线观看视频| 亚洲免费观看高清完整版在线观看熊| 色噜噜狠狠成人中文综合| 91天堂素人约啪| 精品一区二区三区香蕉蜜桃| 国产精品网站在线播放| 亚洲国产精品麻豆| 国产成人欧美日韩在线电影| 欧美三级视频在线播放| 波多野结衣视频一区| 老司机精品视频线观看86| 国产日韩欧美电影| 久久精品国产一区二区| 欧美三级乱人伦电影| va亚洲va日韩不卡在线观看| 美女免费视频一区二区| 欧美日韩亚洲综合| 欧美色手机在线观看| 亚洲人被黑人高潮完整版| 国产蜜臀av在线一区二区三区 | av色综合久久天堂av综合| 国产成人在线看| 成人精品国产免费网站| 成人性生交大片免费看视频在线| 亚洲综合色网站| 91成人在线免费观看| 亚洲视频一二区| 成人黄色小视频| **网站欧美大片在线观看| 国产欧美日韩精品a在线观看| 久久免费看少妇高潮| 日本色综合中文字幕| 亚洲婷婷综合色高清在线| 日本在线不卡一区| 日韩视频一区在线观看| 国产原创一区二区| 亚洲欧美日韩国产手机在线 | 91香蕉视频mp4| 色999日韩国产欧美一区二区| 亚洲国产精品一区二区尤物区| 亚洲欧美偷拍三级| 日本一道高清亚洲日美韩| 国产女同互慰高潮91漫画| 成人动漫视频在线| 久久精品国产亚洲5555| 日韩理论电影院| 国产女主播一区| 精品久久久久久久久久久久久久久 | 国产成人av电影在线| 国产精品亲子乱子伦xxxx裸| 亚洲高清视频的网址| 欧美国产乱子伦| 精品久久久久香蕉网| 欧美精品777| 在线精品视频小说1| 中文一区二区完整视频在线观看| 午夜电影网一区| 亚洲综合999| 一本一道波多野结衣一区二区| 91精品国产综合久久久久久漫画 | 日韩视频一区在线观看| 在线国产亚洲欧美| 成人av资源网站| 色婷婷久久久亚洲一区二区三区| 国产成人精品三级| 久久综合九色综合欧美98| 精品国内二区三区| 国产午夜精品一区二区三区视频| 欧美日韩在线播放三区四区| 欧美成人a视频| 精品免费99久久| 国产精品99久| 成人性生交大片免费看在线播放| 欧美一区二区三区四区视频| 日本三级韩国三级欧美三级| 欧美日韩精品电影| 精品少妇一区二区三区在线视频| 欧美福利一区二区| 国产色产综合色产在线视频| 亚洲国产成人午夜在线一区| 中文字幕在线一区免费| 一区二区三区四区蜜桃| 亚洲一区二区三区爽爽爽爽爽| 99精品视频在线免费观看| av在线不卡网| ●精品国产综合乱码久久久久| 亚洲18女电影在线观看| 精品三级在线观看| 一本大道综合伊人精品热热| 一本一道久久a久久精品综合蜜臀| 亚洲精品国产精华液| 九九精品一区二区| 一区二区三区欧美| 福利视频网站一区二区三区| 精品视频在线免费看| 久久色中文字幕| 日韩中文字幕亚洲一区二区va在线| 中文字幕欧美日本乱码一线二线| 欧美日韩在线综合| 色婷婷精品大在线视频| 成人黄色大片在线观看| 51午夜精品国产| 欧美二区三区的天堂| 欧美色图在线观看| 在线亚洲人成电影网站色www| 国产成人免费网站| 日韩欧美电影一区| 精品不卡在线视频| 国产又粗又猛又爽又黄91精品| 污片在线观看一区二区| 欧美一区午夜视频在线观看 | 国产老妇另类xxxxx| av网站免费线看精品| 欧美色精品天天在线观看视频| 亚洲福中文字幕伊人影院| 91麻豆国产自产在线观看| 99亚偷拍自图区亚洲| 91视频在线观看| 亚洲三级免费电影| 美腿丝袜在线亚洲一区| 欧美成人vr18sexvr| 99re这里只有精品视频首页| 国产.欧美.日韩| 亚洲夂夂婷婷色拍ww47| 欧美一卡2卡三卡4卡5免费| 国产精品资源在线| 亚洲电影一级黄| 国产精品午夜电影| 欧美精品欧美精品系列| 成人美女视频在线观看18| 日韩精品乱码av一区二区| 日本一区二区三区国色天香 | 97久久精品人人做人人爽 | 成人中文字幕合集| 午夜国产精品一区| 国产精品污www在线观看| 日韩欧美亚洲国产另类| 一本色道久久综合狠狠躁的推荐| 免费在线观看一区| 色婷婷激情久久| 国产区在线观看成人精品 | 日韩1区2区日韩1区2区| 天堂蜜桃91精品| 亚洲激情自拍视频|