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

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

?? piobase.cxx

?? PTypes (C++ Portable Types Library) is a simple alternative to the STL that includes multithreading
?? CXX
字號:
/* * *  C++ Portable Types Library (PTypes) *  Version 1.7.5   Released 9-Mar-2003 * *  Copyright (c) 2001, 2002, 2003 Hovik Melikyan * *  http://www.melikyan.com/ptypes/ *  http://ptypes.sourceforge.net/ * */#include <errno.h>#ifdef WIN32#  include <windows.h>#else#  include <signal.h>#  include <unistd.h>#endif#include "pstreams.h"#include "pasync.h"     // for pexchange()PTYPES_BEGIN/*Known UNIX error codes:EPERM         1          Not ownerENOENT        2          No such file or directoryESRCH         3          No such processEINTR         4          Interrupted system callEIO           5          I/O errorENXIO         6          No such device or addressE2BIG         7          Argument list too longENOEXEC       8          Exec format errorEBADF         9          Bad file numberECHILD       10          No spawned processesEAGAIN       11          No more processes; not enough memory; maximum nesting level reachedENOMEM       12          Not enough memoryEACCES       13          Permission deniedEFAULT       14          Bad addressENOTBLK      15          Block device requiredEBUSY        16          Mount device busyEEXIST       17          File existsEXDEV        18          Cross-device linkENODEV       19          No such deviceENOTDIR      20          Not a directoryEISDIR       21          Is a directoryEINVAL       22          Invalid argumentENFILE       23          File table overflowEMFILE       24          Too many open filesENOTTY       25          Not a teletypeETXTBSY      26          Text file busyEFBIG        27          File too largeENOSPC       28          No space left on deviceESPIPE       29          Illegal seekEROFS        30          Read-only file systemEMLINK       31          Too many linksEPIPE        32          Broken pipeEDOM         33          Math argumentERANGE       34          Result too largeEUCLEAN      35          File system needs cleaningEDEADLK      36          Resource deadlock would occurEDEADLOCK    36          Resource deadlock would occur*/#ifndef WIN32static class _io_init{public:    _io_init();} _init;_io_init::_io_init(){    // We don't like broken pipes. PTypes will throw an exception instead.    signal(SIGPIPE, SIG_IGN);}#endifint unixerrno() {#ifdef WIN32    switch(GetLastError())     {    case ERROR_FILE_NOT_FOUND:    case ERROR_PATH_NOT_FOUND:      return ENOENT;    case ERROR_TOO_MANY_OPEN_FILES: return EMFILE;    case ERROR_ACCESS_DENIED:    case ERROR_SHARING_VIOLATION:   return EACCES;    case ERROR_INVALID_HANDLE:      return EBADF;    case ERROR_NOT_ENOUGH_MEMORY:    case ERROR_OUTOFMEMORY:         return ENOMEM;    case ERROR_INVALID_DRIVE:       return ENODEV;    case ERROR_WRITE_PROTECT:       return EROFS;    case ERROR_FILE_EXISTS:         return EEXIST;    case ERROR_BROKEN_PIPE:         return EPIPE;    case ERROR_DISK_FULL:           return ENOSPC;    case ERROR_SEEK_ON_DEVICE:      return ESPIPE;    default: return EIO;    }#else    return errno;#endif}//// This function gives error messages for most frequently raising // IO errors. If the function returns NULL a generic message// can be given, e.g. "I/O error". See also iobase::get_errormsg()//const char* unixerrmsg(int code){    switch(code)     {    case EBADF:  return "Invalid file descriptor";    case ESPIPE: return "Can not seek on this device";    case ENOENT: return "No such file or directory";    case EMFILE: return "Too many open files";    case EACCES: return "Access denied";    case ENOMEM: return "Not enough memory";    case ENODEV: return "No such device";    case EROFS:  return "Read-only file system";    case EEXIST: return "File already exists";    case ENOSPC: return "Disk full";    case EPIPE:  return "Broken pipe";    default: return nil;    }}estream::estream(iobase* ierrstm, int icode, const char* imsg)    : exceptobj(imsg), code(icode), errstm(ierrstm) {}estream::estream(iobase* ierrstm, int icode, const string& imsg)    : exceptobj(imsg), code(icode), errstm(ierrstm) {}estream::~estream() {}int defbufsize = 8192;int stmbalance = 0;iobase::iobase(int ibufsize)    : component(), active(false), cancelled(false), eof(true),       handle(invhandle), abspos(0), bufsize(0), bufdata(nil), bufpos(0), bufend(0),      stmerrno(0), deferrormsg(), status(IO_CREATED), onstatus(nil) {    if (ibufsize < 0)        bufsize = defbufsize;    else        bufsize = ibufsize;}iobase::~iobase() {}void iobase::bufalloc() {    if (bufdata != nil)	fatal(CRIT_FIRST + 13, "(ptypes internal) invalid buffer allocation");    bufdata = (char*)memalloc(bufsize);}void iobase::buffree() {    bufclear();    memfree(bufdata);    bufdata = 0;}void iobase::chstat(int newstat) {    status = newstat;    if (onstatus != nil)        (*onstatus)(this, newstat);}void iobase::error(int code, const char* defmsg) {    eof = true;    stmerrno = code;    deferrormsg = defmsg;    throw new estream(this, code, get_errormsg());}void iobase::errstminactive() {    error(EIO, "Stream inactive");}void iobase::errbufrequired(){    fatal(CRIT_FIRST + 11, "Internal: buffer required");}void iobase::open() {    cancel();    chstat(IO_OPENING);    abspos = 0;    cancelled = false;    eof = false;    stmerrno = 0;    clear(deferrormsg);    active = true;    stmbalance++;    bufalloc();    doopen();    chstat(IO_OPENED);}void iobase::close() {    if (!active)        return;    stmbalance--;    try     {        if (bufsize > 0 && !cancelled)            flush();        doclose();    }    catch(estream* e)     {        delete e;    }    buffree();    active = false;    eof = true;    chstat(IO_CLOSED);}void iobase::cancel() {    cancelled = true;    close();}int iobase::seek(int newpos, ioseekmode mode) {    if (!active)        errstminactive();    flush();    int ret = doseek(newpos, mode);    if (ret < 0)        error(ESPIPE, "Seek failed");    bufclear();    eof = false;    abspos = ret;    return ret;}void iobase::flush() {}int iobase::doseek(int newpos, ioseekmode mode){    if (handle == invhandle)    {        error(ESPIPE, "Can't seek on this device");        return -1;    }#ifdef WIN32    static int wmode[3] = {FILE_BEGIN, FILE_CURRENT, FILE_END};    return SetFilePointer(HANDLE(handle), newpos, nil, wmode[mode]);#else    static int umode[3] = {SEEK_SET, SEEK_CUR, SEEK_END};    return lseek(handle, newpos, umode[mode]);#endif}void iobase::doclose(){#ifdef WIN32    CloseHandle(HANDLE(pexchange(&handle, invhandle)));#else    ::close(pexchange(&handle, invhandle));#endif}void iobase::set_active(bool newval) {    if (newval != active)        if (newval)            open();        else            close();}void iobase::set_bufsize(int newval) {    if (active)        fatal(CRIT_FIRST + 12, "Cannot change buffer size while stream is active");    if (newval < 0)        bufsize = defbufsize;    else        bufsize = newval;}string iobase::get_errstmname() {    return get_streamname();}const char* iobase::uerrmsg(int code){    return unixerrmsg(code);}int iobase::uerrno(){    return unixerrno();}string iobase::get_errormsg() {    string s = uerrmsg(stmerrno);    if (isempty(s))        s = deferrormsg;    if (pos('[', s) >= 0 && *(pconst(s) + length(s) - 1) == ']')        return s;    string e = get_errstmname();    if (isempty(e))        return s;    return s + " [" + e + ']';}PTYPES_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩不卡免费视频| 在线免费观看日本一区| 99视频一区二区| 精品国产免费人成在线观看| ...av二区三区久久精品| 麻豆成人久久精品二区三区小说| 在线免费不卡视频| 久久精品男人天堂av| 日本sm残虐另类| 欧美日韩精品一二三区| 亚洲三级电影全部在线观看高清| 久久99九九99精品| 欧美老肥妇做.爰bbww视频| 亚洲精品视频一区| 丰满少妇久久久久久久| 亚洲精品一区二区三区福利| 美脚の诱脚舐め脚责91| 欧美精品xxxxbbbb| 丝袜美腿高跟呻吟高潮一区| 色国产综合视频| 亚洲欧美aⅴ...| 成人av免费在线观看| 国产精品视频一二| 懂色av一区二区三区免费看| 国产午夜亚洲精品羞羞网站| 狠狠色2019综合网| 精品国产伦一区二区三区观看体验| 午夜精品久久久久| 欧美一区在线视频| 久久99国产精品久久| 日韩视频在线永久播放| 奇米色一区二区| 日韩欧美高清dvd碟片| 美女www一区二区| wwwwww.欧美系列| 成人毛片在线观看| 亚洲欧美在线另类| 欧美色男人天堂| 三级久久三级久久久| 日韩午夜激情免费电影| 久久国产精品区| 2023国产精华国产精品| 成人免费高清在线观看| 亚洲精品成人a在线观看| 欧美日韩一区二区在线观看 | 3atv在线一区二区三区| 日韩av一区二| 国产欧美视频一区二区| 成人白浆超碰人人人人| 亚洲六月丁香色婷婷综合久久 | 天天亚洲美女在线视频| 欧美一区二区三区电影| 国产在线播精品第三| 国产精品免费aⅴ片在线观看| 色琪琪一区二区三区亚洲区| 午夜成人免费视频| 久久久精品国产免大香伊| 97国产一区二区| 美腿丝袜一区二区三区| 国产精品欧美一级免费| 欧美日韩国产首页| 国产一区 二区 三区一级| 亚洲人一二三区| 欧美一级久久久久久久大片| 成人免费不卡视频| 日韩不卡手机在线v区| 国产精品久久久久久久久免费桃花 | 色综合天天综合网国产成人综合天 | 国产一区二区三区不卡在线观看 | 亚洲国产精品嫩草影院| 久久精品视频在线看| 欧美羞羞免费网站| 国产不卡高清在线观看视频| 亚洲图片自拍偷拍| 欧美激情在线看| 欧美一区二区视频在线观看| 成人av免费网站| 久久黄色级2电影| 亚洲成人激情自拍| 成人免费一区二区三区在线观看| 日韩视频中午一区| 欧美中文字幕一区二区三区亚洲| 国产一本一道久久香蕉| 亚洲国产你懂的| 亚洲日本丝袜连裤袜办公室| 久久久久国色av免费看影院| 欧美日本在线看| 色噜噜狠狠成人中文综合 | 国产精品午夜在线| 日韩欧美一级在线播放| 欧美午夜一区二区三区免费大片| 国产盗摄精品一区二区三区在线| 日本不卡一区二区三区| 一区二区三区中文字幕精品精品| 国产三级三级三级精品8ⅰ区| 日韩欧美亚洲一区二区| 欧美日韩五月天| 欧美性色黄大片手机版| 日本道色综合久久| 91影院在线免费观看| 成人爽a毛片一区二区免费| 精品亚洲成a人在线观看| 日韩av成人高清| 视频在线在亚洲| 日韩精品一区第一页| 亚洲成人综合网站| 亚洲国产一区二区视频| 亚洲国产精品久久一线不卡| 一区二区三区在线看| 亚洲欧美日韩中文播放| 亚洲猫色日本管| 一区二区三区在线免费观看| 一区二区三区国产| 亚洲午夜电影在线观看| 亚洲一卡二卡三卡四卡| 亚洲国产精品久久久久秋霞影院 | 91精品国产综合久久婷婷香蕉 | 国产91高潮流白浆在线麻豆| 国产成人精品免费看| 国产成人免费在线视频| 丁香天五香天堂综合| 972aa.com艺术欧美| 色综合天天综合网天天狠天天 | 在线视频你懂得一区| 欧美视频你懂的| 日韩三级中文字幕| 精品日韩一区二区三区免费视频| 日韩欧美电影一二三| 久久久久久夜精品精品免费| 日本一区免费视频| 一区二区免费看| 日本午夜一区二区| 国产一区二区三区香蕉| av成人免费在线| 欧美色综合天天久久综合精品| 欧美日韩一区二区三区在线| 欧美一区二区视频在线观看2020| 欧美草草影院在线视频| 欧美韩国日本一区| 亚洲日韩欧美一区二区在线| 日韩黄色在线观看| 国产成人午夜精品5599| 欧美午夜精品久久久久久孕妇| 欧美一区中文字幕| 亚洲欧洲精品天堂一级| 日韩—二三区免费观看av| 国产乱子轮精品视频| 日本精品一级二级| 精品黑人一区二区三区久久| 亚洲特黄一级片| 免费人成在线不卡| 99久久99精品久久久久久| 91精品国产全国免费观看 | 精品蜜桃在线看| 国产精品二区一区二区aⅴ污介绍| 亚洲不卡一区二区三区| 国产成人精品一区二| 欧美日韩高清不卡| 国产精品卡一卡二| 精品在线你懂的| 欧美午夜精品一区二区三区| 欧美国产日韩a欧美在线观看| 亚洲超碰97人人做人人爱| 成人av在线播放网址| 91精品国产综合久久福利软件| 亚洲欧美在线高清| 国产一区二区三区黄视频| 欧美精品高清视频| 亚洲三级免费观看| 成人精品在线视频观看| 日韩欧美成人激情| 午夜精品久久久久久| 色婷婷激情综合| 1区2区3区国产精品| 国产精品综合一区二区三区| 欧美一级欧美三级| 性欧美疯狂xxxxbbbb| 色欧美88888久久久久久影院| 国产亚洲一区二区三区在线观看| 日本视频在线一区| 欧美日韩一级二级三级| 亚洲黄色免费网站| av激情亚洲男人天堂| 国产精品久久一卡二卡| 国产成人av自拍| 久久久蜜臀国产一区二区| 精品写真视频在线观看| 日韩欧美国产一区二区三区| 日韩制服丝袜av| 69av一区二区三区| 天堂午夜影视日韩欧美一区二区| 欧美影院一区二区三区| 一区二区三区欧美日韩| 欧美最猛黑人xxxxx猛交| 一区二区免费视频| 欧美三级电影网站| 亚洲自拍偷拍av| 欧美日韩精品免费观看视频| 日韩在线卡一卡二| 精品日韩一区二区|