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

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

?? uniconv390transservice.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
/* * 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. *//* * $Id: Uniconv390TransService.cpp,v 1.8 2004/09/08 13:56:46 peiyongz Exp $ */// ---------------------------------------------------------------------------//  Includes// ---------------------------------------------------------------------------#include <xercesc/util/Janitor.hpp>#include <xercesc/util/TranscodingException.hpp>#include <xercesc/util/RefHashTableOf.hpp>#include <xercesc/util/RefVectorOf.hpp>#include <xercesc/util/Transcoders/Uniconv390/XML88591Transcoder390.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLASCIITranscoder390.hpp>#include <xercesc/util/XMLChTranscoder.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLEBCDICTranscoder390.hpp>#include <xercesc/util/XMLUCS4Transcoder.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLIBM1047Transcoder390.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLIBM1140Transcoder390.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.hpp>#include <xercesc/util/XMLUTF16Transcoder.hpp>#include <xercesc/util/Transcoders/Uniconv390/XMLWin1252Transcoder390.hpp>#include <xercesc/util/TransENameMap.hpp>#include <xercesc/util/XMLUni.hpp>#include <xercesc/util/XMLString.hpp>#include <xercesc/util/XMLUniDefs.hpp>#include <xercesc/util/Transcoders/ICU/ICUTransService.hpp>#include "Uniconv390TransService.hpp"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <langinfo.h>#include <locale.h>#include <xercesc/util/regx/XMLUniCharacter.hpp>#include <xercesc/util/XML88591Transcoder.hpp>#include <xercesc/util/XMLASCIITranscoder.hpp>#include <xercesc/util/XMLChTranscoder.hpp>#include <xercesc/util/XMLEBCDICTranscoder.hpp>#include <xercesc/util/XMLIBM1047Transcoder.hpp>#include <xercesc/util/XMLIBM1140Transcoder.hpp>#include <xercesc/util/XMLUCS4Transcoder.hpp>#include <xercesc/util/XMLUTF8Transcoder.hpp>#include <xercesc/util/XMLUTF16Transcoder.hpp>#include <xercesc/util/XMLWin1252Transcoder.hpp>XERCES_CPP_NAMESPACE_BEGIN// debug printfs.... I'll take these out after function test./*#define DBGPRINTF1(a) {}#define DBGPRINTF2(a,b) {}#define DBGPRINTF3(a,b,c) {}#define DBGPRINTF4(a,b,c,d) {}#define DBGPRINTF5(a,b,c,d,e) {}#define DBGPRINTF6(a,b,c,d,e,f) {}#define DBGPRINTF7(a,b,c,d,e,f,g) {}*/#define DBGPRINTF1(a) {if (gViewDebug) printf(a);}#define DBGPRINTF2(a,b) {if (gViewDebug) printf(a,b);}#define DBGPRINTF3(a,b,c) {if (gViewDebug) printf(a,b,c);}#define DBGPRINTF4(a,b,c,d) {if (gViewDebug) printf(a,b,c,d);}#define DBGPRINTF5(a,b,c,d,e) {if (gViewDebug) printf(a,b,c,d,e);}#define DBGPRINTF6(a,b,c,d,e,f) {if (gViewDebug) printf(a,b,c,d,e,f);}#define DBGPRINTF7(a,b,c,d,e,f,g) {if (gViewDebug) printf(a,b,c,d,e,f,g);}// ---------------------------------------------------------------------------//  Local, const data// ---------------------------------------------------------------------------static const XMLCh gMyServiceId[] ={    chLatin_U, chLatin_N, chLatin_I, chLatin_C, chLatin_O, chLatin_N, chLatin_V, chNull};// These will hold the environment variable settings.bool gViewTranscoder;static bool gViewDebug;static int gForceTranscode;#define NO_FORCE 0#define MUST_USE_ICU  1#define MUST_USE_UNICONV  2// ---------------------------------------------------------------------------//  Local functions// ---------------------------------------------------------------------------// This is a local service routine to figure out the number of characters (not bytes)// in a unicode string.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;}// This is a local service routine to open a transcoder to/from unicode.static uniconvconverter * addConverter(const char* const EncodingName                             ,XMLTransService::Codes& resValue){DBGPRINTF1("Add converter\n");   uniconvconverter *tconv = new uniconvconverter;   tconv->fIconv390DescriptorFrom = uniconv_open("UCS-2",EncodingName);   if (tconv->fIconv390DescriptorFrom <= (uniconv_t)(0)) {DBGPRINTF2("uniconv_open from failed rc=%d\n",(int)tconv->fIconv390DescriptorFrom);      resValue = XMLTransService::UnsupportedEncoding;      delete tconv;      return 0;   }   tconv->fIconv390DescriptorTo = uniconv_open(EncodingName,"UCS-2");   if (tconv->fIconv390DescriptorTo <= (uniconv_t)(0)) {DBGPRINTF2("uniconv_open to failed rc=%d\n",(int)tconv->fIconv390DescriptorTo);      resValue = XMLTransService::UnsupportedEncoding;      uniconv_close(tconv->fIconv390DescriptorFrom);      delete tconv;      return 0;   }   return tconv;}// This is a local service routine to close the transcoders.static void removeConverter(uniconvconverter* const converter){DBGPRINTF1("remove converter\n");   if (converter) {      uniconv_close(converter->fIconv390DescriptorFrom);      uniconv_close(converter->fIconv390DescriptorTo);      delete converter;   }}// ***************************************************************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// *************** Uniconv390TransService Class ******************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// ---------------------------------------------------------------------------//  Uniconv390TransService: Constructor and Destructor// ---------------------------------------------------------------------------Uniconv390TransService::Uniconv390TransService(){   fCaseConverter = new uniconvcaseconverter;   fCaseConverter->ftoupperhand=UNICONV_NOHANDLE;   fCaseConverter->ftolowerhand=UNICONV_NOHANDLE;   char * myenviron = getenv("_IXM_FORCE_CONVERSION");   gForceTranscode = NO_FORCE;   if ( !strcmp(myenviron,"USE_ICU") )      gForceTranscode = MUST_USE_ICU;   else if ( !strcmp(myenviron,"USE_NATIVE") )      gForceTranscode = MUST_USE_UNICONV;  DBGPRINTF3("FORCE PARM=%s %d\n",myenviron,gForceTranscode);   fICUService = new ICUTransService;   gViewTranscoder = false;   if ( !strcmp(getenv("_IXM_VIEW_CONVERSION"),"YES") )      gViewTranscoder = true;   gViewDebug = false;   if ( !strcmp(getenv("_IXM_DEBUG_CONVERSION"),"YES") )      gViewDebug = true;}Uniconv390TransService::~Uniconv390TransService(){   if ( (fCaseConverter->ftoupperhand!=UNICONV_NOHANDLE) &&        (fCaseConverter->ftoupperhand!=UNICONV_ERROR) ) {      uniconv_toupper_close(fCaseConverter->ftoupperhand);      fCaseConverter->ftoupperhand=UNICONV_NOHANDLE;   }   if ( (fCaseConverter->ftolowerhand!=UNICONV_NOHANDLE) &&        (fCaseConverter->ftolowerhand!=UNICONV_ERROR) ) {      uniconv_tolower_close(fCaseConverter->ftolowerhand);      fCaseConverter->ftolowerhand=UNICONV_NOHANDLE;   }   if (fCaseConverter) {      delete [] fCaseConverter;      fCaseConverter=0;   }   if (fICUService) {    delete  fICUService;   }}// ---------------------------------------------------------------------------//  Uniconv390TransService: The virtual transcoding service API// ---------------------------------------------------------------------------int Uniconv390TransService::compareIString(const   XMLCh* const    comp1                                    , const XMLCh* const    comp2){//char localname1[500];//XMLString::transcode(comp1,localname1,400);//char localname2[500];//XMLString::transcode(comp2,localname2,400);//DBGPRINTF3("comparing %s %s \n",localname1,localname2);//printf("toupper handle=%x\n",fCaseConverter->ftoupperhand);   if (fCaseConverter->ftoupperhand!=UNICONV_ERROR) {      const XMLCh* psz1 = comp1;      const XMLCh* psz2 = comp2;      XMLCh tmp1;      XMLCh tmp2;      XMLMutexLock lockcaser(&fCaseConverter->fcaseMutex);      if (fCaseConverter->ftoupperhand==UNICONV_NOHANDLE) {         fCaseConverter->ftoupperhand=uniconv_toupper_open();      }      unsigned int curCount = 0;      while (fCaseConverter->ftoupperhand!=UNICONV_ERROR)      {         tmp1 = uniconv_caseit(fCaseConverter->ftoupperhand,*psz1);         if (errno==0)            tmp2 = uniconv_caseit(fCaseConverter->ftoupperhand,*psz2);         if (errno) {            uniconv_toupper_close(fCaseConverter->ftoupperhand);            fCaseConverter->ftoupperhand=UNICONV_ERROR;            break;         }         //         //  If an inequality, then return the difference.         //         if (tmp1 != tmp2)            return int(*psz1) - int(*psz2);         // If either has ended, then they both ended, so equal         if (!*psz1 || !*psz2)            break;         // Move upwards for the next round         psz1++;         psz2++;      }   }   // check if unicode services does not support upper casing again, then call ICU.   if (fCaseConverter->ftoupperhand == UNICONV_ERROR) {      return fICUService->compareIString(comp1,comp2);   }   return 0;}int Uniconv390TransService::compareNIString(const  XMLCh* const    comp1                                    , const XMLCh* const    comp2                                    , const unsigned int    maxChars){//char localname1[500];//XMLString::transcode(comp1,localname1,400);//char localname2[500];//XMLString::transcode(comp2,localname2,400);//DBGPRINTF3("comparing NI %s %s \n",localname1,localname2);//printf("toupper handle=%x\n",fCaseConverter->ftoupperhand);//printf("!!!***comparing NI %s %s\n",localname1,localname2);   if (fCaseConverter->ftoupperhand!=UNICONV_ERROR) {      const XMLCh* psz1 = comp1;      const XMLCh* psz2 = comp2;      XMLCh tmp1;      XMLCh tmp2;      XMLMutexLock lockcaser(&fCaseConverter->fcaseMutex);      if (fCaseConverter->ftoupperhand==UNICONV_NOHANDLE) {         fCaseConverter->ftoupperhand=uniconv_toupper_open();      }      unsigned int curCount = 0;      while (fCaseConverter->ftoupperhand!=UNICONV_ERROR) {         tmp1 = uniconv_caseit(fCaseConverter->ftoupperhand,*psz1);         if (errno==0)            tmp2 = uniconv_caseit(fCaseConverter->ftoupperhand,*psz2);         if (errno) {            uniconv_toupper_close(fCaseConverter->ftoupperhand);            fCaseConverter->ftoupperhand=UNICONV_ERROR;            break;         }         //         //  If an inequality, then return the difference.         //         if (tmp1 != tmp2)            return int(*psz1) - int(*psz2);         // If either ended, then both ended, so equal         if (!*psz1 || !*psz2)            break;         // Move upwards to next chars         psz1++;         psz2++;         //         //  Bump the count of chars done. If it equals the count then we         //  are equal for the requested count, so break out and return         //  equal.         //         curCount++;         if (maxChars == curCount)            break;      }   }   // check if unicode services does not support upper casing, then call ICU.   if (fCaseConverter->ftoupperhand == UNICONV_ERROR) {      return fICUService->compareNIString(comp1,comp2,maxChars);   }   return 0;}const XMLCh* Uniconv390TransService::getId() const{   return gMyServiceId;}bool Uniconv390TransService::isSpace(const XMLCh toCheck) const{DBGPRINTF2("isspace checking %x\n",toCheck);   unsigned short chartype = XMLUniCharacter::getType(toCheck);   if ( (chartype == XMLUniCharacter::SPACE_SEPARATOR) ||        (chartype == XMLUniCharacter::LINE_SEPARATOR)   ||        (chartype == XMLUniCharacter::PARAGRAPH_SEPARATOR) )      return true;   else      return false;}bool Uniconv390TransService::supportsSrcOfs() const{   return false;}void Uniconv390TransService::upperCase(XMLCh* const toUpperCase) const{//char localname1[500];//XMLString::transcode(toUpperCase,localname1,400);//DBGPRINTF2("upper casing %s \n",localname1);//printf("toupper handle=%x\n",fCaseConverter->ftoupperhand);   if (fCaseConverter->ftoupperhand!=UNICONV_ERROR) {      XMLCh* outPtr = toUpperCase;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费在线观看不卡| 欧美极品美女视频| 亚洲精品第1页| 91老司机福利 在线| 国产精品久久久久久久裸模| 91在线视频在线| 亚洲香蕉伊在人在线观| 91精品久久久久久久久99蜜臂| 蜜臀久久久99精品久久久久久| 亚洲精品在线免费观看视频| 高清av一区二区| 一区二区三区在线播| 欧美卡1卡2卡| 国产成人综合在线| 一区二区三区四区在线播放| 在线播放91灌醉迷j高跟美女| 久久97超碰色| 最新热久久免费视频| 欧美日本一区二区| 国产成人在线免费| 亚洲一区在线观看网站| 日韩一区二区精品| 成人精品gif动图一区| 精品国产乱码91久久久久久网站| 丝袜脚交一区二区| 这里是久久伊人| 国产v综合v亚洲欧| 欧美日韩精品高清| 亚洲va国产天堂va久久en| 日韩免费一区二区三区在线播放| 成人免费看视频| 日本午夜精品一区二区三区电影| 国产精品久久午夜夜伦鲁鲁| 欧美一区三区二区| 成年人午夜久久久| 九九九久久久精品| 亚洲一区在线观看免费 | 洋洋av久久久久久久一区| 欧美一区二区三区四区高清| 不卡免费追剧大全电视剧网站| 日本伊人精品一区二区三区观看方式| 国产丝袜欧美中文另类| 91精品国产手机| 欧美激情一区不卡| 91视频国产观看| 精品在线免费观看| 夜夜精品视频一区二区 | 久久久久88色偷偷免费| 欧美在线综合视频| 成人av网址在线观看| 久久99国产精品免费| 精品欧美一区二区三区精品久久| 毛片一区二区三区| 一区二区三区免费在线观看| 欧美国产精品劲爆| 精品国产一区久久| 91精品中文字幕一区二区三区| 色偷偷一区二区三区| zzijzzij亚洲日本少妇熟睡| 国产精品影视网| 激情图区综合网| 奇米在线7777在线精品| 性做久久久久久免费观看欧美| 亚洲日本在线看| 国产精品每日更新在线播放网址| 久久精品视频一区| 欧美精品一区二区三区蜜桃视频 | av电影一区二区| 丰满亚洲少妇av| 福利电影一区二区| 国产成人免费xxxxxxxx| 国产成人夜色高潮福利影视| 黄一区二区三区| 国产综合成人久久大片91| 老司机午夜精品99久久| 久久99精品久久久久久| 激情综合网最新| 国产一区二区伦理片| 国产一区二区在线观看免费| 国产在线一区二区| 国产成人丝袜美腿| 成人av在线看| 在线精品亚洲一区二区不卡| 欧美自拍偷拍一区| 欧美日韩一区三区四区| 91国偷自产一区二区三区观看 | 看国产成人h片视频| 日韩精品久久久久久| 日本成人中文字幕| 国产综合成人久久大片91| 国产精品18久久久久久vr| 国产69精品久久久久毛片| 成人av片在线观看| 久久精品亚洲精品国产欧美kt∨| 欧美一区二区福利视频| 精品乱人伦小说| 国产欧美精品一区| 亚洲精品自拍动漫在线| 亚洲电影中文字幕在线观看| 男女视频一区二区| 国产精品系列在线观看| 色素色在线综合| 欧美一区二区三区视频免费播放| 久久久天堂av| 亚洲精品美腿丝袜| 久久国内精品视频| 不卡欧美aaaaa| 欧美一区二区三区视频免费播放| 久久午夜老司机| 亚洲精品美腿丝袜| 久久超碰97人人做人人爱| 99久久婷婷国产综合精品| 7777精品伊人久久久大香线蕉| 久久亚洲春色中文字幕久久久| 综合久久给合久久狠狠狠97色 | 欧美亚一区二区| 久久综合狠狠综合久久激情 | 99re免费视频精品全部| 久88久久88久久久| 高清国产一区二区| 欧美精选午夜久久久乱码6080| 久久久亚洲精华液精华液精华液| 亚洲免费视频中文字幕| 麻豆91在线播放| 91网站在线观看视频| xnxx国产精品| 亚洲国产日韩av| 成人性生交大片免费看在线播放| 欧美肥妇bbw| 成人欧美一区二区三区视频网页| 久草精品在线观看| 欧美日精品一区视频| 中文字幕一区在线观看视频| 免费成人深夜小野草| 欧美亚洲愉拍一区二区| 国产精品麻豆一区二区 | 亚洲国产中文字幕在线视频综合| 国产一区二区三区四区五区入口| 欧美亚洲综合久久| 中文字幕日本乱码精品影院| 韩国欧美一区二区| 欧美一区二区精品久久911| 亚洲精品日韩专区silk | 色先锋资源久久综合| 国产性色一区二区| 精品在线视频一区| 日韩三级免费观看| 性久久久久久久| 欧美亚洲国产一区二区三区| 亚洲日本青草视频在线怡红院| 国产·精品毛片| 久久久久久久久久久久久久久99 | 日韩激情av在线| 色猫猫国产区一区二在线视频| 中文一区在线播放| 国产成人一区在线| 久久久久九九视频| 国产最新精品免费| 2021中文字幕一区亚洲| 国产一区二三区| 奇米精品一区二区三区在线观看 | 欧美人xxxx| 亚洲国产精品久久久久婷婷884| 99久久99久久久精品齐齐| 国产精品久久久久久久久动漫| 国产成人亚洲综合a∨猫咪| 久久久99精品久久| 国产成人av电影在线播放| 国产视频一区二区三区在线观看| 国产一区二区三区在线观看免费 | 欧美优质美女网站| 亚洲一区二区三区四区中文字幕| 91精彩视频在线| 亚洲国产精品嫩草影院| 欧美高清视频不卡网| 天天色天天操综合| 欧美va日韩va| 国产一区二区三区在线观看免费视频| 久久久久亚洲蜜桃| 99久久婷婷国产综合精品电影| 亚洲精品ww久久久久久p站| 在线精品视频小说1| 日本欧美一区二区三区| 欧美成人a视频| 成人一区二区视频| 亚洲综合在线观看视频| 欧美乱妇23p| 国产真实乱偷精品视频免| 国产人妖乱国产精品人妖| 91在线观看免费视频| 亚洲伊人色欲综合网| 精品久久久久一区二区国产| 国产成人亚洲综合a∨婷婷| 亚洲色欲色欲www| 欧美丝袜自拍制服另类| 久久精品国产亚洲高清剧情介绍| 国产肉丝袜一区二区| 欧美性受极品xxxx喷水| 久久成人免费网站| 亚洲欧美激情一区二区|