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

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

?? xmlstring.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
{    // Refer this one to the transcoding service    XMLPlatformUtils::fgTransService->upperCase(toUpperCase);}void XMLString::lowerCase(XMLCh* const toLowerCase){    // Refer this one to the transcoding service    XMLPlatformUtils::fgTransService->lowerCase(toLowerCase);}void XMLString::subString(XMLCh* const targetStr, const XMLCh* const srcStr                          , const int startIndex, const int endIndex                          , MemoryManager* const manager){    //if (startIndex < 0 || endIndex < 0)    //    ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Str_NegativeIndex);    if (targetStr == 0)        ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Str_ZeroSizedTargetBuf, manager);    const int srcLen = stringLen(srcStr);    const int copySize = endIndex - startIndex;    // Make sure the start index is within the XMLString bounds    if ( startIndex < 0 || startIndex > endIndex || endIndex > srcLen)        ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Str_StartIndexPastEnd, manager);    for (int i= startIndex; i < endIndex; i++) {        targetStr[i-startIndex] = srcStr[i];    }    targetStr[copySize] = 0;}BaseRefVectorOf<XMLCh>* XMLString::tokenizeString(const XMLCh*      const   tokenizeSrc                                               ,  MemoryManager*    const   manager){    XMLCh* orgText = replicate(tokenizeSrc, manager);    ArrayJanitor<XMLCh> janText(orgText, manager);    XMLCh* tokenizeStr = orgText;    RefArrayVectorOf<XMLCh>* tokenStack = new (manager) RefArrayVectorOf<XMLCh>(16, true, manager);    unsigned int len = stringLen(tokenizeStr);    unsigned int skip;    unsigned int index = 0;    while (index != len) {        // find the first non-space character        for (skip = index; skip < len; skip++)        {            if (!XMLPlatformUtils::fgTransService->isSpace(tokenizeStr[skip]))                break;        }        index = skip;        // find the delimiter (space character)        for (; skip < len; skip++)        {            if (XMLPlatformUtils::fgTransService->isSpace(tokenizeStr[skip]))                break;        }        // we reached the end of the string        if (skip == index)            break;        // these tokens are adopted in the RefVector and will be deleted        // when the vector is deleted by the caller        XMLCh* token = (XMLCh*) manager->allocate        (            (skip+1-index) * sizeof(XMLCh)        );//new XMLCh[skip+1-index];        XMLString::subString(token, tokenizeStr, index, skip, manager);        tokenStack->addElement(token);        index = skip;    }    return tokenStack;}////  This method is called when we get a notation or enumeration type attribute//  to validate. We have to confirm that the passed value to find is one of//  the values in the passed list. The list is a space separated string of//  values to match against.//bool XMLString::isInList(const XMLCh* const toFind, const XMLCh* const enumList){    //    //  We loop through the values in the list via this outer loop. We end    //  when we hit the end of the enum list or get a match.    //    const XMLCh* listPtr = enumList;    const unsigned int findLen = XMLString::stringLen(toFind);    while (*listPtr)    {        unsigned int testInd;        for (testInd = 0; testInd < findLen; testInd++)        {            //            //  If they don't match, then reset and try again. Note that            //  hitting the end of the current item will cause a mismatch            //  because there can be no spaces in the toFind string.            //            if (listPtr[testInd] != toFind[testInd])                break;        }        //        //  If we went the distance, see if we matched. If we did, the current        //  list character has to be null or space.        //        if (testInd == findLen)        {            if ((listPtr[testInd] == chSpace) || !listPtr[testInd])                return true;        }        // Run the list pointer up to the next substring        while ((*listPtr != chSpace) && *listPtr)            listPtr++;        // If we hit the end, then we failed        if (!*listPtr)            return false;        // Else move past the space and try again        listPtr++;    }    // We never found it    return false;}//// a string is whitespace:replaced, is having no//    #xD  Carriage Return//    #xA  Line Feed//    #x9  TAB//bool XMLString::isWSReplaced(const XMLCh* const toCheck){    // If no string, then its a OK    if (( !toCheck ) || ( !*toCheck ))        return true;    const XMLCh* startPtr = toCheck;    while ( *startPtr )    {        if ( ( *startPtr == chCR) ||             ( *startPtr == chLF) ||             ( *startPtr == chHTab))        return false;        startPtr++;    }    return true;}////   to replace characters listed below to #x20//    #xD  Carriage Return//    #xA  Line Feed//    #x9  TAB//void XMLString::replaceWS(XMLCh* const toConvert                          , MemoryManager* const  manager){    int strLen = XMLString::stringLen(toConvert);    if (strLen == 0)        return;    XMLCh* retBuf = (XMLCh*) manager->allocate    (        (strLen+1) * sizeof(XMLCh)    );//new XMLCh[strLen+1];    XMLCh* retPtr = &(retBuf[0]);    XMLCh* startPtr = toConvert;    while ( *startPtr )    {        if ( ( *startPtr == chCR) ||             ( *startPtr == chLF) ||             ( *startPtr == chHTab))            *retPtr = chSpace;        else            *retPtr = *startPtr;        retPtr++;        startPtr++;    }    retBuf[strLen] = chNull;    XMLString::moveChars(toConvert, retBuf, strLen);    manager->deallocate(retBuf);//delete[] retBuf;    return;}//// a string is whitespace:collapsed, is whitespace::replaced// and no//    leading space (#x20)//    trailing space//    no contiguous sequences of spaces//bool XMLString::isWSCollapsed(const XMLCh* const toCheck){    if (( !toCheck ) || ( !*toCheck ))        return true;    // shall be whitespace::replaced first    if ( !isWSReplaced(toCheck) )        return false;    // no leading or trailing space    if ((*toCheck == chSpace) ||        (toCheck[XMLString::stringLen(toCheck)-1] == chSpace))        return false;    const XMLCh* startPtr = toCheck;    XMLCh theChar;    bool  inSpace = false;    while ( (theChar = *startPtr) != 0 )    {        if ( theChar == chSpace)        {            if (inSpace)                return false;            else                inSpace = true;        }        else            inSpace = false;        startPtr++;    }    return true;}//// no leading and/or trailing spaces// no continuous sequences of spaces//void XMLString::collapseWS(XMLCh* const toConvert                           , MemoryManager* const  manager){    // If no string, then its a failure    if (( !toConvert ) || ( !*toConvert ))        return;    // replace whitespace first    replaceWS(toConvert, manager);    // remove leading spaces    const XMLCh* startPtr = toConvert;    while ( *startPtr == chSpace )        startPtr++;    if (!*startPtr)        return;    // remove trailing spaces    const XMLCh* endPtr = toConvert + stringLen(toConvert);    while (*(endPtr - 1) == chSpace)        endPtr--;    //    //  Work through what remains and chop continuous spaces    //    XMLCh* retBuf = (XMLCh*) manager->allocate    (        (endPtr - startPtr + 1) * sizeof(XMLCh)    );//new XMLCh[endPtr - startPtr + 1];    XMLCh* retPtr = &(retBuf[0]);    bool  inSpace = false;    while (startPtr < endPtr)    {        if ( *startPtr == chSpace)        {            if (inSpace)            {                //discard it;            }            else            {                inSpace = true;                *retPtr = chSpace;  //copy the first chSpace                retPtr++;            }        }        else        {            inSpace = false;            *retPtr = *startPtr;            retPtr++;        }        startPtr++;    }    *retPtr = chNull;    XMLString::moveChars(toConvert, retBuf, stringLen(retBuf)+1); //copy the last chNull as well    manager->deallocate(retBuf);//delete[] retBuf;    return;}//// remove whitespace//void XMLString::removeWS(XMLCh* const toConvert                         , MemoryManager* const manager){    // If no string, then its a failure    if (( !toConvert ) || ( !*toConvert ))        return;    XMLCh* retBuf = (XMLCh*) manager->allocate    (        (XMLString::stringLen(toConvert) + 1) * sizeof(XMLCh)    );//new XMLCh[ XMLString::stringLen(toConvert) + 1];    XMLCh* retPtr = &(retBuf[0]);    XMLCh* startPtr = toConvert;    while (*startPtr)    {        if ( ( *startPtr != chCR)    &&             ( *startPtr != chLF)    &&             ( *startPtr != chHTab)  &&             ( *startPtr != chSpace)  )        {            *retPtr++ = *startPtr;        }        startPtr++;    }    *retPtr = chNull;    XMLString::moveChars(toConvert, retBuf, stringLen(retBuf)+1); //copy the last chNull as well    manager->deallocate(retBuf);//delete[] retBuf;    return;}void XMLString::removeChar(const XMLCh*     const srcString                         , const XMLCh&           toRemove                         ,       XMLBuffer&       dstBuffer){    const XMLCh* pszSrc = srcString;    XMLCh c;    dstBuffer.reset();    while (c=*pszSrc++)     {        if (c != toRemove)             dstBuffer.append(c);    }}/** * Fixes a platform dependent absolute path filename to standard URI form. * 1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash * 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah' */void XMLString::fixURI(const XMLCh* const str, XMLCh* const target){    if (!str || !*str)        return;    int colonIdx = XMLString::indexOf(str, chColon);    // If starts with a '/' we assume    // this is an absolute (UNIX) file path and prefix it with file://    if (colonIdx == -1 && XMLString::indexOf(str, chForwardSlash) == 0) {        unsigned index = 0;        target[index++] = chLatin_f;        target[index++] = chLatin_i;        target[index++] = chLatin_l;        target[index++] = chLatin_e;        target[index++] = chColon;        target[index++] = chForwardSlash;        target[index++] = chForwardSlash;        // copy the string        const XMLCh* inPtr = str;        while (*inPtr)            target[index++] = *inPtr++;        target[index] = chNull;    }    else if (colonIdx == 1 && XMLString::isAlpha(*str)) {        // If starts with a driver letter 'x:' we assume        // this is an absolute (Windows) file path and prefix it with file:///        unsigned index = 0;        target[index++] = chLatin_f;        target[index++] = chLatin_i;        target[index++] = chLatin_l;        target[index++] = chLatin_e;        target[index++] = chColon;        target[index++] = chForwardSlash;        target[index++] = chForwardSlash;        target[index++] = chForwardSlash;        // copy the string and fix any backward slash        const XMLCh* inPtr = str;        while (*inPtr) {            if (*inPtr == chYenSign ||                *inPtr == chWonSign ||                *inPtr == chBackSlash)                target[index++] = chForwardSlash;            else                target[index++] = *inPtr;            inPtr++;        }        // cap it with null        target[index] = chNull;    }    else {        // not specific case, so just copy the string over        copyString(target, str);    }}void XMLString::release(char** buf){    delete [] *buf;    *buf = 0;}void XMLString::release(XMLCh** buf){    delete [] *buf;    *buf = 0;}void XMLString::release(XMLByte** buf){    delete [] *buf;    *buf = 0;}// ---------------------------------------------------------------------------//  XMLString: Private static methods// ---------------------------------------------------------------------------void XMLString::initString(XMLLCPTranscoder* const defToUse,                           MemoryManager* const manager){    // Store away the default transcoder that we are to use    gTranscoder = defToUse;    // Store memory manager    fgMemoryManager = manager;}void XMLString::termString(){    // Just clean up our local code page transcoder    delete gTranscoder;    gTranscoder = 0;    // reset memory manager    fgMemoryManager = 0;}XERCES_CPP_NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色91视频| 欧美成人vr18sexvr| 欧美丰满美乳xxx高潮www| 欧美xxxxxxxx| 亚洲免费观看视频| 国产精品中文字幕日韩精品| 欧美三级电影在线观看| 国产精品网曝门| 精品亚洲成a人在线观看| 色婷婷激情久久| 国产丝袜在线精品| 欧美aaa在线| 在线观看国产日韩| 亚洲视频免费在线观看| 国产精品亚洲一区二区三区妖精| 91久久精品国产91性色tv| 欧美国产精品一区| 国产乱人伦偷精品视频不卡| 日韩午夜激情av| 天使萌一区二区三区免费观看| 不卡的av电影| 国产精品丝袜久久久久久app| 久久精工是国产品牌吗| 777午夜精品免费视频| 一区二区三区高清不卡| 成人国产在线观看| 国产精品毛片高清在线完整版| 国产成人亚洲精品青草天美 | 视频一区二区三区入口| 99re在线精品| 中文字幕在线一区二区三区| 成人免费电影视频| 中文字幕一区二区三中文字幕| 国产成人免费视| 中文字幕欧美区| 成人手机在线视频| 一区视频在线播放| 成人午夜视频网站| 成人免费在线播放视频| 91在线小视频| 一区二区免费在线| 欧美伦理电影网| 秋霞影院一区二区| 日韩亚洲电影在线| 国产美女视频91| 中文字幕五月欧美| 91看片淫黄大片一级在线观看| 亚洲精品五月天| 精品视频999| 另类小说色综合网站| 久久综合九色综合欧美亚洲| 国产盗摄女厕一区二区三区| 国产精品久久99| 在线欧美小视频| 欧美bbbbb| 国产精品视频第一区| 在线观看www91| 蓝色福利精品导航| 国产三级久久久| 在线亚洲精品福利网址导航| 日韩av中文在线观看| 久久免费视频一区| 色美美综合视频| 日本不卡视频一二三区| 国产清纯白嫩初高生在线观看91| 91在线一区二区| 久久99精品网久久| 国产精品另类一区| 91.麻豆视频| www.在线欧美| 久久er99精品| 亚洲欧美激情一区二区| 欧美成人欧美edvon| www.亚洲国产| 日本aⅴ亚洲精品中文乱码| 国产午夜亚洲精品午夜鲁丝片| 91片黄在线观看| 激情图片小说一区| 亚洲综合色在线| 国产偷国产偷亚洲高清人白洁 | 亚洲女子a中天字幕| 欧美一级午夜免费电影| 99亚偷拍自图区亚洲| 久久99久久99精品免视看婷婷| 专区另类欧美日韩| 久久久久久久久岛国免费| 欧美三级乱人伦电影| 菠萝蜜视频在线观看一区| 日本伊人午夜精品| 亚洲精品五月天| 中文字幕第一区综合| 日韩一区二区在线免费观看| 在线观看日韩电影| 成人午夜精品在线| 国产老女人精品毛片久久| 亚洲国产精品一区二区www| 亚洲国产电影在线观看| 精品裸体舞一区二区三区| 欧美亚洲国产bt| 91在线视频免费观看| 懂色av中文一区二区三区| 久久99精品久久久久久| 午夜视频一区二区三区| 一区二区三区国产精华| 中文字幕一区二区三区在线观看 | 国内精品免费**视频| 日韩电影免费在线观看网站| 亚洲精品国产无天堂网2021 | 久久精品免视看| 日韩午夜中文字幕| 337p亚洲精品色噜噜狠狠| 在线免费不卡视频| 色呦呦一区二区三区| 99国产精品99久久久久久| 不卡的电影网站| 99国产精品久| 色偷偷88欧美精品久久久| 99综合电影在线视频| 91网址在线看| 在线观看一区日韩| 欧美天堂一区二区三区| 欧美在线影院一区二区| 在线视频你懂得一区| 欧美日韩午夜精品| 91麻豆精品国产91| 精品av久久707| 国产日韩欧美a| 亚洲色图19p| 亚洲已满18点击进入久久| 午夜视频在线观看一区| 老色鬼精品视频在线观看播放| 久久国产欧美日韩精品| 成人在线视频一区| 91视频.com| 欧美三级欧美一级| 精品免费一区二区三区| 国产婷婷一区二区| 亚洲激情校园春色| 日韩电影一区二区三区四区| 麻豆成人久久精品二区三区小说| 激情文学综合丁香| 91麻豆swag| 欧美一级片在线观看| 国产欧美1区2区3区| 樱花草国产18久久久久| 另类人妖一区二区av| 国产成人免费在线观看| 99久久国产综合精品麻豆| 欧美影院午夜播放| 日韩欧美国产精品一区| 国产精品伦理在线| 日本中文字幕一区| 成人美女视频在线看| 在线播放一区二区三区| 国产亚洲综合性久久久影院| 夜夜嗨av一区二区三区网页 | 91视视频在线观看入口直接观看www| 欧美午夜精品一区二区蜜桃| 久久免费的精品国产v∧| 亚洲精品国产视频| 狠狠色丁香婷婷综合| 欧美亚洲日本一区| 久久色视频免费观看| 亚洲伊人色欲综合网| 国产91精品免费| 91精品国产黑色紧身裤美女| 国产精品成人在线观看| 美女一区二区三区在线观看| 91丨九色丨黑人外教| 精品三级av在线| 亚洲国产cao| 波多野结衣中文字幕一区| 日韩女优av电影| 亚洲一区自拍偷拍| 91香蕉视频污| 欧美tk—视频vk| 午夜精品免费在线观看| 99精品黄色片免费大全| 精品乱码亚洲一区二区不卡| 亚洲成a人片综合在线| 99久久综合狠狠综合久久| 日韩精品中文字幕在线不卡尤物| 亚洲综合一区二区精品导航| 国产精品996| 精品久久久久99| 日本视频免费一区| 欧美性受xxxx黑人xyx| 国产精品对白交换视频| 九九热在线视频观看这里只有精品| 欧美视频在线不卡| 亚洲欧美日韩国产手机在线| heyzo一本久久综合| 中文成人综合网| 成人亚洲精品久久久久软件| 久久婷婷国产综合精品青草| 久久成人综合网| 精品免费99久久| 韩国精品一区二区| 日韩欧美美女一区二区三区| 日韩影院免费视频|