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

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

?? iconvgnutransservice.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright 2002,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: IconvGNUTransService.cpp,v $ * Revision 1.15  2004/09/08 13:56:45  peiyongz * Apache License Version 2.0 * * Revision 1.14  2004/07/23 15:29:09  amassari * transcode was badly terminating the converted string (jira#1206) * * Revision 1.13  2004/07/23 14:35:03  amassari * A global mutex was not cleaned up * * Revision 1.12  2004/02/25 14:53:24  peiyongz * Bug#27209: Xerces 2.5.0 does not build with option -t IconvGNU because of syntax errors! * * Revision 1.11  2003/12/24 15:24:15  cargilld * More updates to memory management so that the static memory manager. * * Revision 1.10  2003/08/19 14:01:41  neilg * fix for bug 22537 * * Revision 1.9  2003/05/17 16:32:18  knoaman * Memory manager implementation : transcoder update. * * Revision 1.8  2003/05/16 21:37:00  knoaman * Memory manager implementation: Modify constructors to pass in the memory manager. * * Revision 1.7  2003/05/15 18:47:05  knoaman * Partial implementation of the configurable memory manager. * * Revision 1.6  2003/04/07 16:52:13  peiyongz * Bug# 18672: IconvGNUTranscoder can't be build when namespaces is on. *                       Patch from Bacek@yandex-team.ru (Vasily Tchekalkin) * * Revision 1.5  2003/03/09 17:03:25  peiyongz * PanicHandler * * Revision 1.4  2002/12/31 18:42:54  tng * [Bug 15608] IconvLCPTranscoder::transcode() is wrong at wcstombs() usage. * * Revision 1.3  2002/11/04 15:14:34  tng * C++ Namespace Support. * * Revision 1.2  2002/09/27 13:33:43  tng * [Bug 12547] Xerces C++ 2.1 fails to build on Linux 64 bits arch with -tlinux.  Patch from Guillaume Morin. * * Revision 1.1  2002/08/19 19:38:18  tng * [Bug 11771] Linux specific IconvGNU transcoder.  Patch from Vasily Tchekalkin. * */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <ctype.h>#include <locale.h>#include <iconv.h>#include <errno.h>#include <endian.h>#include <xercesc/util/XMLString.hpp>#include <xercesc/util/XMLUniDefs.hpp>#include <xercesc/util/XMLUni.hpp>#include <xercesc/util/PlatformUtils.hpp>#include <xercesc/util/TranscodingException.hpp>#include "IconvGNUTransService.hpp"#if !defined(APP_NO_THREADS)#include <xercesc/util/Mutexes.hpp>#include <xercesc/util/XMLRegisterCleanup.hpp>#endif /* !APP_NO_THREADS */XERCES_CPP_NAMESPACE_BEGIN#if !defined(APP_NO_THREADS)// Iconv() access syncronization pointstatic XMLMutex    *gIconvMutex = NULL;static XMLRegisterCleanup IconvGNUMutexCleanup;#  define ICONV_LOCK    XMLMutexLock lockConverter(gIconvMutex);#else /* APP_NO_THREADS */# define ICONV_LOCK#endif /* !APP_NO_THREADS */// ---------------------------------------------------------------------------// Description of encoding schemas, supported by iconv()// ---------------------------------------------------------------------------typedef struct __IconvGNUEncoding {    const char*    fSchema;    // schema name    size_t    fUChSize;    // size of the character    unsigned int fUBO;        // byte order, relative to the host} IconvGNUEncoding;static const IconvGNUEncoding    gIconvGNUEncodings[] = {    { "UCS-2LE",        2,    LITTLE_ENDIAN },    { "ucs-2-internal",        2,    LITTLE_ENDIAN },    { NULL, 0,    0 }};//--------------------------------------------------// Macro-definitions to translate "native unicode"// characters <-> XMLCh with different host byte order// and encoding schemas.# if BYTE_ORDER == LITTLE_ENDIAN#  define IXMLCh2WC16(x,w)            \    *(w) = ((*(x)) >> 8) & 0xFF;        \    *((w)+1) = (*(x)) & 0xFF#  define IWC162XMLCh(w,x)    *(x) = ((*(w)) << 8) | (*((w)+1))#  define XMLCh2WC16(x,w)            \    *(w) = (*(x)) & 0xFF;            \    *((w)+1) = ((*(x)) >> 8) & 0xFF#  define WC162XMLCh(w,x)    *(x) = ((*((w)+1)) << 8) | (*(w))#  define IXMLCh2WC32(x,w)            \    *(w) = ((*(x)) >> 24) & 0xFF;        \    *((w)+1) = ((*(x)) >> 16) & 0xFF;    \    *((w)+2) = ((*(x)) >> 8) & 0xFF;    \    *((w)+3) = (*(x)) & 0xFF#  define IWC322XMLCh(w,x)                \      *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |    \          ((*((w)+2)) << 8) | (*((w)+3))#  define XMLCh2WC32(x,w)            \    *((w)+3) = ((*(x)) >> 24) & 0xFF;    \    *((w)+2) = ((*(x)) >> 16) & 0xFF;    \    *((w)+1) = ((*(x)) >> 8) & 0xFF;    \    *(w) = (*(x)) & 0xFF#  define WC322XMLCh(w,x)                    \      *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |    \        ((*((w)+1)) << 8) | (*(w))# else /* BYTE_ORDER != LITTLE_ENDIAN */#  define XMLCh2WC16(x,w)            \    *(w) = ((*(x)) >> 8) & 0xFF;        \    *((w)+1) = (*(x)) & 0xFF#  define WC162XMLCh(w,x)    *(x) = ((*(w)) << 8) | (*((w)+1))#  define IXMLCh2WC16(x,w)            \    *(w) = (*(x)) & 0xFF;            \    *((w)+1) = ((*(x)) >> 8) & 0xFF#  define IWC162XMLCh(w,x)    *(x) = ((*((w)+1)) << 8) | (*(w))#  define XMLCh2WC32(x,w)            \    *(w) = ((*(x)) >> 24) & 0xFF;        \    *((w)+1) = ((*(x)) >> 16) & 0xFF;    \    *((w)+2) = ((*(x)) >> 8) & 0xFF;    \    *((w)+3) = (*(x)) & 0xFF#  define WC322XMLCh(w,x)                \      *(x) = ((*(w)) << 24) | ((*((w)+1)) << 16) |    \          ((*((w)+2)) << 8) | (*((w)+3))#  define IXMLCh2WC32(x,w)            \    *((w)+3) = ((*(x)) >> 24) & 0xFF;    \    *((w)+2) = ((*(x)) >> 16) & 0xFF;    \    *((w)+1) = ((*(x)) >> 8) & 0xFF;    \    *(w) = (*(x)) & 0xFF#  define IWC322XMLCh(w,x)                    \      *(x) = ((*((w)+3)) << 24) | ((*((w)+2)) << 16) |    \        ((*((w)+1)) << 8) | (*(w))# endif /* BYTE_ORDER == LITTLE_ENDIAN */#include <wchar.h>#include <string.h>#include <stdlib.h>#include <stdio.h>// ---------------------------------------------------------------------------//  Local, const data// ---------------------------------------------------------------------------static const unsigned int    gTempBuffArraySize = 4096;static const XMLCh        gMyServiceId[] ={    chLatin_I, chLatin_C, chLatin_o, chLatin_n, chLatin_v, chNull};// ---------------------------------------------------------------------------//  Local methods// ---------------------------------------------------------------------------static unsigned int getWideCharLength(const XMLCh* const src){    if (!src)        return 0;    unsigned int len = 0;    const XMLCh* pTmp = src;    while (*pTmp++)        len++;    return len;}//----------------------------------------------------------------------------// There is implementation of the libiconv for FreeBSD (available through the// ports collection). The following is a wrapper around the iconv().//----------------------------------------------------------------------------IconvGNUWrapper::IconvGNUWrapper ()    : fUChSize(0), fUBO(LITTLE_ENDIAN),      fCDTo((iconv_t)-1), fCDFrom((iconv_t)-1){}IconvGNUWrapper::IconvGNUWrapper ( iconv_t    cd_from,               iconv_t    cd_to,               size_t    uchsize,               unsigned int    ubo )    : fUChSize(uchsize), fUBO(ubo),      fCDTo(cd_to), fCDFrom(cd_from){    if (fCDFrom == (iconv_t) -1 || fCDTo == (iconv_t) -1) {    XMLPlatformUtils::panic (PanicHandler::Panic_NoTransService);    }}IconvGNUWrapper::~IconvGNUWrapper(){}// Convert "native unicode" character into XMLChvoid    IconvGNUWrapper::mbcToXMLCh (const char *mbc, XMLCh *toRet) const{    if (fUBO == LITTLE_ENDIAN) {        if (fUChSize == sizeof(XMLCh))            *toRet = *((XMLCh*) mbc);        else if (fUChSize == 2) {            WC162XMLCh( mbc, toRet );        } else {            WC322XMLCh( mbc, toRet );        }    } else {        if (fUChSize == 2) {            IWC162XMLCh( mbc, toRet );        } else {            IWC322XMLCh( mbc, toRet );        }    }}// Convert XMLCh into "native unicode" charactervoid    IconvGNUWrapper::xmlChToMbc (XMLCh xch, char *mbc) const{    if (fUBO == LITTLE_ENDIAN) {        if (fUChSize == sizeof(XMLCh)) {            memcpy (mbc, &xch, fUChSize);            return;        }        if (fUChSize == 2) {            XMLCh2WC16( &xch, mbc );        } else {            XMLCh2WC32( &xch, mbc );        }    } else {        if (fUChSize == 2) {            IXMLCh2WC16( &xch, mbc );        } else {            IXMLCh2WC32( &xch, mbc );        }    }}// Return uppercase equivalent for XMLChXMLCh    IconvGNUWrapper::toUpper (const XMLCh ch) const{    if (ch <= 0x7F)        return toupper(ch);    char    wcbuf[fUChSize * 2];    xmlChToMbc (ch, wcbuf);    char    tmpArr[4];    char*    ptr = wcbuf;    size_t    len = fUChSize;    char    *pTmpArr = tmpArr;    size_t    bLen = 2;    ICONV_LOCK;    if (::iconv (fCDTo, &ptr, &len,         &pTmpArr, &bLen) == (size_t) -1)    return 0;    tmpArr[1] = toupper (*((unsigned char *)tmpArr));    *tmpArr = tmpArr[1];    len = 1;    pTmpArr = wcbuf;    bLen = fUChSize;    ptr = tmpArr;    if (::iconv (fCDFrom, &ptr, &len,         &pTmpArr, &bLen) == (size_t) -1)    return 0;    mbcToXMLCh (wcbuf, (XMLCh*) &ch);    return ch;}// Return lowercase equivalent for XMLChXMLCh    IconvGNUWrapper::toLower (const XMLCh ch) const{    if (ch <= 0x7F)        return tolower(ch);    char    wcbuf[fUChSize * 2];    xmlChToMbc (ch, wcbuf);    char    tmpArr[4];    char*    ptr = wcbuf;    size_t    len = fUChSize;    char    *pTmpArr = tmpArr;    size_t    bLen = 2;    ICONV_LOCK;    if (::iconv (fCDTo, &ptr, &len,         &pTmpArr, &bLen) == (size_t) -1)    return 0;    tmpArr[1] = tolower (*((unsigned char*)tmpArr));    *tmpArr = tmpArr[1];    len = 1;    pTmpArr = wcbuf;    bLen = fUChSize;    ptr = tmpArr;    if (::iconv (fCDFrom, &ptr, &len,         &pTmpArr, &bLen) == (size_t) -1)    return 0;    mbcToXMLCh (wcbuf, (XMLCh*) &ch);    return ch;}// Check if passed characters belongs to the :space: classbool    IconvGNUWrapper::isSpace(const XMLCh toCheck) const{    if (toCheck <= 0x7F)        return isspace(toCheck);    char    wcbuf[fUChSize * 2];    char    tmpArr[4];    xmlChToMbc (toCheck, wcbuf);    char*    ptr = wcbuf;    size_t    len = fUChSize;    char    *pTmpArr = tmpArr;    size_t    bLen = 2;    {        ICONV_LOCK;        if (::iconv (fCDTo, &ptr, &len,                 &pTmpArr, &bLen) == (size_t) -1)            return 0;    }    return isspace(*tmpArr);}// Fill array of XMLCh characters with data, supplyed in the array// of "native unicode" characters.XMLCh*    IconvGNUWrapper::mbsToXML(    const char*        mbs_str    ,      size_t    mbs_cnt    ,      XMLCh*    xml_str    ,      size_t    xml_cnt) const{    if (mbs_str == NULL || mbs_cnt == 0 || xml_str == NULL || xml_cnt == 0)        return NULL;    size_t    cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;    if (fUBO == LITTLE_ENDIAN) {        if (fUChSize == sizeof(XMLCh)) {            // null-transformation            memcpy (xml_str, mbs_str, fUChSize * cnt);            return xml_str;        }        if (fUChSize == 2)            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {                WC162XMLCh( mbs_str, xml_str + i);            }        else            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {                WC322XMLCh( mbs_str, xml_str + i );            }    } else {        if (fUChSize == 2)            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {                IWC162XMLCh( mbs_str, xml_str + i );            }        else            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) {                IWC322XMLCh( mbs_str, xml_str + i );            }    }    return xml_str;}// Fill array of "native unicode" characters with data, supplyed// in the array of XMLCh characters.char*    IconvGNUWrapper::xmlToMbs(    const XMLCh*    xml_str    ,      size_t    xml_cnt    ,      char*        mbs_str    ,      size_t    mbs_cnt) const{    if (mbs_str == NULL || mbs_cnt == 0 || xml_str == NULL || xml_cnt == 0)        return NULL;    size_t    cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt;    char    *toReturn = mbs_str;    if (fUBO == LITTLE_ENDIAN) {        if (fUChSize == sizeof(XMLCh)) {            // null-transformation            memcpy (mbs_str, xml_str, fUChSize * cnt);            return toReturn;        }        if (fUChSize == 2)            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {                XMLCh2WC16( xml_str, mbs_str );            }        else            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {                XMLCh2WC32( xml_str, mbs_str );            }    } else {        if (fUChSize == 2)            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {                IXMLCh2WC16( xml_str, mbs_str );            }        else            for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize, xml_str++) {                IXMLCh2WC32( xml_str, mbs_str );            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清不卡在线观看| 六月婷婷色综合| 亚洲一区日韩精品中文字幕| 日韩国产高清在线| 成人黄色综合网站| 精品久久一二三区| 一区二区欧美国产| 成人精品小蝌蚪| 精品美女在线观看| 日韩电影在线免费看| 91免费小视频| 国产精品久久久久影院色老大 | 欧美v日韩v国产v| 亚洲综合色区另类av| 丁香激情综合国产| 精品欧美乱码久久久久久1区2区| 亚洲动漫第一页| 色综合久久88色综合天天6| 国产香蕉久久精品综合网| 青青草97国产精品免费观看无弹窗版 | 婷婷开心久久网| 91福利视频久久久久| 亚洲三级小视频| 9色porny自拍视频一区二区| 欧美激情一区三区| 国产二区国产一区在线观看| 精品国产凹凸成av人网站| 美女视频第一区二区三区免费观看网站| 日本一区二区三区在线观看| 久久99日本精品| 日韩久久一区二区| 成人app下载| 国产精品伦一区二区三级视频| 国产成人免费xxxxxxxx| 久久久久国产免费免费| 国产福利一区二区三区视频| 国产欧美日韩激情| 99热在这里有精品免费| 成人免费一区二区三区视频| 91亚洲大成网污www| 亚洲精品视频免费看| 日本精品裸体写真集在线观看| 亚洲品质自拍视频网站| 欧美专区在线观看一区| 午夜成人免费视频| 欧美videos大乳护士334| 国产原创一区二区| 国产精品欧美精品| 91性感美女视频| 午夜影视日本亚洲欧洲精品| 88在线观看91蜜桃国自产| 97久久超碰精品国产| 中文字幕在线播放不卡一区| 91原创在线视频| 亚洲影院久久精品| 欧美一区二区三区公司| 国产精品99久久久久久似苏梦涵| 国产精品欧美精品| 欧美色爱综合网| 国精产品一区一区三区mba桃花| 国产日韩欧美激情| 亚洲精品在线三区| 99v久久综合狠狠综合久久| 亚洲香肠在线观看| 欧美r级在线观看| 91污片在线观看| 人禽交欧美网站| 中文字幕欧美一| 91精品国产手机| 91在线视频观看| 韩国成人精品a∨在线观看| 伊人一区二区三区| 亚洲国产电影在线观看| gogo大胆日本视频一区| 五月综合激情日本mⅴ| 国产亚洲欧美在线| 在线观看av一区| 国产福利不卡视频| 图片区小说区区亚洲影院| 国产午夜精品一区二区三区嫩草 | 99视频精品在线| 久久99精品国产麻豆不卡| 亚洲欧美日韩电影| 久久新电视剧免费观看| 在线亚洲一区二区| 国产成人在线视频网站| 日韩高清不卡一区| 亚洲精品国产视频| 国产三级一区二区三区| 欧美一级xxx| 欧美日韩中字一区| 不卡一区中文字幕| 国产伦精一区二区三区| 日本不卡视频在线| 夜夜夜精品看看| 亚洲日本一区二区| 国产精品国产精品国产专区不片| 精品免费国产二区三区 | 91蝌蚪porny九色| 国产不卡视频一区二区三区| 免费高清在线视频一区·| 亚洲国产欧美在线| 亚洲女同ⅹxx女同tv| 欧美国产精品一区| 国产欧美日本一区视频| 久久人人97超碰com| 精品欧美一区二区三区精品久久| 欧美精品在线观看播放| 欧美三区在线观看| 欧美日韩综合在线免费观看| 欧美在线影院一区二区| 欧美性色黄大片| 欧美日韩一区二区在线观看| 欧洲精品中文字幕| 久久欧美中文字幕| 欧美大片在线观看| 日韩色在线观看| 日韩一级成人av| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品国产三级国产aⅴ中文| 久久久久国产成人精品亚洲午夜| 欧美精品一区二区久久婷婷 | 成人午夜精品一区二区三区| 成人午夜av影视| av成人免费在线| 一本久久a久久免费精品不卡| 在线区一区二视频| 欧美日韩国产综合久久| 日韩一区二区麻豆国产| 26uuu成人网一区二区三区| 26uuu精品一区二区| 国产精品青草久久| 亚洲综合久久av| 蜜臀久久99精品久久久画质超高清| 奇米综合一区二区三区精品视频| 国产在线精品视频| 91最新地址在线播放| 欧洲精品视频在线观看| 欧美一区二区日韩| 久久精品视频一区二区| 亚洲精品中文在线| 欧美bbbbb| 成人小视频在线| 欧美在线观看18| www成人在线观看| 17c精品麻豆一区二区免费| 亚洲精品日韩一| 另类欧美日韩国产在线| 9人人澡人人爽人人精品| 欧美精品1区2区| 国产午夜精品一区二区三区四区| 亚洲精品v日韩精品| 麻豆精品国产传媒mv男同| 99久久99久久精品免费观看| 欧美情侣在线播放| 日韩国产高清在线| 粉嫩蜜臀av国产精品网站| 日本韩国精品在线| 国产午夜精品福利| 香蕉久久一区二区不卡无毒影院| 国产99精品视频| 欧美日韩不卡视频| 国产精品高潮呻吟久久| 美女视频免费一区| 欧亚洲嫩模精品一区三区| 久久综合久久99| 五月天一区二区三区| 97精品久久久久中文字幕 | 6080国产精品一区二区| 国产精品久久二区二区| 久久99最新地址| 欧美男同性恋视频网站| 亚洲精品亚洲人成人网在线播放| 国产激情视频一区二区在线观看| 4hu四虎永久在线影院成人| 亚洲欧美色一区| 国产+成+人+亚洲欧洲自线| 日韩丝袜情趣美女图片| 亚洲国产乱码最新视频| 91影院在线免费观看| 国产精品天天摸av网| 国产乱人伦偷精品视频免下载| 91精品综合久久久久久| 午夜亚洲福利老司机| 欧美性大战久久久久久久| 综合自拍亚洲综合图不卡区| 国产91丝袜在线播放九色| 欧美精品一区二区三区蜜桃 | 美女高潮久久久| 一本到不卡精品视频在线观看| 91官网在线观看| 欧美国产日韩一二三区| 青草国产精品久久久久久| 欧美日免费三级在线| 日韩美女视频一区二区| 国产一区二区精品在线观看| 久久精品欧美日韩精品| 日韩vs国产vs欧美| 欧美专区在线观看一区| 国产精品久久久久国产精品日日|