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

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

?? icutransservice.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    {        //        //  Reset the error, delete the old buffer, allocate a new one,        //  and try again.        //        err = U_ZERO_ERROR;        delete [] retBuf;        retBuf = new char[targetCap + 1];        // Lock again before we retry        XMLMutexLock lockConverter(&fMutex);        targetCap = ucnv_fromUChars        (            fConverter            , retBuf            , targetCap            , actualSrc            , -1            , &err        );    }    if (U_FAILURE(err))    {        delete [] retBuf;        return 0;    }    return retBuf;}char* ICULCPTranscoder::transcode(const XMLCh* const toTranscode,                                  MemoryManager* const manager){    char* retBuf = 0;    // Check for a couple of special cases    if (!toTranscode)        return retBuf;    if (!*toTranscode)    {        retBuf = (char*) manager->allocate(sizeof(char));//new char[1];        retBuf[0] = 0;        return retBuf;    }    //    //  Get the length of the source string since we'll have to use it in    //  a couple places below.    //    const unsigned int srcLen = XMLString::stringLen(toTranscode);    //    //  If XMLCh and UChar are not the same size, then we have to make a    //  temp copy of the text to pass to ICU.    //    const UChar* actualSrc;    UChar* ncActual = 0;    if (sizeof(XMLCh) == sizeof(UChar))    {        actualSrc = (const UChar*)toTranscode;    }     else    {        // Allocate a non-const temp buf, but store it also in the actual        ncActual = convertToUChar(toTranscode, 0, manager);        actualSrc = ncActual;    }    // Insure that the temp buffer, if any, gets cleaned up via the nc pointer    ArrayJanitor<UChar> janTmp(ncActual, manager);    // Caculate a return buffer size not too big, but less likely to overflow    int32_t targetLen = (int32_t)(srcLen * 1.25);    // Allocate the return buffer    retBuf = (char*) manager->allocate((targetLen + 1) * sizeof(char));//new char[targetLen + 1];    //    //  Lock now while we call the converter. Use a faux block to do the    //  lock so that it unlocks immediately afterwards.    //    UErrorCode err = U_ZERO_ERROR;    int32_t targetCap;    {        XMLMutexLock lockConverter(&fMutex);        targetCap = ucnv_fromUChars        (            fConverter            , retBuf            , targetLen + 1            , actualSrc            , -1            , &err        );    }    // If targetLen is not enough then buffer overflow might occur    if ((err == U_BUFFER_OVERFLOW_ERROR) || (err == U_STRING_NOT_TERMINATED_WARNING))    {        //        //  Reset the error, delete the old buffer, allocate a new one,        //  and try again.        //        err = U_ZERO_ERROR;        manager->deallocate(retBuf);//delete [] retBuf;        retBuf = (char*) manager->allocate((targetCap + 1) * sizeof(char));//new char[targetCap + 1];        // Lock again before we retry        XMLMutexLock lockConverter(&fMutex);        targetCap = ucnv_fromUChars        (            fConverter            , retBuf            , targetCap            , actualSrc            , -1            , &err        );    }    if (U_FAILURE(err))    {        manager->deallocate(retBuf);//delete [] retBuf;        return 0;    }    return retBuf;}XMLCh* ICULCPTranscoder::transcode(const char* const toTranscode){    // Watch for a few pyscho corner cases    if (!toTranscode)        return 0;    if (!*toTranscode)    {        XMLCh* retVal = new XMLCh[1];        retVal[0] = 0;        return retVal;    }    //    //  Get the length of the string to transcode. The Unicode string will    //  almost always be no more chars than were in the source, so this is    //  the best guess as to the storage needed.    //    const int32_t srcLen = (int32_t)strlen(toTranscode);    // We need a target buffer of UChars to fill in    UChar* targetBuf = 0;    // Now lock while we do these calculations    UErrorCode err = U_ZERO_ERROR;    int32_t targetCap;    {        XMLMutexLock lockConverter(&fMutex);        //        //  Here we don't know what the target length will be so use 0 and        //  expect an U_BUFFER_OVERFLOW_ERROR in which case it'd get resolved        //  by the correct capacity value.        //        targetCap = ucnv_toUChars        (            fConverter            , 0            , 0            , toTranscode            , srcLen            , &err        );        if (err != U_BUFFER_OVERFLOW_ERROR)            return 0;        err = U_ZERO_ERROR;        targetBuf = new UChar[targetCap + 1];        ucnv_toUChars        (            fConverter            , targetBuf            , targetCap            , toTranscode            , srcLen            , &err        );    }    if (U_FAILURE(err))    {        // Clean up if we got anything allocated        delete [] targetBuf;        return 0;    }    // Cap it off to make sure    targetBuf[targetCap] = 0;    //    //  If XMLCh and UChar are the same size, then we can return retVal    //  as is. Else, we have to allocate another buffer and copy the data    //  over to it.    //    XMLCh* actualRet;    if (sizeof(XMLCh) == sizeof(UChar))    {        actualRet = (XMLCh*)targetBuf;    }     else    {        actualRet = convertToXMLCh(targetBuf);        delete [] targetBuf;    }    return actualRet;}XMLCh* ICULCPTranscoder::transcode(const char* const toTranscode,                                   MemoryManager* const manager){    // Watch for a few pyscho corner cases    if (!toTranscode)        return 0;    if (!*toTranscode)    {        XMLCh* retVal = (XMLCh*) manager->allocate(sizeof(XMLCh));//new XMLCh[1];        retVal[0] = 0;        return retVal;    }    //    //  Get the length of the string to transcode. The Unicode string will    //  almost always be no more chars than were in the source, so this is    //  the best guess as to the storage needed.    //    const int32_t srcLen = (int32_t)strlen(toTranscode);    // We need a target buffer of UChars to fill in    UChar* targetBuf = 0;    // Now lock while we do these calculations    UErrorCode err = U_ZERO_ERROR;    int32_t targetCap;    {        XMLMutexLock lockConverter(&fMutex);        //        //  Here we don't know what the target length will be so use 0 and        //  expect an U_BUFFER_OVERFLOW_ERROR in which case it'd get resolved        //  by the correct capacity value.        //        targetCap = ucnv_toUChars        (            fConverter            , 0            , 0            , toTranscode            , srcLen            , &err        );        if (err != U_BUFFER_OVERFLOW_ERROR)            return 0;        err = U_ZERO_ERROR;        targetBuf = (UChar*) manager->allocate((targetCap+1) * sizeof(UChar));//new UChar[targetCap + 1];        ucnv_toUChars        (            fConverter            , targetBuf            , targetCap            , toTranscode            , srcLen            , &err        );    }    if (U_FAILURE(err))    {        // Clean up if we got anything allocated        manager->deallocate(targetBuf);//delete [] targetBuf;        return 0;    }    // Cap it off to make sure    targetBuf[targetCap] = 0;    //    //  If XMLCh and UChar are the same size, then we can return retVal    //  as is. Else, we have to allocate another buffer and copy the data    //  over to it.    //    XMLCh* actualRet;    if (sizeof(XMLCh) == sizeof(UChar))    {        actualRet = (XMLCh*)targetBuf;    }     else    {        actualRet = convertToXMLCh(targetBuf, manager);        manager->deallocate(targetBuf);//delete [] targetBuf;    }    return actualRet;}bool ICULCPTranscoder::transcode(const  char* const     toTranscode                                ,       XMLCh* const    toFill                                , const unsigned int    maxChars                                , MemoryManager* const  manager){    // Check for a couple of psycho corner cases    if (!toTranscode || !maxChars)    {        toFill[0] = 0;        return true;    }    if (!*toTranscode)    {        toFill[0] = 0;        return true;    }    // We'll need this in a couple of places below    const unsigned int srcLen = strlen(toTranscode);    //    //  Set up the target buffer. If XMLCh and UChar are not the same size    //  then we have to use a temp buffer and convert over.    //    UChar* targetBuf;    if (sizeof(XMLCh) == sizeof(UChar))        targetBuf = (UChar*)toFill;    else        targetBuf = (UChar*) manager->allocate        (            (maxChars + 1) * sizeof(UChar)        );//new UChar[maxChars + 1];    //    //  Use a faux block to enforce a lock on the converter, which will    //  unlock immediately after its completed.    //    UErrorCode err = U_ZERO_ERROR;    {        XMLMutexLock lockConverter(&fMutex);        ucnv_toUChars        (            fConverter            , targetBuf            , maxChars + 1            , toTranscode            , srcLen            , &err        );    }    if (U_FAILURE(err))    {        if (targetBuf != (UChar*)toFill)            manager->deallocate(targetBuf);//delete [] targetBuf;        return false;    }    // If the sizes are not the same, then copy the data over    if (sizeof(XMLCh) != sizeof(UChar))    {        UChar* srcPtr = targetBuf;        XMLCh* outPtr = toFill;        while (*srcPtr)            *outPtr++ = XMLCh(*srcPtr++);        *outPtr = 0;        // And delete the temp buffer        manager->deallocate(targetBuf);//delete [] targetBuf;    }    return true;}bool ICULCPTranscoder::transcode(   const   XMLCh* const    toTranscode                                    ,       char* const     toFill                                    , const unsigned int    maxChars                                    , MemoryManager* const  manager){    // Watch for a few psycho corner cases    if (!toTranscode || !maxChars)    {        toFill[0] = 0;        return true;    }    if (!*toTranscode)    {        toFill[0] = 0;        return true;    }    //    //  If XMLCh and UChar are not the same size, then we have to make a    //  temp copy of the text to pass to ICU.    //    const UChar* actualSrc;    UChar* ncActual = 0;    if (sizeof(XMLCh) == sizeof(UChar))    {        actualSrc = (const UChar*)toTranscode;    }     else    {        // Allocate a non-const temp buf, but store it also in the actual        ncActual = convertToUChar(toTranscode, 0, manager);        actualSrc = ncActual;    }    // Insure that the temp buffer, if any, gets cleaned up via the nc pointer    ArrayJanitor<UChar> janTmp(ncActual, manager);    //    //  Use a faux block to enforce a lock on the converter while we do this.    //  It will be released immediately after its done.    //    UErrorCode err = U_ZERO_ERROR;    int32_t targetCap;    {        XMLMutexLock lockConverter(&fMutex);        targetCap = ucnv_fromUChars        (            fConverter            , toFill            , maxChars            , actualSrc            , -1            , &err        );    }    if (U_FAILURE(err))        return false;    toFill[targetCap] = 0;    return true;}XERCES_CPP_NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品国产91久久来源| 精品国产欧美一区二区| 亚洲精选一二三| 91欧美激情一区二区三区成人| 国产精品久久久久久久久免费樱桃| 国产一区999| 国产精品色眯眯| 色哦色哦哦色天天综合| 亚洲www啪成人一区二区麻豆| 欧美日韩精品免费观看视频| 久久精品国内一区二区三区| 久久久久久免费网| av一本久道久久综合久久鬼色| 一区二区三区国产精华| 欧美日韩国产综合一区二区 | 国产91精品欧美| 国产精品久久久久婷婷| 欧美色大人视频| 美女视频一区二区| 国产精品久久免费看| 欧美日韩免费观看一区二区三区| 久久er99热精品一区二区| 欧美国产激情一区二区三区蜜月| 日本韩国欧美在线| 美日韩黄色大片| 亚洲欧洲精品一区二区精品久久久| 欧美亚洲禁片免费| 国产99久久久国产精品潘金网站| 亚洲精品免费播放| 精品久久久三级丝袜| av电影在线不卡| 琪琪一区二区三区| 亚洲人成伊人成综合网小说| 欧美一级在线视频| 99久久99久久精品免费看蜜桃 | 久久机这里只有精品| 中文字幕永久在线不卡| 日韩丝袜情趣美女图片| 91免费版在线看| 国产一区二区不卡| 日韩有码一区二区三区| 国产精品美女视频| 精品国产三级电影在线观看| 欧美日韩久久不卡| 91一区二区在线| 国产一区二区不卡在线| 午夜精品在线看| 国产精品传媒入口麻豆| 日韩一级免费观看| 欧美日韩免费一区二区三区视频| 成人av在线播放网站| 久久99久久久久| 午夜激情久久久| 一区二区三区.www| 亚洲欧洲精品一区二区三区不卡| 精品国产乱码久久久久久闺蜜| 欧美日韩在线亚洲一区蜜芽| 91丨porny丨蝌蚪视频| 国产精品夜夜嗨| 激情久久久久久久久久久久久久久久| 亚洲一区二区影院| 亚洲免费大片在线观看| 国产精品视频麻豆| 久久久一区二区| 精品sm在线观看| 欧美成人乱码一区二区三区| 欧美精品久久99| 欧美人xxxx| 欧美片在线播放| 欧美日本免费一区二区三区| 国产午夜精品在线观看| 精品欧美一区二区久久 | 欧美v日韩v国产v| 7777精品伊人久久久大香线蕉超级流畅| 色综合天天性综合| 色综合中文综合网| 欧美日韩一级二级| 91国内精品野花午夜精品| 91色婷婷久久久久合中文| 91麻豆精品一区二区三区| 91视频91自| 欧美视频你懂的| 欧美久久久久久久久久| 欧美乱妇20p| 91精品免费在线观看| 欧美一区二区三区性视频| 欧美成人一区二区三区| 亚洲精品一区二区三区福利 | 国产亚洲欧美日韩日本| 久久久精品综合| 国产精品福利一区二区三区| 亚洲婷婷在线视频| 午夜精品影院在线观看| 免费成人结看片| 国产在线国偷精品产拍免费yy| 国产精品一区不卡| av亚洲精华国产精华精华| 欧美性一区二区| 欧美成人精品高清在线播放| 国产视频视频一区| 亚洲免费资源在线播放| 热久久国产精品| 国产精品一二二区| 在线免费不卡视频| 欧美xxxx老人做受| 中文字幕一区免费在线观看| 亚洲综合图片区| 国模娜娜一区二区三区| 99re热视频精品| 欧美老女人第四色| 国产午夜精品久久| 亚洲国产日日夜夜| 国产福利一区二区三区视频| 在线中文字幕一区| 精品久久五月天| 亚洲激情图片小说视频| 蜜桃视频免费观看一区| 91丨porny丨蝌蚪视频| 日韩欧美中文一区| 亚洲天堂av一区| 韩国女主播一区二区三区| 国产精品一区三区| 一区二区视频在线| 免费xxxx性欧美18vr| 日韩精品一区国产麻豆| 99精品热视频| 亚洲天堂成人在线观看| 精品中文字幕一区二区小辣椒| 成人av动漫在线| 日韩女优电影在线观看| 1000精品久久久久久久久| 美腿丝袜在线亚洲一区| 在线观看欧美日本| 国产日产欧产精品推荐色| 日韩av不卡一区二区| 不卡的av网站| 精品国产麻豆免费人成网站| 亚洲国产中文字幕在线视频综合| 国产精一区二区三区| 欧美一区二区不卡视频| 亚洲精品视频观看| 国产aⅴ综合色| 精品久久久久久亚洲综合网 | 国产精品久久久爽爽爽麻豆色哟哟| 五月激情综合婷婷| 色琪琪一区二区三区亚洲区| 日本一区二区视频在线| 久久国产欧美日韩精品| 欧美人狂配大交3d怪物一区| 一区二区三区日韩欧美| 99re亚洲国产精品| 亚洲国产成人私人影院tom| 国内精品伊人久久久久av影院| 在线不卡a资源高清| 亚洲一级二级三级| 色天天综合色天天久久| 日韩一区在线看| 99久久综合色| 国产精品美女久久福利网站| 国产成人aaaa| 欧美国产欧美综合| 丰满少妇在线播放bd日韩电影| 精品久久五月天| 国产在线精品一区二区夜色| 日韩欧美国产高清| 久久机这里只有精品| 日韩丝袜美女视频| 久久超碰97人人做人人爱| 精品欧美乱码久久久久久| 久久国产乱子精品免费女| 日韩一区二区三区电影 | 狠狠色狠狠色综合系列| 日韩欧美中文一区| 精品一区二区三区的国产在线播放| 日韩一级完整毛片| 激情综合色播五月| 国产午夜精品久久| 91网站在线播放| 亚洲制服欧美中文字幕中文字幕| 欧美三片在线视频观看| 日韩不卡免费视频| 精品免费99久久| 国产成人免费视频网站| 亚洲婷婷综合色高清在线| 在线观看www91| 欧美a级一区二区| 久久久久国产精品麻豆| 99久久伊人网影院| 亚洲一级二级三级| 日韩欧美国产综合| 高清视频一区二区| 一个色综合网站| 日韩三级视频在线看| 国产sm精品调教视频网站| 一区二区三区中文字幕精品精品| 91精品国产综合久久蜜臀| 国产一区二区三区蝌蚪| 亚洲人吸女人奶水| 日韩免费观看高清完整版在线观看| 国产精品18久久久久久vr|