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

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

?? uniconv390transservice.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
      srcCount++;   } else {      srcBuf[0] = XMLCh(toCheck);   }   // Set up a temp buffer to format into. Make it more than big enough   char  tmpBuf[16];   char *tmpInPtr = (char *) srcBuf;   char *tmpOutPtr = (char *) tmpBuf;   unsigned int inByteLeft = srcCount*sizeof(XMLCh);   unsigned int outByteLeft = 16;   { // locking scope      XMLMutexLock lockConverter(&fConverter->fMutex);      retCode = uniconv(fConverter->fIconv390DescriptorTo, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);   }   if ( (retCode < 0) && (errno != E2BIG) ) {      return false;   }   return true;}// ***************************************************************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// *************** Uniconv390LCPTranscoder Class *****************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// ***************************************************************************// ---------------------------------------------------------------------------//  Uniconv390LCPTranscoder: Constructor and Destructor// ---------------------------------------------------------------------------Uniconv390LCPTranscoder::Uniconv390LCPTranscoder( uniconvconverter_t* const toAdopt) :    fConverter(toAdopt){}Uniconv390LCPTranscoder::~Uniconv390LCPTranscoder(){    // If there is a converter, clean it up   if (fConverter) {      removeConverter(fConverter);      fConverter=0;   }}// ---------------------------------------------------------------------------//  Uniconv390LCPTranscoder: calcRequiredSize//// The only way I can find to reliably determine the exact required size is to actually// transcode the string and see how long it is. Fortunately, this is only done as a last// ditch effort so it should only be used very rarely (if at all).// ---------------------------------------------------------------------------unsigned int Uniconv390LCPTranscoder::calcRequiredSize(const XMLCh* const srcText                                                       , MemoryManager* const manager){DBGPRINTF1("Uniconv390LCPTranscoder::calcRequiredSize(const XMLCh* const srcText)  \n");//printf("!!!***Uniconv390LCPTranscoder::calcRequiredSize(const XMLCh* const srcText)  \n");   int thesize=0;   if (!srcText)      return 0;   if (!*srcText)      return 0;   char * result = transcode(srcText, manager);   if (result) {      thesize = strlen(result);      manager->deallocate(result);//delete [] result;   }   return thesize;}unsigned int Uniconv390LCPTranscoder::calcRequiredSize(const char* const srcText                                                       , MemoryManager* const manager){DBGPRINTF1("Uniconv390LCPTranscoder::calcRequiredSize(const char* const srcText)  \n");//printf("!!!***Uniconv390LCPTranscoder::calcRequiredSize(const char* const srcText)  \n");   int thesize=0;   if (!srcText)      return 0;   if (!*srcText)      return 0;   XMLCh * result = transcode(srcText, manager);   if (result) {      thesize = getWideCharLength(result);      manager->deallocate(result);//delete [] result;   }DBGPRINTF2("Uniconv390LCPTranscoder::calcRequiredSize(const char* const srcText) %d  \n",thesize);   return thesize;}// ---------------------------------------------------------------------------//  Uniconv390LCPTranscoder: transcode//// Now what follows are various methods to transcode to/from unicode.// ---------------------------------------------------------------------------char* Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode){//printf("Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode) ");//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorTo);   if (!toTranscode)      return 0;   char* retVal = 0;    // find out the length of the source and use this as an estimate for the needed buffer length.   unsigned int  wLent = getWideCharLength(toTranscode);   if (wLent == 0) {      retVal = new char[1];      retVal[0] = 0;      return retVal;   }   retVal = new char[wLent * 2 + 1]; // get double just to be sure.   while (true) {      int retCode;      char *tmpInPtr = (char*) toTranscode;      char *tmpOutPtr = (char*) retVal;      unsigned int inByteLeft = wLent*sizeof(XMLCh);      unsigned int outByteLeft = wLent*sizeof(XMLCh);//printf("!!!transcode len=%d\n",wLent);      { // Locking scope         XMLMutexLock lockConverter(&fConverter->fMutex);         retCode = uniconv(fConverter->fIconv390DescriptorTo, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);      }//printf("!!!transcode uniconv finished rc=%d errno=%d\n",retCode,errno);      // If the data does not fit into our estimation of the buffer size, then delete the buffer,      // double the estimated length and try again.      if ( ((retCode < 0) && (errno == E2BIG)) || (outByteLeft == 0) ) {//printf("!!!Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode):Retrying with a bigger buffer.......\n");         delete [] retVal;         wLent*=2;         retVal = new char[wLent*sizeof(XMLCh) + 1];      }      // If uniconv doesn't complete for any other reason, then return failure.      else if (retCode < 0) {         return 0;      }      // it was successful so break out of the loop      else {         *tmpOutPtr = 0x00;         break;      }   }//printf("Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode):%s\n",retVal);   return retVal;}char* Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode,                                         MemoryManager* const manager){//printf("Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode) ");//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorTo);   if (!toTranscode)      return 0;   char* retVal = 0;    // find out the length of the source and use this as an estimate for the needed buffer length.   unsigned int  wLent = getWideCharLength(toTranscode);   if (wLent == 0) {      retVal = (char*) manager->allocate(sizeof(char));//new char[1];      retVal[0] = 0;      return retVal;   }   retVal = (char*) manager->allocate((wLent * 2 + 1) * sizeof(char));//new char[wLent * 2 + 1]; // get double just to be sure.   while (true) {      int retCode;      char *tmpInPtr = (char*) toTranscode;      char *tmpOutPtr = (char*) retVal;      unsigned int inByteLeft = wLent*sizeof(XMLCh);      unsigned int outByteLeft = wLent*sizeof(XMLCh);//printf("!!!transcode len=%d\n",wLent);      { // Locking scope         XMLMutexLock lockConverter(&fConverter->fMutex);         retCode = uniconv(fConverter->fIconv390DescriptorTo, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);      }//printf("!!!transcode uniconv finished rc=%d errno=%d\n",retCode,errno);      // If the data does not fit into our estimation of the buffer size, then delete the buffer,      // double the estimated length and try again.      if ( ((retCode < 0) && (errno == E2BIG)) || (outByteLeft == 0) ) {//printf("!!!Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode):Retrying with a bigger buffer.......\n");         manager->deallocate(retVal);//delete [] retVal;         wLent*=2;         retVal = (char*) manager->allocate         (             (wLent*sizeof(XMLCh) + 1) * sizeof(char)         );//new char[wLent*sizeof(XMLCh) + 1];      }      // If uniconv doesn't complete for any other reason, then return failure.      else if (retCode < 0) {         return 0;      }      // it was successful so break out of the loop      else {         *tmpOutPtr = 0x00;         break;      }   }//printf("Uniconv390LCPTranscoder::transcode(const XMLCh* const toTranscode):%s\n",retVal);   return retVal;}XMLCh* Uniconv390LCPTranscoder::transcode(const char* const toTranscode){DBGPRINTF2("Uniconv390LCPTranscoder::transcode(const char* const toTranscode):%s \n",toTranscode);//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorFrom);   if (!toTranscode)      return 0;   XMLCh* retVal = 0;   const unsigned int len = strlen(toTranscode);   retVal = new XMLCh[len + 1]; // +1 is for the null terminator!   if (len == 0) {      retVal[0] = 0;      return retVal;   }   int retCode;   char *tmpInPtr = (char*) toTranscode;   char *tmpOutPtr = (char*) retVal;   unsigned int inByteLeft = len;   unsigned int outByteLeft = len*sizeof(XMLCh);   { // locking scope      XMLMutexLock lockConverter(&fConverter->fMutex);      retCode = uniconv(fConverter->fIconv390DescriptorFrom, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);   }   // Because we check the length in the beginning, and we make sure the output buffer   // is big enough, uniconv should complete the transcoding. If it doesn't for any reason, then   // return failure.   if (retCode < 0) {      delete [] retVal;      return 0;   }   *tmpOutPtr = 0x00;   *(tmpOutPtr+1) = 0x00;   return retVal;}XMLCh* Uniconv390LCPTranscoder::transcode(const char* const toTranscode,                                          MemoryManager* const manager){DBGPRINTF2("Uniconv390LCPTranscoder::transcode(const char* const toTranscode):%s \n",toTranscode);//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorFrom);   if (!toTranscode)      return 0;   XMLCh* retVal = 0;   const unsigned int len = strlen(toTranscode);   retVal = (XMLCh*) manager->allocate((len + 1) * sizeof(XMLCh));//new XMLCh[len + 1]; // +1 is for the null terminator!   if (len == 0) {      retVal[0] = 0;      return retVal;   }   int retCode;   char *tmpInPtr = (char*) toTranscode;   char *tmpOutPtr = (char*) retVal;   unsigned int inByteLeft = len;   unsigned int outByteLeft = len*sizeof(XMLCh);   { // locking scope      XMLMutexLock lockConverter(&fConverter->fMutex);      retCode = uniconv(fConverter->fIconv390DescriptorFrom, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);   }   // Because we check the length in the beginning, and we make sure the output buffer   // is big enough, uniconv should complete the transcoding. If it doesn't for any reason, then   // return failure.   if (retCode < 0) {      manager->deallocate(retVal);//delete [] retVal;      return 0;   }   *tmpOutPtr = 0x00;   *(tmpOutPtr+1) = 0x00;   return retVal;}bool Uniconv390LCPTranscoder::transcode(const  char* const     toTranscode                                ,       XMLCh* const    toFill                                , const unsigned int    maxChars                                , MemoryManager* const  manager){DBGPRINTF1("Uniconv390LCPTranscoder::transcode(const  char* const     toTranscode, etc.... \n");//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorFrom);    // Check for a couple of psycho corner cases   if (!toTranscode || !maxChars) {      toFill[0] = 0;      return true;   }   unsigned int  Lent = strlen(toTranscode);   if (Lent == 0) {      toFill[0] = 0;      return true;   }   int retCode;   char *tmpInPtr = (char*) toTranscode;   char *tmpOutPtr = (char*) toFill;   unsigned int inByteLeft = Lent;   unsigned int outByteLeft = maxChars*2;   { // locking scope      XMLMutexLock lockConverter(&fConverter->fMutex);      retCode = uniconv(fConverter->fIconv390DescriptorFrom, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);   }   // Because we check the length in the beginning, and the caller makes sure that the output buffer   // is big enough, uniconv should complete the transcoding. If it doesn't for any reason, then   // return failure.   if (retCode < 0) {      return false;   }   *tmpOutPtr = 0x00;   *(tmpOutPtr+1) = 0x00;   return true;}bool Uniconv390LCPTranscoder::transcode(   const   XMLCh* const    toTranscode                                    ,       char* const     toFill                                    , const unsigned int    maxBytes                                    , MemoryManager* const  manager){DBGPRINTF1("Uniconv390LCPTranscoder::transcode(const  XMLCh* const     toTranscode, etc.... \n");//printf("transcode handle=%x\n",fConverter->fIconv390DescriptorTo);   // Watch for a couple of pyscho corner cases   if (!toTranscode || !maxBytes) {      toFill[0] = 0;      return true;   }   //-------------------   unsigned int  wLent = getWideCharLength(toTranscode);   if (wLent == 0) {      toFill[0] = 0;      return true;   }   int retCode;   char *tmpInPtr = (char*) toTranscode;   char *tmpOutPtr = (char*) toFill;   unsigned int inByteLeft = wLent*sizeof(XMLCh);   unsigned int outByteLeft = maxBytes;   { // locking scope      XMLMutexLock lockConverter(&fConverter->fMutex);      retCode = uniconv(fConverter->fIconv390DescriptorTo, &tmpInPtr, &inByteLeft, &tmpOutPtr, &outByteLeft);   }   // Because we check the length in the beginning, and the caller makes sure that the output buffer   // is big enough, uniconv should complete the transcoding. If it doesn't for any reason, then   // return failure.   if (retCode < 0) {      return false;   }   *tmpOutPtr = 0x00;   return true;}XERCES_CPP_NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级日韩一级| 色哟哟国产精品免费观看| 国产精品盗摄一区二区三区| 欧美日韩中文另类| 国产成人在线观看| 亚洲成人av在线电影| 国产欧美日韩综合精品一区二区 | 视频在线观看91| 国产精品毛片无遮挡高清| 69p69国产精品| av电影天堂一区二区在线| 国产一区二区导航在线播放| 亚洲成a人v欧美综合天堂| 国产精品拍天天在线| 精品国产一区二区三区久久影院 | 国产亚洲视频系列| 在线播放91灌醉迷j高跟美女| av亚洲精华国产精华精华| 韩国三级在线一区| 日日夜夜精品免费视频| 亚洲同性同志一二三专区| 久久人人97超碰com| 欧美二区三区91| 在线观看av不卡| 成人av在线网站| 国产91综合一区在线观看| 麻豆国产精品官网| 婷婷综合另类小说色区| 亚洲激情欧美激情| 亚洲欧美乱综合| 中文字幕一区二区不卡| 国产精品女上位| 国产日韩欧美精品综合| 久久精品亚洲乱码伦伦中文| 亚洲精品一线二线三线| 欧美精品一区二区三区蜜臀| 91麻豆精品国产自产在线观看一区 | 亚洲综合精品自拍| 亚洲日本在线天堂| 亚洲欧美一区二区久久| 综合网在线视频| 亚洲精品一二三区| 亚洲一区二区三区视频在线 | 国产又黄又大久久| 九九九久久久精品| 久久成人18免费观看| 国产一区二三区| 国产成人鲁色资源国产91色综| 国内外成人在线视频| 国产精品91一区二区| 成人动漫一区二区| 91麻豆精品在线观看| 欧美亚洲一区二区在线观看| 欧美美女网站色| 欧美一区二区久久久| 精品国产伦理网| 久久久久97国产精华液好用吗| 久久―日本道色综合久久| 国产精品视频yy9299一区| 自拍视频在线观看一区二区| 一区二区三区在线视频免费观看| 亚洲一区中文在线| 毛片av一区二区三区| 国产精品一区三区| 99热精品国产| 欧美精品一二三区| 26uuu久久天堂性欧美| 日本一区二区成人| 亚洲国产视频a| 久久精品国产澳门| www.亚洲精品| 欧美日韩电影一区| 久久美女艺术照精彩视频福利播放| 欧美韩国日本综合| 亚洲国产精品天堂| 国产乱人伦偷精品视频不卡| av男人天堂一区| 9191成人精品久久| 国产女人18毛片水真多成人如厕 | 97精品电影院| 欧美丰满美乳xxx高潮www| 久久精品视频网| 亚洲影院久久精品| 国产九色sp调教91| 欧美中文字幕久久| 欧美国产精品中文字幕| 亚洲第一搞黄网站| 成人一级黄色片| 欧美肥妇free| 亚洲欧洲综合另类在线| 精品一区二区三区免费视频| 99v久久综合狠狠综合久久| 欧美一区二区三区不卡| 国产精品污www在线观看| 日日摸夜夜添夜夜添国产精品 | 亚洲男人的天堂在线aⅴ视频| 日韩高清电影一区| 成人avav在线| 精品国产乱码久久久久久浪潮 | 成人三级在线视频| 日韩一区二区三区av| 亚洲久本草在线中文字幕| 久久国产乱子精品免费女| 色狠狠色狠狠综合| 国产亚洲va综合人人澡精品| 日韩精品午夜视频| 欧美优质美女网站| 国产精品对白交换视频| 精品一区二区三区免费播放| 欧美日韩亚洲综合一区| 国产精品女同互慰在线看| 黄一区二区三区| 欧美精品久久久久久久多人混战 | 97se亚洲国产综合自在线| 久久亚洲一级片| 免费欧美日韩国产三级电影| 欧美中文字幕一区二区三区| 亚洲欧美日韩国产一区二区三区| 国产真实乱子伦精品视频| 日韩欧美在线影院| 午夜不卡av免费| 欧美丝袜丝nylons| 一区二区在线观看免费| av在线不卡电影| 久久这里只精品最新地址| 六月丁香婷婷久久| 欧美一区二区三区四区在线观看| 亚洲一二三区在线观看| 欧美综合久久久| 一区二区理论电影在线观看| 一本色道综合亚洲| 亚洲情趣在线观看| 日本韩国欧美国产| 玉米视频成人免费看| 91免费版pro下载短视频| 亚洲婷婷在线视频| 91理论电影在线观看| 一区二区在线观看不卡| 在线观看不卡视频| 五月激情六月综合| 欧美一区在线视频| 蜜桃av噜噜一区| 精品奇米国产一区二区三区| 麻豆国产精品一区二区三区 | 国产成人高清视频| 久久精子c满五个校花| 国产伦理精品不卡| 中文字幕乱码亚洲精品一区| 国产99久久久精品| 亚洲色图清纯唯美| 色成人在线视频| 午夜亚洲福利老司机| 欧美日韩国产首页| 免费成人av在线播放| 久久蜜桃一区二区| av高清久久久| 亚洲最大成人综合| 91精品国产综合久久精品麻豆| 肉丝袜脚交视频一区二区| 日韩精品一区二区三区视频播放 | 精品一区二区在线观看| 欧美精品一区二区在线播放 | 顶级嫩模精品视频在线看| 亚洲欧美激情小说另类| 欧美探花视频资源| 经典三级在线一区| 国产三区在线成人av| 99国产精品久久久久久久久久| jlzzjlzz亚洲日本少妇| 亚洲一二三级电影| 亚洲精品在线免费观看视频| 99久久精品国产一区二区三区 | 性做久久久久久免费观看| 日韩欧美黄色影院| 成人亚洲精品久久久久软件| 亚洲综合久久久久| 国产日韩一级二级三级| 91高清视频免费看| 精品中文av资源站在线观看| 国产精品二三区| 日韩精品一区二区三区蜜臀 | 日本午夜一区二区| 亚洲国产精品二十页| 欧美日韩一区二区三区高清| 国产乱码精品一区二区三区忘忧草 | 欧美午夜寂寞影院| 国模大尺度一区二区三区| 伊人色综合久久天天人手人婷| 欧美一级高清片| 一本到一区二区三区| 久久精品国产**网站演员| 日韩伦理免费电影| 日韩欧美二区三区| 色8久久人人97超碰香蕉987| 精品综合久久久久久8888| 亚洲一区二区美女| 国产精品美日韩| 精品蜜桃在线看| 欧美日韩在线直播| bt欧美亚洲午夜电影天堂|