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

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

?? os400platformutils.cpp

?? IBM的解析xml的工具Xerces的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    if (!retPath)    {		ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager);    }    return XMLString::transcode(absPath, manager);}bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck                                  , MemoryManager* const manager){    // Check for pathological case of empty path    if (!toCheck[0])        return false;    //    //  If it starts with a slash, then it cannot be relative. This covers    //  both something like "\Test\File.xml" and an NT Lan type remote path    //  that starts with a node like "\\MyNode\Test\File.xml".    //    if (*toCheck == chForwardSlash)        return false;    // Else assume its a relative path    return true;}XMLCh* XMLPlatformUtils::getCurrentDirectory(MemoryManager* const manager){    char  dirBuf[PATH_MAX + 2];    char  *curDir = getcwd(&dirBuf[0], PATH_MAX + 1);    if (!curDir)    {        ThrowXMLwithMemMgr(XMLPlatformUtilsException,                 XMLExcepts::File_CouldNotGetBasePathName, manager);    }    return XMLString::transcode(curDir, manager);}inline bool XMLPlatformUtils::isAnySlash(XMLCh c) {    return ( chBackSlash == c || chForwardSlash == c);}void send_message (char * text, char * messageid, char type){           short textsize;           char* buffer;           char* anchor;           char* id;           char message_id[8] = "CPF9897";/* id for raw txt                                             message                */           char message_file_name[21];           char message_type[11] ="*DIAG     ";/* send diagnostic                                                           message   */           char call_stack[11] ="*         " ;/* current callstack*/           int call_stack_counter= 0;/* sent to current call stack */           char message_key[4]; /* return value - not used          */            struct {             int bytes_available;             int bytes_used;             char exception_id[7];             char reserved;             char exception_data[1];                    } error_code;           int msg_size;          char* msg_type;         error_code.bytes_available = sizeof(error_code);/* check input parameters and set up the message information */         if (messageid != 0)  /* was a message id passed   */	 {           if (strncmp(messageid,"CPF",3) &&               strncmp(messageid,"CPE",3))             strcpy(message_file_name,"QXMLMSG   *LIBL     ");           else             strcpy(message_file_name,"QCPFMSG   QSYS      ");           id = messageid; /* yes - use the id, will be                           in QCPFMSG                              */	 }         else  /* just use what we have for immediate text          */	 {           id = &message_id[0];           strcpy(message_file_name,"QCPFMSG   QSYS      ");	 }         if (type == 'e')  /* is this the terminating exception     */              msg_type = "*COMP      ";/* set it as completion      */         else            /* currently all other messages are                             diagnostics                             */              msg_type = "*DIAG      ";         if (text != 0)                  /* was a text field passed           */         {          textsize = strlen(text);          msg_size = textsize + sizeof(short);          buffer = (char*)malloc(msg_size);          anchor = buffer;          memcpy(buffer, (void*)&textsize, sizeof(short));          buffer +=sizeof(short);          memcpy(buffer, text, textsize);         }         else           msg_size = 0;         #pragma exception_handler(jsendprob, 0, _C1_ALL, _C2_ALL,_CTLA_HANDLE)              QMHSNDPM((char *)id,&message_file_name,anchor,                     msg_size,(char*)msg_type,(char*)&call_stack,                     call_stack_counter,&message_key,&error_code);   jsendprob:#pragma disable_handler    return ;}void abnormal_termination(int termcode){   send_message(NULL,"CPF9899",'e'); /* send final exception that we have terminated*/}// ---------------------------------------------------------------------------//  XMLPlatformUtils: Timing Methods// ---------------------------------------------------------------------------unsigned long XMLPlatformUtils::getCurrentMillis(){ _MI_Time mt;         struct timeval tv;         int rc;         mattod(mt);   rc = Qp0zCvtToTimeval(&tv, mt, QP0Z_CVTTIME_TO_TIMESTAMP);   return((tv.tv_sec*1000 )+ (tv.tv_usec/1000));}// -----------------------------------------------------------------------//  Mutex methods// -----------------------------------------------------------------------#if !defined (APP_NO_THREADS)static pthread_mutex_t* gAtomicOpMutex =0 ;void XMLPlatformUtils::platformInit(){    //    // The gAtomicOpMutex mutex needs to be created	// because compareAndSwap and incrementlocation and decrementlocation	// does not have the atomic system calls for usage    // Normally, mutexes are created on first use, but there is a    // circular dependency between compareAndExchange() and    // mutex creation that must be broken.    gAtomicOpMutex = new pthread_mutex_t;	    if (pthread_mutex_init(gAtomicOpMutex, NULL)) {		delete gAtomicOpMutex;		gAtomicOpMutex = 0;        panic( PanicHandler::Panic_SystemInit );	}}class  RecursiveMutex : public XMemory{public:    pthread_mutex_t   mutex;    int               recursionCount;    pthread_t         tid;    RecursiveMutex() {		       if (pthread_mutex_init(&mutex, NULL))			    ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::Mutex_CouldNotCreate, XMLPlatformUtils::fgMemoryManager);                       recursionCount = 0;                       tid.reservedHiId = 0;		       tid.reservedLoId = 0;                       tid.reservedHandle = 0;                     }    ~RecursiveMutex() {			if (pthread_mutex_destroy(&mutex))			    ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::Mutex_CouldNotDestroy, XMLPlatformUtils::fgMemoryManager);                      }     void lock()      {			  if (pthread_equal(tid, pthread_self()))			  {			      recursionCount++;			      return;			  }			  if (pthread_mutex_lock(&mutex) != 0)			      ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::Mutex_CouldNotLock, XMLPlatformUtils::fgMemoryManager);			  tid = pthread_self();			  recursionCount = 1;		      }     void unlock()    {                          if (--recursionCount > 0)                              return;			  if (pthread_mutex_unlock(&mutex) != 0)			      ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::Mutex_CouldNotUnlock, XMLPlatformUtils::fgMemoryManager);                          tid.reservedHandle= 0;			  tid.reservedHiId = 0;			  tid.reservedLoId = 0;                       }   };void* XMLPlatformUtils::makeMutex(){    return new RecursiveMutex;}void XMLPlatformUtils::closeMutex(void* const mtxHandle){    if (mtxHandle == NULL)        return;    RecursiveMutex *rm = (RecursiveMutex *)mtxHandle;    delete rm;}void XMLPlatformUtils::lockMutex(void* const mtxHandle){    if (mtxHandle == NULL)        return;    RecursiveMutex *rm = (RecursiveMutex *)mtxHandle;    rm->lock();}void XMLPlatformUtils::unlockMutex(void* const mtxHandle){    if (mtxHandle == NULL)        return;    RecursiveMutex *rm = (RecursiveMutex *)mtxHandle;    rm->unlock();}// -----------------------------------------------------------------------//  Miscellaneous synchronization methods// -----------------------------------------------------------------------//atomic system calls in Solaris is only restricted to kernel libraries//So, to make operations thread safe we implement static mutex and lock//the atomic operations. It makes the process slow but what's the alternative!void* XMLPlatformUtils::compareAndSwap ( void**      toFill ,                    const void* const newValue ,                    const void* const toCompare){    //return ((void*)cas32( (uint32_t*)toFill,  (uint32_t)toCompare, (uint32_t)newValue) );    // the below calls are temporarily made till the above functions are part of user library    // Currently its supported only in the kernel mode    if (pthread_mutex_lock( gAtomicOpMutex))        panic(PanicHandler::Panic_SynchronizationErr);    void *retVal = *toFill;    if (*toFill == toCompare)              *toFill = (void *)newValue;    if (pthread_mutex_unlock( gAtomicOpMutex))        panic(PanicHandler::Panic_SynchronizationErr);    return retVal;}int XMLPlatformUtils::atomicIncrement(int &location){    int current = location;		    int new_loc = current+1;		    while (_CMPSWP(&current,			                   &location,	                   new_loc) == 0)		        new_loc = current+1;    int tmp = new_loc;    return tmp;}int XMLPlatformUtils::atomicDecrement(int &location){    int current = location;		    int new_loc = current-1;		    while (_CMPSWP(&current,			                   &location,	                   new_loc) == 0)		        new_loc = current-1;    int tmp = new_loc;    return tmp;}#else // #if !defined (APP_NO_THREADS)void XMLPlatformUtils::platformInit(){   // do nothing}void XMLPlatformUtils::closeMutex(void* const mtxHandle){}void XMLPlatformUtils::lockMutex(void* const mtxHandle){}void* XMLPlatformUtils::makeMutex(){        return 0;}void XMLPlatformUtils::unlockMutex(void* const mtxHandle){}void* XMLPlatformUtils::compareAndSwap ( void**      toFill,                                   const void* const newValue,                                   const void* const toCompare){    void *retVal = *toFill;    if (*toFill == toCompare)       *toFill = (void *)newValue;    return retVal;}int XMLPlatformUtils::atomicIncrement(int &location){    return ++location;}int XMLPlatformUtils::atomicDecrement(int &location){    return --location;}#endif // APP_NO_THREADS/* * convert the errno value to a cpf message identifier by converting the * error to its decimal equivalent and appending "CPE" to the front * note that the caller passes the storage for the message id as a parm */void convert_errno(char* errno_id,int errnum)	      {sprintf(errno_id,"CPE%d04" ,errnum );return;	      }FileHandle XMLPlatformUtils::openStdInHandle(MemoryManager* const manager){    return (FileHandle)fdopen(dup(0), "rb");}void XMLPlatformUtils::platformTerm(){#if !defined (APP_NO_THREADS)	pthread_mutex_destroy(gAtomicOpMutex);    delete gAtomicOpMutex;	gAtomicOpMutex = 0;#endif#if defined (XML_USE_ICONV400_TRANSCODER)	cleanupDefaultConverter();#endif}#include <xercesc/util/LogicalPath.c>XERCES_CPP_NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧洲色图婷婷| 图片区日韩欧美亚洲| 亚洲国产另类av| 黄色成人免费在线| 91国模大尺度私拍在线视频| 日韩一级大片在线观看| 亚洲男同性视频| 国产经典欧美精品| 日韩欧美自拍偷拍| 一区二区三区四区国产精品| 国产成人日日夜夜| 精品久久久影院| 老司机午夜精品| 欧美理论电影在线| 亚洲免费毛片网站| av在线这里只有精品| 国产日韩视频一区二区三区| 日本强好片久久久久久aaa| 色视频一区二区| 亚洲视频在线一区二区| 大桥未久av一区二区三区中文| 欧美一级片免费看| 亚欧色一区w666天堂| 一本到高清视频免费精品| 国产精品免费人成网站| 国产成人综合亚洲91猫咪| www久久精品| 精品写真视频在线观看| 日韩午夜激情电影| 麻豆国产欧美一区二区三区| 91麻豆精品久久久久蜜臀| 亚洲永久精品国产| 欧美天天综合网| 亚洲高清免费一级二级三级| 日本久久电影网| 亚洲线精品一区二区三区八戒| 91在线porny国产在线看| ㊣最新国产の精品bt伙计久久| www.日本不卡| 亚洲黄一区二区三区| 欧美日韩在线播放三区四区| 亚洲一区二区高清| 91.com在线观看| 秋霞电影一区二区| 精品国免费一区二区三区| 精品一区二区免费视频| 久久精品欧美一区二区三区不卡| 国产高清无密码一区二区三区| 国产亚洲一区二区三区四区| 成人国产精品免费网站| 亚洲欧美电影院| 在线亚洲+欧美+日本专区| 午夜欧美电影在线观看| 日韩欧美国产精品一区| 国产成人精品午夜视频免费| 国产精品久久久久一区| 色婷婷精品久久二区二区蜜臂av | 色综合色综合色综合色综合色综合 | 日韩经典中文字幕一区| 日韩免费高清电影| 成人黄色在线看| 一区二区三区在线免费| 日韩三级电影网址| 91一区二区三区在线观看| 五月天亚洲精品| 中文字幕av资源一区| 日本高清无吗v一区| 久久99精品国产.久久久久久 | 成人激情视频网站| 亚洲一区二区三区美女| 久久综合狠狠综合久久综合88| 91在线看国产| 久久爱www久久做| 亚洲日本在线视频观看| 精品少妇一区二区三区视频免付费| 成人性生交大合| 午夜精品久久久久久久99樱桃| 久久久电影一区二区三区| 欧美丝袜自拍制服另类| 国产精品自拍网站| 婷婷久久综合九色综合绿巨人| 国产欧美日韩精品一区| 欧美精品v国产精品v日韩精品 | 国产精品一区在线观看乱码 | 精品卡一卡二卡三卡四在线| 91在线云播放| 国产成人激情av| 奇米影视一区二区三区| 国产精品成人午夜| 日韩精品一区国产麻豆| 91国产丝袜在线播放| 成人av手机在线观看| 美女网站色91| 视频一区视频二区在线观看| 亚洲免费在线播放| 中文字幕五月欧美| 国产欧美综合在线| 欧美精品一区男女天堂| 日韩写真欧美这视频| 欧美在线999| 色综合天天综合网天天狠天天| 国产精品影视在线观看| 国内久久精品视频| 精品午夜久久福利影院| 久久精品国产精品亚洲红杏| 偷窥少妇高潮呻吟av久久免费| 尤物在线观看一区| 亚洲另类色综合网站| 国产精品久久久久影院| 国产精品国产成人国产三级| 久久精品视频免费观看| 国产亚洲精久久久久久| 国产亚洲一区二区在线观看| 久久先锋影音av| 久久精品日产第一区二区三区高清版 | 欧美一个色资源| 欧美一区二区三区免费在线看| 欧美日韩综合不卡| 欧美乱妇23p| 777奇米成人网| 欧美一区二区黄| 日韩精品在线网站| 久久久久久久性| 国产精品视频看| 国产精品色噜噜| 亚洲欧美国产77777| 亚洲国产日韩精品| 免费人成网站在线观看欧美高清| 男女男精品视频网| 国产成人亚洲精品狼色在线| 成人精品一区二区三区中文字幕 | 欧美日韩aaa| 欧美一级片免费看| 国产日韩欧美高清在线| 日本一区二区不卡视频| 综合激情成人伊人| 亚洲成va人在线观看| 日韩av电影天堂| 国产成人精品在线看| 在线观看成人免费视频| 91精品国产免费| 国产女人18毛片水真多成人如厕| 国产精品女人毛片| 天天做天天摸天天爽国产一区| 美女网站视频久久| 成人av免费在线播放| 欧美午夜精品理论片a级按摩| 日韩一区二区在线看| 中文字幕av资源一区| 性久久久久久久久久久久| 麻豆freexxxx性91精品| 波多野洁衣一区| 3d动漫精品啪啪一区二区竹菊| 久久蜜臀中文字幕| 洋洋av久久久久久久一区| 国内精品免费**视频| 色偷偷久久一区二区三区| 日韩一级大片在线| 亚洲欧美偷拍三级| 久久成人羞羞网站| 欧美性三三影院| 国产精品三级电影| 免费在线观看一区| 91久久精品一区二区三| 久久亚洲欧美国产精品乐播| 亚洲综合网站在线观看| 国产麻豆日韩欧美久久| 在线不卡的av| 亚洲精品日韩一| 国产精品888| 91精品国产一区二区三区蜜臀| 亚洲少妇中出一区| 国产真实精品久久二三区| 欧美日韩一级视频| 18成人在线视频| 国产99久久久国产精品| 欧美一级在线免费| 香蕉加勒比综合久久| 99免费精品视频| 中文在线资源观看网站视频免费不卡| 亚洲va欧美va国产va天堂影院| 成人av电影免费观看| 久久久久综合网| 精品一区二区三区的国产在线播放 | 91在线观看美女| 欧美韩国日本综合| 国产毛片精品一区| 日韩一级黄色片| 午夜久久久久久久久久一区二区| 91香蕉视频mp4| 国产欧美一区二区在线| 九九精品视频在线看| 8x福利精品第一导航| 天堂成人国产精品一区| 欧美日韩一区二区在线视频| 亚洲精品视频自拍| 色噜噜夜夜夜综合网| 亚洲久草在线视频| 91在线小视频| 亚洲在线一区二区三区|