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

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

?? cygwintransservice.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
        ::RegCloseKey(encodingKey);        subIndex++;    }    //    //  Now loop one more time and this time we do just the aliases. For    //  each one we find, we look up that name in the map we've already    //  built and add a new entry with this new name and the same id    //  values we stored for the original.    //    subIndex = 0;    char aliasBuf[nameBufSz + 1];    while (true)    {        // Get the name of the next key        theSize = nameBufSz;        if (::RegEnumKeyExA        (            charsetKey            , subIndex            , nameBuf            , &theSize            , 0, 0, 0, 0) == ERROR_NO_MORE_ITEMS)        {            break;        }        // Open this subkey        HKEY encodingKey;        if (::RegOpenKeyExA        (            charsetKey            , nameBuf            , 0            , KEY_READ            , &encodingKey))        {            XMLPlatformUtils::panic(PanicHandler::Panic_NoTransService);        }        //        //  If its an alias, look up the name in the map. If we find it,        //  then construct a new one with the new name and the aliased        //  ids.        //        if (isAlias(encodingKey, aliasBuf, nameBufSz))        {            const unsigned int srcLen = strlen(aliasBuf);            const unsigned int targetLen = ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, aliasBuf, srcLen, NULL, 0);            XMLCh* uniAlias = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate            (                (targetLen + 1) * sizeof(XMLCh)            );//new XMLCh[targetLen + 1];            ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, aliasBuf, srcLen, (LPWSTR)uniAlias, targetLen);            uniAlias[targetLen] = 0;            ::LCMapStringW( gLocaleId, LCMAP_UPPERCASE, (LPCWSTR)uniAlias, targetLen, (LPWSTR)uniAlias, targetLen);            // Look up the alias name            CPMapEntry* aliasedEntry = fCPMap->get(uniAlias);            if (aliasedEntry)            {                //                //  If the name is actually different, then take it.                //  Otherwise, don't take it. They map aliases that are                //  just different case.                //                if (auxCompareString(uniAlias, aliasedEntry->getEncodingName(), -1L, false))                {                    CPMapEntry* newEntry = new CPMapEntry(uniAlias, aliasedEntry->getWinCP(), aliasedEntry->getIEEncoding());                    fCPMap->put((void*)newEntry->getEncodingName(), newEntry);                }            }            XMLPlatformUtils::fgMemoryManager->deallocate(uniAlias);//delete [] uniAlias;        }        // And now close the subkey handle and bump the subkey index        ::RegCloseKey(encodingKey);        subIndex++;    }    // And close the main key handle    ::RegCloseKey(charsetKey);}CygwinTransService::~CygwinTransService(){    delete fCPMap;}// ---------------------------------------------------------------------------//  CygwinTransService: The virtual transcoding service API// ---------------------------------------------------------------------------int CygwinTransService::auxCompareString( const XMLCh* const comp1                                         , const XMLCh* const comp2                                         , signed long maxChars                                         , const bool ignoreCase){    const XMLCh* args[2] = { comp1, comp2 };    XMLCh*       firstBuf = NULL;    XMLCh*       secondBuf;    unsigned int len = XMLString::stringLen( comp1);    unsigned int otherLen = XMLString::stringLen( comp2);    unsigned int countChar = 0;    int          theResult = 0;    // Determine at what string index the comparison stops.    if ( maxChars != -1L )    {        len = ( len > maxChars ) ? maxChars : len;        otherLen = ( otherLen > maxChars ) ? maxChars : otherLen;        maxChars = ( len > otherLen ) ? otherLen : len;    }    else    {        // When no Max given must compare terminating NUL to return        // difference if one string is shorter than the other.        maxChars = ( len > otherLen ) ? otherLen : len;        ++maxChars;    }    // Handle situation when one argument or the other is NULL    // by returning +/- string length of non-NULL argument (inferred    // from XMLString::CompareNString).    // Obs. Definition of stringLen(XMLCh*) implies NULL ptr and ptr    // to Empty String are equivalent.  It handles NULL args, BTW.    if ( !comp1 )    {        // Negative because null ptr (c1) less than string (c2).        return ( 0 - otherLen );    }    if ( !comp2 )    {        // Positive because string (c1) still greater than null ptr (c2).        return len;    }    // Handle case-insensitive comparison by removing case from string.    if ( ignoreCase )    {        // Copy const parameter strings (plus terminating nul) into locals.        firstBuf = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate        (            (++len) * sizeof(XMLCh)        );//new XMLCh[ ++len];        secondBuf = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate        (            (++otherLen) * sizeof(XMLCh)        );//new XMLCh[ ++otherLen];        memcpy( firstBuf, comp1, len * sizeof(XMLCh));        memcpy( secondBuf, comp2, otherLen * sizeof(XMLCh));        // Then uppercase both strings, losing their case info.        ::LCMapStringW( gLocaleId, LCMAP_UPPERCASE, (LPWSTR)firstBuf, len, (LPWSTR)firstBuf, len);        ::LCMapStringW( gLocaleId, LCMAP_UPPERCASE, (LPWSTR)secondBuf, otherLen, (LPWSTR)secondBuf, otherLen);        // Replace original params in args array with UC ones.        args[0] = (const XMLCh*)firstBuf;        args[1] = (const XMLCh*)secondBuf;        // Not necessary only because they're not used beyond this pt.        // --len;        // --otherLen;    }    // Strings are equal until proven otherwise.    while ( ( countChar < maxChars ) && ( !theResult ) )    {        theResult = (int)(args[0][countChar]) - (int)(args[1][countChar]);        ++countChar;    }    // Clean-up buffers, equivalent to if ( ignoreCase )    if ( firstBuf )    {        XMLPlatformUtils::fgMemoryManager->deallocate(firstBuf);//delete [] firstBuf;        XMLPlatformUtils::fgMemoryManager->deallocate(secondBuf);//delete [] secondBuf;    }    return theResult;}int CygwinTransService::compareIString(  const   XMLCh* const    comp1                                        , const XMLCh* const    comp2){    return auxCompareString( comp1, comp2, -1L, true);}int CygwinTransService::compareNIString( const   XMLCh* const    comp1                                        , const XMLCh* const    comp2                                        , const unsigned int    maxChars){    // Promote maxChars to signed long. Avoid any conceivable    // portability issue from a simple C cast with extension    // of sign bit when maxChars >= 2^16.  Making that param    // signed long was necessary for reusability/an out-of-band    // indicator in CygwinTransService::auxCompareString().    // Obs. When maxChars == 0, return 0 (strings equal).    return auxCompareString( comp1, comp2, (maxChars & 0x0000FFFFL), true);}const XMLCh* CygwinTransService::getId() const{    return gMyServiceId;}bool CygwinTransService::isSpace(const XMLCh toCheck) const{    int theCount = 0;    while ( theCount < (sizeof(gWhitespace) / sizeof(XMLCh)) )    {        if ( toCheck == gWhitespace[theCount] )            return true;        ++theCount;    }    return false;}XMLLCPTranscoder* CygwinTransService::makeNewLCPTranscoder(){    // Just allocate a new LCP transcoder of our type    return new CygwinLCPTranscoder;}bool CygwinTransService::supportsSrcOfs() const{    //    //  Since the only mechanism we have to translate XML text in this    //  transcoder basically require us to do work that allows us to support    //  source offsets, we might as well do it.    //    return true;}void CygwinTransService::upperCase(XMLCh* const toUpperCase) const{    unsigned int itsLen = XMLString::stringLen( toUpperCase);    ::LCMapStringW( gLocaleId, LCMAP_UPPERCASE, (LPWSTR)toUpperCase, itsLen, (LPWSTR)toUpperCase, itsLen);}void CygwinTransService::lowerCase(XMLCh* const toLowerCase) const{    unsigned int itsLen = XMLString::stringLen( toLowerCase);    ::LCMapStringW( gLocaleId, LCMAP_LOWERCASE, (LPWSTR)toLowerCase, itsLen, (LPWSTR)toLowerCase, itsLen);}bool CygwinTransService::isAlias(const   HKEY            encodingKey                    ,       char* const     aliasBuf                    , const unsigned int    nameBufSz ){    unsigned long theType;    unsigned long theSize = nameBufSz;    return (::RegQueryValueExA    (        encodingKey        , "AliasForCharset"        , 0        , &theType        , (unsigned char*)aliasBuf        , &theSize    ) == ERROR_SUCCESS);}XMLTranscoder*CygwinTransService::makeNewXMLTranscoder(const   XMLCh* const           encodingName                                        ,       XMLTransService::Codes& resValue                                        , const unsigned int            blockSize                                        ,       MemoryManager* const    manager){    const unsigned int upLen = 1024;    XMLCh upEncoding[upLen + 1];    //    //  Get an upper cased copy of the encoding name, since we use a hash    //  table and we store them all in upper case.    //    int itsLen = XMLString::stringLen( encodingName) + 1;    memcpy(        upEncoding        , encodingName        , sizeof(XMLCh) * ( ( itsLen > upLen) ? upLen : itsLen)    );    upEncoding[upLen] = 0;  // necessary? terminating NUL should've copied.    upperCase(upEncoding);    // Now to try to find this guy in the CP map    CPMapEntry* theEntry = fCPMap->get(upEncoding);    // If not found, then return a null pointer    if (!theEntry)    {        resValue = XMLTransService::UnsupportedEncoding;        return 0;    }    // We found it, so return a Cygwin transcoder for this encoding    return new (manager) CygwinTranscoder    (        encodingName        , theEntry->getWinCP()        , theEntry->getIEEncoding()        , blockSize        , manager    );}//---------------------------------------------------------------------------////  class CygwinTranscoder Implementation ...////---------------------------------------------------------------------------// ---------------------------------------------------------------------------//  CygwinTranscoder: Constructors and Destructor// ---------------------------------------------------------------------------CygwinTranscoder::CygwinTranscoder(const  XMLCh* const    encodingName                                , const unsigned int    winCP                                , const unsigned int    ieCP                                , const unsigned int    blockSize                                , MemoryManager* const manager) :    XMLTranscoder(encodingName, blockSize, manager)    , fIECP(ieCP)    , fWinCP(winCP){}CygwinTranscoder::~CygwinTranscoder(){}// ---------------------------------------------------------------------------//  CygwinTranscoder: The virtual transcoder API// ---------------------------------------------------------------------------unsigned intCygwinTranscoder::transcodeFrom(  const XMLByte* const      srcData                                , const unsigned int        srcCount                                ,       XMLCh* const        toFill                                , const unsigned int        maxChars                                ,       unsigned int&       bytesEaten                                ,       unsigned char* const charSizes){    // Get temp pointers to the in and out buffers, and the chars sizes one    XMLCh*          outPtr = toFill;    const XMLByte*  inPtr  = srcData;    unsigned char*  sizesPtr = charSizes;    // Calc end pointers for each of them    XMLCh*          outEnd = toFill + maxChars;    const XMLByte*  inEnd  = srcData + srcCount;    //    //  Now loop until we either get our max chars, or cannot get a whole    //  character from the input buffer.    //    bytesEaten = 0;    while ((outPtr < outEnd) && (inPtr < inEnd))    {        //        //  If we are looking at a leading byte of a multibyte sequence,        //  then we are going to eat 2 bytes, else 1.        //        const unsigned int toEat = ::IsDBCSLeadByteEx(fWinCP, *inPtr) ?                                    2 : 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91污片在线观看| 高清成人免费视频| 亚洲免费在线视频一区 二区| 欧美电影免费观看高清完整版在线| 91免费看视频| 国产成a人亚洲| 成人免费电影视频| 成人aa视频在线观看| 成人黄色在线看| 国产精品996| 成人蜜臀av电影| 色综合色狠狠天天综合色| 色婷婷精品久久二区二区蜜臀av | 精品国产乱码久久久久久夜甘婷婷| 欧美日本免费一区二区三区| 欧美精品777| 日韩一区二区免费视频| 欧美成人艳星乳罩| 久久久久国产精品人| 中文字幕久久午夜不卡| **欧美大码日韩| 亚洲自拍都市欧美小说| 五月天欧美精品| 久草热8精品视频在线观看| 精品一区二区免费| aa级大片欧美| 欧美美女网站色| 久久免费精品国产久精品久久久久| 久久久久免费观看| 亚洲日本在线看| 亚洲3atv精品一区二区三区| 精品一区二区综合| 一本大道综合伊人精品热热| 欧美一级理论片| 欧美极品xxx| 午夜视频久久久久久| 国内精品嫩模私拍在线| 9i在线看片成人免费| 欧美日韩一区二区三区视频| 精品国产乱码久久久久久免费| 亚洲视频在线一区观看| 久久精品国产一区二区三| 99久久夜色精品国产网站| 制服丝袜国产精品| 成人欧美一区二区三区白人| 青青国产91久久久久久| 97精品超碰一区二区三区| 日韩三级在线观看| 樱桃视频在线观看一区| 国产一区二区三区久久悠悠色av | 911精品国产一区二区在线| 国产片一区二区| 奇米精品一区二区三区四区| av色综合久久天堂av综合| 欧美xxxxxxxxx| 亚洲国产成人tv| 成人av网址在线| 精品免费国产一区二区三区四区| 一区二区三区在线视频免费 | 国产69精品久久777的优势| 欧美一级黄色大片| 一区二区在线免费| 成人av在线影院| 精品久久免费看| 石原莉奈一区二区三区在线观看| av影院午夜一区| 国产精品区一区二区三区| 老司机精品视频导航| 欧美高清视频一二三区| 亚洲主播在线播放| 欧美亚洲综合久久| 一区二区在线观看视频在线观看| 91在线高清观看| 国产精品三级av| eeuss国产一区二区三区| 日本一区二区视频在线| 国产精品一区二区在线播放| 精品久久久久av影院| 美女精品一区二区| 欧美一区二区性放荡片| 日本中文字幕一区二区有限公司| 欧美精品一卡二卡| 亚洲图片有声小说| 欧美精品久久久久久久多人混战| 亚洲成人黄色小说| 日韩亚洲欧美中文三级| 麻豆成人av在线| 欧美精品一区二区三区一线天视频| 另类人妖一区二区av| 久久久精品黄色| 波多野洁衣一区| 亚洲综合自拍偷拍| 欧美久久久久久蜜桃| 蜜桃精品在线观看| 国产午夜亚洲精品理论片色戒| 国产成人鲁色资源国产91色综| 亚洲国产高清不卡| 色呦呦国产精品| 亚洲香肠在线观看| 欧美大片一区二区| 丁香网亚洲国际| 亚洲综合成人在线| 日韩亚洲电影在线| 国产iv一区二区三区| 亚洲精品免费在线观看| 欧美日本视频在线| 国产精品一区二区久久精品爱涩| 中文字幕视频一区| 欧美疯狂做受xxxx富婆| 国产夫妻精品视频| 亚洲一区av在线| 久久久亚洲高清| 在线观看日韩高清av| 麻豆成人av在线| 一区二区三区免费看视频| 日韩你懂的电影在线观看| 99re亚洲国产精品| 另类调教123区| 一区二区三区蜜桃网| 久久精品亚洲国产奇米99| 欧美主播一区二区三区| 国产精品一级二级三级| 亚洲国产日产av| 中文文精品字幕一区二区| 欧美三级在线播放| 91在线视频免费91| 韩国三级在线一区| 天天影视色香欲综合网老头| 中文字幕成人网| 欧美一级理论片| 欧美日韩免费电影| av不卡在线观看| 国产黄色成人av| 日本欧美久久久久免费播放网| 一区二区中文视频| 欧美精品一区二区不卡| 欧美日韩午夜在线| 日本精品视频一区二区三区| 粉嫩aⅴ一区二区三区四区| 蜜臀精品久久久久久蜜臀| 亚洲曰韩产成在线| 亚洲欧美日韩中文播放 | 91亚洲精华国产精华精华液| 久久精品国产亚洲aⅴ| 亚洲1区2区3区视频| 亚洲一区二区不卡免费| 亚洲欧美国产77777| 国产精品剧情在线亚洲| 久久亚洲影视婷婷| 日韩视频免费观看高清完整版在线观看 | 欧美精选在线播放| 欧美亚洲日本一区| 欧美日韩极品在线观看一区| 成人一级片在线观看| 图片区小说区区亚洲影院| 91精品中文字幕一区二区三区| 91论坛在线播放| 成人高清在线视频| 日韩专区一卡二卡| 亚洲伊人色欲综合网| 亚洲欧美日韩小说| 日韩毛片一二三区| 中文字幕的久久| 国产欧美一区二区精品仙草咪| 久久婷婷综合激情| 久久女同精品一区二区| 久久先锋影音av| 久久久国际精品| 欧美国产精品一区二区三区| 亚洲国产精品成人综合色在线婷婷| 久久久www成人免费毛片麻豆| 久久精品夜色噜噜亚洲a∨| 日韩一级大片在线观看| 国产欧美一区二区精品忘忧草| 国产美女视频一区| 亚洲天堂av老司机| 一区二区视频在线看| 亚洲激情一二三区| 日韩在线观看一区二区| 韩国精品久久久| 国产伦精品一区二区三区视频青涩| 国产成人无遮挡在线视频| www.亚洲精品| 51精品视频一区二区三区| 2019国产精品| 亚洲精品国产一区二区三区四区在线 | 成人精品视频一区二区三区| 91污在线观看| 精品国产麻豆免费人成网站| 国产精品欧美一级免费| 亚洲国产一区视频| 亚洲电影在线免费观看| 色综合久久久久综合99| 久久久www成人免费无遮挡大片| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲日本在线a| 久久精品国产在热久久| 欧美绝品在线观看成人午夜影视| 欧美精品一区男女天堂| 亚洲精品菠萝久久久久久久|